エージェントと機密ファイル - AI エージェントと機密ファイルの取り扱い
Claude Code・Cursor・GitHub Copilot 等の AI コーディングエージェントが .env や秘密鍵などの機密ファイルを読み取るリスクと、安全に使うための設定・運用方法を解説する。
AI エージェントが読める機密ファイルとは
AI コーディングエージェント(Claude Code、Cursor、GitHub Copilot など)は、プロジェクトフォルダの中身を広く読み取ってコードの提案や修正を行います。
これは便利な反面、フォルダ内にある「人間には見せてもいいが外部に出しては困る」ファイルまで AI が読んでしまう可能性があるということです。
以下は、プロジェクトフォルダに含まれがちな機密ファイルの代表例です。
| ファイル名 | 中身 | 漏洩時の影響 |
|---|---|---|
| .env / .env.local | API キー、データベースの接続先パスワード、外部サービスのシークレット | 不正アクセス、データベースの改ざん・漏洩 |
| .aws/credentials | AWS のアクセスキーとシークレットキー | クラウドリソースの不正操作、高額課金 |
| id_rsa / id_ed25519 | SSH の秘密鍵 | サーバーへの不正ログイン |
| service-account.json | Google Cloud のサービスアカウントキー | GCP リソースの不正操作 |
| .npmrc | npm の認証トークン | プライベートパッケージの不正公開・取得 |
| docker/config.json | Docker レジストリの認証情報 | コンテナイメージの不正取得・改ざん |
| .pgpass / .my.cnf | データベースのパスワード | データベースへの直接アクセス |
これらのファイルは通常 .gitignore で Git の管理対象外にされていますが、AI エージェントは Git の管理状況に関係なくフォルダ内のファイルを読み取ります。
「Git にコミットしていないから安全」とは限りません。
実際のリスクシナリオ
AI エージェントが機密ファイルを読み取ると、具体的にどのような問題が起きるのでしょうか。
以下に代表的なシナリオをまとめます。
| シナリオ | 仕組み | 結果 |
|---|---|---|
| クラウドへの送信 | エージェントが .env の内容をコンテキスト(文脈情報)としてクラウド上の AI サーバーに送信する | API キーやパスワードが AI 提供元のサーバーに保存される可能性がある |
| MCP サーバー経由の外部送信 | MCP(Model Context Protocol)で接続した外部ツールが、エージェントの読み取った機密情報にアクセスする | 悪意ある MCP サーバーを介して秘密鍵やトークンが第三者に渡る |
| チャット履歴への残存 | エージェントとの対話ログに .env の値やパスワードがそのまま記録される | 共有端末やクラウド同期されたチャット履歴から他人に閲覧される |
| 提案コードへのハードコード | エージェントが .env から読み取った実際の値を、提案するコードの中に直接埋め込む | そのままコミットすると Git の履歴にパスワードや API キーが残る |
| プロンプトインジェクションとの組み合わせ | プロジェクト内のファイルに仕込まれた悪意ある指示が、エージェントに機密ファイルの内容を出力させる | 攻撃者が意図的に機密情報を窃取する |
いずれのケースも、ユーザーが意図的に機密情報を入力していないにもかかわらず、エージェントが自動的にファイルを読み取ることで発生します。
従来の「AI に機密情報を入力しない」という注意だけでは防ぎきれない点が、エージェント特有のリスクです。
安全にエージェントを使うための対策
AI エージェント特有のリスクに対しては、「エージェントに読ませない」「機密情報をファイルに置かない」「送信前に確認する」の 3 つの方向で対策します。
| 対策 | 具体的な方法 | 補足 |
|---|---|---|
| 除外設定ファイルの整備 | .clignore(Claude Code 用)、.cursorignore(Cursor 用)、.github/copilot-ignore(Copilot 用)に .env、秘密鍵、認証ファイルのパターンを記載する | .gitignore と同じ書式で書ける。.gitignore に書いてあっても AI エージェント用に別途設定が必要 |
| シークレットマネージャーの利用 | API キーやパスワードをファイルに書かず、AWS Secrets Manager・Google Secret Manager・Azure Key Vault・1Password CLI 等から実行時に取得する | ファイル自体が存在しなければエージェントに読まれることもない |
| ワークスペースの権限スコープ制限 | エージェントが読み取れるフォルダを必要最小限に制限する。ホームディレクトリ全体ではなくプロジェクトフォルダのみを開く | .aws/credentials 等のホームディレクトリ直下の機密ファイルへのアクセスを防ぐ |
| 送信前のレビュー | エージェントがクラウドに送信するコンテキストを確認できるツール(プレビュー機能)を活用する。提案されたコードに実際の秘密値が含まれていないか確認してからコミットする | 多くのエージェントには送信内容の確認機能がある |
| コードレビューのチェックポイント | プルリクエスト時にハードコードされた API キーやパスワードがないかを確認項目に入れる。git-secrets 等のツールで自動検出する | CI に組み込むと漏れを防ぎやすい |
まずは .gitignore と同じ要領で各エージェントの除外設定ファイルを作るところから始めましょう。
数分で終わる作業ですが、効果は大きいです。
関連トピック
MCP のセキュリティリスク- Model Context Protocol(MCP)サーバー経由で LLM に外部ツールやデータを提供する仕組みにおけるセキュリティリスク。悪意あるツールの実行や過剰な権限付与による情報漏洩が問題となる。 AI への機密情報入力リスク- 生成 AI に業務データや個人情報を入力することで生じる情報漏洩リスクと、安全な利用方法。 クラウドでのシークレット値露出対策- AWS Secrets Manager / Azure Key Vault / GCP Secret Manager の使い分け、環境変数・.env ファイル・ハードコードの危険性、CI/CD パイプラインでの漏洩パターン、GitGuardian 等のシークレットスキャン、Parameter Store vs Secrets Manager の選択基準。 AI を安全に使うための基本- ChatGPT などの生成 AI を業務や日常で安全に使うために知っておくべきリスクと注意点。 