結論
- 前回の点検リスト13項目のあとに実機や公式ドキュメントで確かめた6本を、1項目=確認コマンド1つの形で足しました(項目14〜19)。
- 新しく足したのは「AIが読む指示ファイル」「エージェントに渡る環境変数」「.gitignore の穴」「フォルダごと渡すときの圧縮」です。
- 2026-11-03 にまとめ直したとき、項目18と19を組み合わせて試すと、追跡中の
.envはgit archive HEADにも入ることを確かめました(後述)。 - このリストは「どこを見るか」を思い出すためのものです。何も出なかったからといって安全の保証にはなりません。
この記事は「AIエージェントと秘密情報」の検証シリーズです。新しい検証は X(@supportapp3_lab)でもお知らせしています。
使い方
自分の環境に関係する項目だけ実行してください。コマンドはどれも読み取りだけです。値が画面に出るものには注意書きを付けています。
npx github:supportapp3-lab/ai-secret-check ... は、筆者が作った点検用CLIです。リポジトリ: https://github.com/supportapp3-lab/ai-secret-check (Node.js 20以上、MIT)。値は表示せず、点検自体は外部通信をしません(初回の npx 取得だけ通信します)。
E. AIが読む指示ファイル
14. 起動フォルダより上に、知らない CLAUDE.md や AGENTS.md がないか
npx github:supportapp3-lab/ai-secret-check scan-instructions
- Claude Code は起動フォルダと上の全階層の
CLAUDE.md/CLAUDE.local.mdを読みます。Codex は Git のルートから起動フォルダまでのAGENTS.mdを読みます(どちらも公式ドキュメント)。 - 場所とサイズだけを出し、中身は読みません。ホームの
~/.claude/・~/.codex/は対象外です。起動後は Claude Code の/contextでも確かめられます。 - 詳しく: Claude Code は起動フォルダの上の CLAUDE.md も全部読む
F. エージェントに渡る環境変数
15. Codex の実行コマンドに、どの環境変数が渡っているか
codex sandbox -- env | cut -d= -f1 | sort
-
cutで名前だけにしています(envのままだと値も画面に出ます)。 - 設定なしでは、ダミーの
OPENAI_API_KEYなどがそのまま渡りました(codex 0.165.0、2026-10-29)。shell_environment_policyのignore_default_excludes = falseで KEY / SECRET / TOKEN を含む名前は外れましたが、DB_PASSWORDやDATABASE_URLはfiltersで別に外す必要がありました。 - 詳しく: Codex は既定で OPENAI_API_KEY などの環境変数を実行コマンドにそのまま渡す
16. 起動中の開発サーバーの環境変数が、同じユーザーから読めないか
tr '\0' '\n' < /proc/<PID>/environ | cut -d= -f1
- Linux では、同じユーザーのプロセスの起動時の環境変数が
/proc/<PID>/environから読めました。.envを消しても残りました。別ユーザーからは読めませんでした。 - Codex(0.165.0)の
codex sandboxでは、:read-only・:workspaceから外のプロセスは見えず、:danger-full-accessでは読めました。 - 詳しく: 起動中の開発サーバーの環境変数は /proc/PID/environ から読める
G. .gitignore の穴
17. 追跡中なのに .gitignore に当たっているファイルがないか
git ls-files -ci --exclude-standard
-
.gitignoreは、すでに追跡しているファイルには効きません(git 公式 gitignore)。ここに.envが出たら、git add -Aのたびに変更がコミットされます。 - 追跡だけやめるなら
git rm --cached .env。過去のコミットに残った値は消えないので、前回の項目7もあわせて見ます。 - 詳しく: .gitignore に .env を書いても、追跡中の .env はコミットされ続ける
18. .gitignore の書き方で、無視されずに残っている env 系ファイルがないか
git ls-files --others --exclude-standard | grep -i env
-
.gitignoreが.envの1行だけだと、.env.local・.env.bak・prod.envなどは無視されませんでした(10個中8個)。 -
.env*+*.env+!.env.exampleの組み合わせでも、env.bakは残りました。 - CLI なら
npx github:supportapp3-lab/ai-secret-check scanで、.env.local・prod.envのような名前も出ます(2026-11-03、ダミーファイルで確認)。 - 詳しく: .gitignore の .env 1行では .env.local も .env.bak も無視されない
H. フォルダごと渡すとき
19. 渡す zip や tar に、.env や .git が入っていないか
tar tzf project.tgz | grep -E '(^|/)(\.env|\.git/)'
- フォルダを
tar czfや Python のshutil.make_archiveで固めると、.gitignoreに書いた.envも鍵も.gitも入りました。.gitがあると、昔消した.envもgit showで読めました。 -
git archive HEADなら、未追跡のファイルと.gitは入りませんでした。 - 詳しく: プロジェクトを tar や zip で固めてAIに渡すと .env も .git の履歴も入る
項目17と19を組み合わせると:追跡中の .env は git archive にも入る
git archive が入れるのは「追跡しているファイル」なので、項目17に当たる .env があると、git archive でも入るはずです。ダミー値の使い捨てリポジトリで確かめました(git 2.47.3、2026-11-03)。
git init -q demo && cd demo
printf 'APP=1\n' > app.js
printf 'API_KEY=dummy-1\n' > .env
git add -A && git commit -qm 1 # .gitignore より先に .env をコミット
printf '.env\n' > .gitignore
git add .gitignore && git commit -qm 2
git ls-files -ci --exclude-standard
git archive HEAD | tar -t
出力:
.env
.env
.gitignore
app.js
1行目は git ls-files -ci の結果で、.env が「追跡中なのに無視ルールに当たる」と出ています。続く3行が git archive HEAD の中身で、.env が入っていました。git archive を使う前に、項目17のコマンドで何も出ないことを確かめるのが確実です。
見つかったときの順番
前回と同じく、値が読める状態だったと分かったら、最初に鍵を再発行します。ファイルや履歴を消しても、すでに読まれた鍵は無効になりません(GitHub公式の秘密情報削除の手順でも、最初にやることとして書かれています)。そのあとで設定を直し、同じコマンドでもう一度確かめます。
まとめ
- 指示ファイルは、起動フォルダの上まで見る(項目14)。
- 環境変数は、ファイルを読ませない設定とは別に、渡っているかを見る(項目15・16)。
-
.gitignoreは、追跡中のファイルには効かず、1行の.envでは派生ファイルを拾わない(項目17・18)。 - 渡すときはフォルダを丸ごと固めず、
git archiveの前に項目17で追跡中の.envがないことを確かめる(項目19)。
試してみる
項目14と18は、読み取り専用の CLI ai-secret-check でまとめて見られます。
npx github:supportapp3-lab/ai-secret-check scan
npx github:supportapp3-lab/ai-secret-check scan-instructions
リポジトリ: https://github.com/supportapp3-lab/ai-secret-check
参考
- How Claude remembers your project – Claude Code Docs
- Advanced Configuration – Codex(Shell environment policy)
- proc_pid_environ(5) — Linux manual page
- gitignore
- git-ls-files
- git-archive
※ 各項目の検証環境と条件はリンク先の記事に書いています。項目17と19の組み合わせ、項目18の ai-secret-check の出力は、2026-11-03 に git 2.47.3 の使い捨てリポジトリとダミー値で確かめました。項目15・16の Codex の結果は 2026-10-29・30 時点のもので、今回は再実行していません。
更新情報やちょっとしたTipsは X(@supportapp3_lab)で発信しています。