AIにプログラムを書かせるツール「Claude Code」に.envを読ませない設定をしても、AIが.envの中身を読めなくなるとは限りません。
この記事の目次(4節)
.envは、APIキー(外部のサービスを使うための合言葉)を書いておくファイルです。
2026年10月6日にダミーの値で試すと、ファイル名を指定したcat ./.envは拒否されました。名前を書かないgrep -rと、Pythonのスクリプトで開くコマンドは拒否されませんでした。
筆者は、外注先に確かめるのは「読ませない設定をしたか」ではなく、「APIキーが作業環境に置いてあるか」だと考えます。作業環境とは、AIを使う外注先のパソコンやクラウドです。
置いてある限り、設定のすき間から読まれる余地が残るからです。
拒否ルールの効く範囲
Claude Codeの拒否ルール
設定ファイルにRead(./.env)のような拒否(deny)ルールを書くと、Claude Codeはそのファイルを読む操作を止めます。
ただし、公式文書は、止められる範囲に限りがあると書いています。1
ファイルのあるフォルダ(ディレクトリ)でgrep -r pattern .のようにファイル名を書かずに読むコマンドには、拒否ルールが効きません。PythonやNodeのスクリプトが自分でファイルを開く場合も同じです。
文書は、すべてのプログラムからのアクセスをOSの側で止めるには、サンドボックスを有効にするとしています。
サンドボックスは、AIが実行するコマンドの届く範囲をOSの側で囲う仕組みです。対象はシェルのコマンドだけで、Claudeのファイル操作は対象外です。2
環境変数には、拒否ルールが及びません
環境変数は、コマンドが起動したときに受け取る、パソコン側の値です。APIキーを入れることが多いものです。
サンドボックスの文書は、環境変数は引き継がれ、シークレットも含まれると説明しています。2
守りたい変数は、名前を指定して除外する設定が必要です。サンドボックスの設定sandbox.credentialsには標準の一覧が無く、書いた名前だけが対象です。2
Codexには環境変数を絞る設定がある
OpenAIのCodexは、コマンドに渡す環境変数をshell_environment_policyで決めます。
その中のignore_default_excludesは、既定のtrueだと、名前にKEY・SECRET・TOKENを含む変数を、名前を理由にしては除外しません。3
falseにすると、名前による自動の除外が働きます。
5つのコマンドで試した結果
使ったのはClaude Code 2.1.291で、クラウド上のLinux環境で実行しました。
拒否ルールはRead(./.env)とRead(./.env.*)の2つです。.envにはDUMMY_API_KEYという名前の偽の値を1行だけ書きました。
AIに「このコマンドをそのまま実行して」と頼み、結果を見ました。どれも1回ずつです。
環境変数は、ファイルの拒否ルールの対象ではありません。そのため、ルールを置かず、起動前にDUMMY_API_TOKENを設定して確かめました。
catでファイル名を指定した2つは、拒否されました。grep -rは.envの1行を表示し、Pythonで開くスクリプトは中身を表示しました。環境変数の値も、そのまま表示されました。
AIが自分でこれらのコマンドを選ぶかどうかは、確かめていません。拒否ルールが働くかどうかだけを確かめました。
Claude Codeで試せなかったものは2つです。環境変数を消す設定(CLAUDE_CODE_SUBPROCESS_ENV_SCRUB)を有効にすると、この環境ではClaude Code自体が起動しませんでした。
原因は確かめていません。サンドボックスは、必要なパッケージをインストールできなかったため、動かしていません。2つとも文書を読んだだけです。Codexも動かせていません。
拒否ルールの役割
拒否ルールは、うっかり.envを開く事故を防ぐ手段としては役に立つと、筆者は考えます。
AIが読み込んだ文章に仕込まれた悪意のある指示に従ってしまった場合の防御としては、名前を書かない読み方が拒否されないので不十分だと、筆者は考えます。
より確実に防ぎたいなら、サンドボックスか、APIキーを作業環境に置かない設計が要ります。ただしサンドボックスで環境変数を守るには、名前の指定が別に要ります。
Qiitaの記事は、渡し方を6通りに分けて5つのツールを調べています。4
点検の項目は、IPAが挙げる5つの対策の記事も参考になります。
個人情報をAIに送る前に伏せる方法は、Presidioの記事にまとめました。
外注先に確認すること
外注先との打ち合わせでは、まず使うAIツールがClaude CodeなのかCodexなのかを聞きます。そのうえで、次の4つを確認しておくとよいでしょう。
クラウド上で動かす場合の確認は、Claude Codeのクラウドセッションの記事にもまとめました。
- 開発に使うAPIキーは、権限と期限を絞った開発用ですか。本番用と分けていますか。
- AIツールを動かすパソコンやクラウドの環境変数に、本番用のAPIキーは入っていませんか。
- 拒否ルールに加えて、サンドボックスを有効にしていますか。
- APIキーが漏れたとき、誰がどこで取り消しますか。
次の打ち合わせでは、まず1つ目を確認してみてください。APIキーの権限と期限を絞っておけば、万一読まれても被害を小さくできると、筆者は考えるからです。
出典
- Claude Code「Configure permissions」(公式文書)(参照 2026-10-06)
- Claude Code「Sandboxing」(公式文書)(参照 2026-10-06)
- Codex「Configuration reference」(公式文書)(参照 2026-10-06)
- AI エージェントに API キーを渡しても大丈夫か? 対話文・.env・環境変数・MCP・OAuth — 6 つの渡し方を Claude Code・Codex ほかで検証(Qiita、2026年10月5日)(参照 2026-10-06)

