14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AI エージェントに API キーを渡しても大丈夫か? 対話文・.env・環境変数・MCP・OAuth — 6 つの渡し方を Claude Code・Codex・Gemini CLI・Copilot・Cursor で調べてみた

14
Posted at

AI エージェントに鍵を渡す 6 つの方法を並べた図。1 対話文に貼る: 鍵は AI の会社に送られ、会話の記録として手元にも残る(勧めない)。2 ファイル(.env など)に書いて読ませる: AI が読んだ時点で中身は会話に入る。除外設定で止まるのは AI の「読む」機能だけ(勧めない)。3 環境変数にしておく(.zshrc など): AI には見えないが、AI が動かすコマンドは初めから受け継ぐ(絞る設定が要る)。4 MCP の設定に書く: 設定ファイルに書くとファイルごと漏れる。環境変数で参照する(直接は書かない)。5 OAuth で許可する: 鍵の文字列を AI に渡さない。期限と範囲を決めて許可する(いちばん安全)。6 クラウドの鍵置き場に登録する: Claude Code と Codex のクラウドでは、AI は本物の鍵を持たない(道具による)

Claude Code や Codex などの AI エージェントに、API キーを使う作業を頼みたいことがあります。そのとき、利用者は鍵をどう渡せばよいのでしょうか。対話文に貼る、.env に書いて読ませる、.zshrc の環境変数にしておく……。渡し方によって、鍵に起きることは違います。

冒頭の図のとおり、利用者の操作で分けると、鍵の渡し方は 6 つです。鍵の文字列が AI の目に触れる所にあるほど、鍵が漏れる道は増えます。いちばん安全なのは、鍵の文字列そのものを AI に渡さない OAuth です。

この記事では、Claude Code・Codex・Gemini CLI・GitHub Copilot・Cursor の 5 つの道具の公式文書から、渡し方ごとに何が起きるか、どう設定すれば鍵を守れるかを答えます。引用した原文は、調査ページ AI エージェントに鍵を渡しても大丈夫か — 6 つの渡し方 に 1 行ずつ載せています。


1. まず、言葉をそろえる

言葉 意味
鍵 システムが「使ってよい相手か」を確かめるための、秘密の文字列。パスワード、API キー、アクセストークンなどがある。この記事では、これらをまとめて「鍵」と呼ぶ
API キー 鍵の一種。プログラムが別のシステムの API を呼ぶときに、自分が誰かを示すために送る文字列。API キーを持っている人は、持ち主と同じ操作ができる
AI エージェント 指示を受けて、自分でファイルを読み、コマンドを動かして作業を進める AI
シェル・コマンド パソコンに文字で命令する画面(シェル)と、そこに打つ命令(コマンド)
.env API キーやパスワードなど、秘密の設定を書いておくファイル
環境変数 プログラムを動かすときに外から渡す設定の値。利用者は .zshrc などに書いておく
MCP AI に外のサービスや道具をつなぐための決まり
OAuth 固定の鍵の代わりに、期限と範囲を決めて許可を出す仕組み

2. 対話文に貼ると、どうなるか

対話文に貼った鍵がどこへ行くかを示した図。AI の会社のサーバーに送られる(Cursor は Privacy Mode を切るとプロンプトを保存し、学習に使うことがある)。手元の会話の記録に残る(Claude Code や Codex は会話を手元に保存し、Claude Code は暗号化しない文字のまま)。GitHub のアカウントに同期される(Copilot CLI の初期設定)

対話文に貼った鍵は、AI の会社に送られ、会話の記録として手元にも残ります。Copilot CLI は、初期設定で会話を GitHub のアカウントに同期します。Google は、無料版の Gemini API に機微な情報を送らないよう、利用規約に書いています。利用者は、鍵を対話文に貼らないのがいちばんです。

📎 各道具の原文は AI エージェントに鍵を渡しても大丈夫か の「対話文に貼る」 にあります。

3. .env に書いて読ませると、どうなるか

設定で .env の読み取りを拒否したとき、どこまで止まるかを、Claude Code の画面のイメージで 3 つの場合に分けて示した図。①AI の道具の「ファイルを読む」機能で開く(Read(.env))は止まる。②コマンドでファイル名を名指しして読む(Bash(cat .env))は道具による。Claude Code は止めるが、Cursor はエージェントの端末では止められないと書いている。③ファイル名を出さずに読む(grep -r)やスクリプトが自分で開く(python)は止まらず、.env の中身が読めてしまう。止めるにはサンドボックスを使う

AI が .env を読めば、.env の中身は会話に入り、鍵を対話文に貼ったのと同じことになります。Gemini CLI は、.env を自動で読み込みます。

AI に読ませないための「除外設定」は、AI の道具に組み込まれた「ファイルを読む」機能には効きます。Claude Code は、cat のようにファイル名を名指しするコマンドも止めます。一方、除外設定は、ファイル名を出さずに読むコマンドや、スクリプトが自分でファイルを開く場合を止めません。

📎 除外設定の書き方と効かないところは AI エージェントに鍵を渡しても大丈夫か の「調査の詳細」 に、道具ごとに並べています。

4. 環境変数にしておくと、どうなるか

環境変数にしておいた鍵の流れを 4 段で示した図。1 .zshrc などに書いた環境変数は、ターミナルを開くたびに読み込まれ、そこから起動したプログラムに渡る。2 AI エージェントは値を見ない。3 AI が動かすコマンドは初めから受け継ぐ。Codex は初期設定で全部渡し、渡す変数を絞る設定は Codex・Copilot CLI・Claude Code にある。4 読んだ文章に仕込まれた指示があると、環境変数がまるごと外へ送られることもある(Gemini CLI の実証)

利用者が .zshrc などで export した鍵は、AI が表示させない限り、会話には入りません。ただし、AI が動かすコマンドは、初めからその環境変数を受け継ぎます。Codex は、初期設定で環境変数をすべてコマンドに渡します。また、AI が読んだ文章に仕込まれた指示によって、環境変数がまるごと外に送られた実証もあります(Gemini CLI)。

コマンドに渡す変数を絞る設定は、Codex・Copilot CLI・Claude Code にあります。どの道具でも、利用者が自分でその設定を有効にする必要があります。

📎 原文は AI エージェントに鍵を渡しても大丈夫か の「環境変数にしておく」 にあります。

5. MCP の設定に書くときは

公開されている MCP サーバーの鍵の受け取り方の棒グラフ。期限の長い固定の鍵(API キーや個人用アクセストークン)が 53%、OAuth(期限と範囲を決めた許可)は 8.5%(Astrix Security)

MCP の設定ファイルに鍵を直接書くと、設定ファイルが漏れたときに鍵も一緒に漏れます。各社とも、鍵を直接書かず、環境変数で参照するよう勧めています。Astrix Security の調べでは、公開されている MCP サーバーの 53% が期限の長い固定の鍵を使い、OAuth を使うサーバーは 8.5% でした。

MCP サーバーを足す前に確かめることは、MCP サーバーを追加する前に、何を確かめるか にまとめています。

📎 原文は AI エージェントに鍵を渡しても大丈夫か の「MCP の設定に書く」 にあります。

6. いちばん安全なのは、OAuth で許可すること

AI エージェントに鍵の文字列を渡す場合と、OAuth で許可する場合を上下に対比した図。鍵の文字列を渡すと、鍵が会話に入り記録にも残り、漏れた鍵は取り消すまで使える。OAuth で許可すると、期限と範囲を決めて許可でき、鍵の文字列は AI に渡らないので、許可が漏れても被害は小さい

OAuth で許可する場合、利用者は鍵の文字列を AI に渡しません。利用者は期限と範囲を決めて許可を出すので、許可が漏れたときの被害も小さくなります。5 つの道具とも、外部の MCP サーバーに OAuth でつなげます(GitHub Copilot のクラウドのエージェントは未対応)。

クラウドで動かすエージェントには、鍵をクラウドの鍵置き場に登録する方法もあります。Claude Code と Codex のクラウドでは、AI は本物の鍵を持ちません。

📎 原文は AI エージェントに鍵を渡しても大丈夫か の「OAuth で許可する」 にあります。

7. 道具ごとの、鍵を守る設定

道具ごとの、鍵を守る設定を並べた図。Claude Code: 読ませない設定は Read(./.env) の拒否の規則で cat などのコマンドも止める、環境変数は初めは渡し外す設定は自分で有効にする、鍵を持つ MCP サーバーは自分だけの範囲に置ける、OAuth に対応。Codex: .env の読み取りを拒む規則を書ける、環境変数は初めは全部渡し shell_environment_policy で絞る、MCP の鍵は環境変数の名前で指定できる、codex mcp login で OAuth に対応。Gemini CLI: .geminiignore を作るが .env は自動で読み込む、伏せる設定はあるが初期値の説明が食い違う、鍵を直接書かないよう勧めている、OAuth に対応。GitHub Copilot: Content exclusion は CLI とエージェントモードが対象外、--secret-env-vars で伏せる、$VAR で参照できる、OAuth は CLI が対応しクラウドのエージェントは未対応。Cursor: .cursorignore で .env は初めから除外だが端末は対象外、環境変数を絞る設定は見つからない、環境変数を使うよう勧めている、OAuth に対応

読ませない設定・環境変数を絞る設定・MCP の鍵の書き方・OAuth の 4 つで並べると、どの道具にも「初めは何もしない」所があります。使っている道具の行だけでも、一度確かめてください。各道具の学習利用や料金などは、Claude Code・Codex・GitHub Copilot・Cursor の製品のページにまとめています。

📎 各行の原文は AI エージェントに鍵を渡しても大丈夫か の「調査の詳細」 にあります。

8. 渡すなら、この順で

AI エージェントに鍵を渡すときの 5 つの手順を並べた図。①鍵を会話に入れない、②権限を絞った鍵を作る、③期限のある許可(OAuth)を選べるならそちらを使う、④除外設定とサンドボックスで読める範囲を絞る(AI が動かしたコマンドに開かせるときにも止めるには、サンドボックスを使う)、⑤漏れたらすぐ取り消す

利用者が最初にすることは、鍵を対話文に貼らないことです。次に、権限を絞った鍵を作ります。除外設定は守りの一つにすぎないので、除外設定だけに頼らないようにします。

鍵の置き場所の考え方は シークレット管理とは、鍵の期限と取り消し方は API トークンはいつ切れ、どう取り消すか にまとめています。鍵がどこから漏れるかは API キーはどこから漏れるのか、漏れた鍵を誰が止めるのかは シークレットスキャンとは にまとめています。

一次出典

出典 内容
Claude Code Docs: Data usage 会話が送られる先と、手元の記録
Claude Code Docs: Configure permissions 読み取りを拒む規則と、効かないところ
Claude Code Docs: Cloud environments クラウドでは AI が本物の鍵を持たない
OpenAI Codex Docs: Advanced configuration コマンドに渡す環境変数の設定
OpenAI Codex Docs: MCP MCP の鍵と OAuth
Gemini CLI Docs: Configuration .env の自動の読み込み
Gemini CLI Docs: MCP servers 鍵を直接書かない・OAuth
Gemini API 追加利用規約 無料版に機微な情報を送らない
GitHub Docs: Copilot のセッションデータ 会話を GitHub のアカウントに同期
GitHub Docs: Copilot CLI command reference 環境変数を伏せる・OAuth
Cursor Docs: 無視ファイル .cursorignore と、端末では止まらないこと
Cursor Docs: MCP 鍵は環境変数で・OAuth
Astrix Security: State of MCP Server Security 2025 MCP サーバーの鍵の受け取り方
Tracebit: Gemini CLI の実証 環境変数が外に送られた

引用した原文と出典は、すべて調査ページで 1 行ずつ公開しています。確かめたい方は AI エージェントに鍵を渡しても大丈夫か — 6 つの渡し方 をご覧ください。

読者アンケート実施中
このテーマをもっと深掘りしてほしい方は、記事に「いいね」をお願いします。「いいね」の多いテーマから順に追加調査し、結果は新着記事でお知らせします(フォローしていただくと通知が届きます)。

【転載OK】本記事の転載について

本記事の文章・図表は、すべて転載 OK です。図は加工しないままお使いください。転載の際は、出典として、この記事の完全版 『AI エージェントに鍵を渡しても大丈夫か』(renkeimap.jp)へのリンクをお願いします。事前の連絡は不要です。

※ 筆者は日立系ITベンダー・介護ソフトベンダー・大学病院IT部門を経て独立し、現在は中小企業のIT・DX支援をしながら、業務システムの「つながり」を一次資料で調べています。 文中の「編集部」は、筆者が所属する IT連携マップ編集部 のことです。誤りを見つけられましたら 訂正窓口(無料・アカウント不要)へお願いします。訂正履歴も公開しています。

14
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?