0
0

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エージェントに鍵を読まれないための点検リスト 続編6項目:.gitignore の穴・tar/zip・渡る環境変数(Claude Code・Codex)

0
Posted at

結論

  • 前回の点検リスト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/)'

項目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

参考

※ 各項目の検証環境と条件はリンク先の記事に書いています。項目17と19の組み合わせ、項目18の ai-secret-check の出力は、2026-11-03 に git 2.47.3 の使い捨てリポジトリとダミー値で確かめました。項目15・16の Codex の結果は 2026-10-29・30 時点のもので、今回は再実行していません。

更新情報やちょっとしたTipsは X(@supportapp3_lab)で発信しています。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?