
こんにちは。
アプリケーションサービス本部、DevOps担当の兼安です。
本記事はこちらの記事の続きです。
前回、マルチAIコーディングエージェントにおける mcp.json の書き方の整理と、APIキーなどの環境変数化を行いました。
今回はそれに加えて、AIが環境変数を読み込まないようにする設定ができるかを調べました。
調査対象は前回同様、Kiro・Claude Code・GitHub Copilot Agent Mode で、Kiro については CLI/IDE の両方を調べています。
本記事のタイトルに「調査」とある通り、残念ながら直接的な読み取り拒否設定を発見できたエージェントとそうでないものがあることを先に述べておきます。
本記事の検証環境
| 項目 | バージョン |
|---|---|
| OS | macOS Tahoe 26.4.1 |
| VS Code | 1.119.0 |
| Claude Code | 2.1.126 |
| Kiro CLI | 2.2.2 |
| Kiro IDE | 0.12.200 |
| direnv | 2.37.1 |
各AIコーディングエージェントの読み取り拒否設定
Kiro CLI
私の調べた限り、本記事執筆時点(2026年5月)では、Kiro CLI における直接的な読み取り拒否設定を見つけられませんでした。
「ナレッジベースのインデックス除外」という設定はありますが、これは目的が異なるため今回は使用できないと考えます。
参考:Knowledge management - CLI - Docs - Kiro
Kiro IDE
Kiro IDEでは、.kiroignore ファイルを使ってエージェントの読み取りを拒否できます。
.gitignore と同じ構文で記述します。
プロジェクトルートに .kiroignore を作成します。
# 環境変数ファイル .env .env.* !.env.example # 秘密鍵・証明書 *.pem *.key
Kiro IDE の .kiroignore は、Settings で kiroAgent.agentIgnoreFiles に .kiroignore のパスを追加する必要があります。
今回はプロジェクトルートに .kiroignore を置く前提でパスを設定します。
GUIで設定する場合は、Settingsの画面で指定します。

設定ファイルで指定する場合は、.vscode/settings.jsonで指定します。
// .vscode/settings.json
{
"kiroAgent.agentIgnoreFiles": [
".kiroignore"
]
}
Kiro IDE の読み取り制御はグローバルに適用することもできます。
詳細は下記の公式ドキュメントをご覧ください。
参考:Kiroignore - IDE - Docs - Kiro
Claude Code
Claude Code では、.claude/settings.json の permissions.deny に Read ルールを記述することで、特定のファイルの読み取りを拒否できます。
{ "permissions": { "deny": [ "Read(./.env)", "Read(./.env.*)", "Read(./secrets/**)" ] } }
この設定により、マッチしたファイルはファイル検索結果からも除外され、読み取りが拒否されます。
私は読み取り拒否はプロジェクト単位の設定であるべきだと考えます。
そのため、.claude/settings.local.json ではなく .claude/settings.json で設定するのが適切だと思います。
なお、この設定はあくまで Read ツールの呼び出しを拒否するものです。AIが Bash ツール経由で cat や grep などのコマンドによるアクセスをした場合は未知数です。
それを考慮する場合、別途 Bash の deny ルールで制御する必要があります。
参考:Claude Code settings - Claude Code Docs
GitHub Copilot Agent Mode
こちらも本記事執筆時点(2026年5月)において、GitHub Copilot Agent Mode における明確な読み取り拒否設定を見つけられませんでした。
近い機能としてGitHub Copilot の Content Exclusion 機能がありますが、この機能はCopilot Agent Modeではサポートされていません。
公式ドキュメントに以下の記載があります。
GitHub Copilot CLI, Copilot cloud agent, and Agent mode in Copilot Chat in IDEs, do not support content exclusion.
Content Exclusion はインライン補完と通常の Copilot Chat には有効ですが、Agent Mode で動作するエージェントには適用されません。
そのため、代替手段として .github/copilot-instructions.md にカスタムインストラクションで「.env ファイルを読み取らないこと」と記述する方法が考えられます。
ただし、これはあくまで指示であり、Content Exclusion のような強制力はありません。
# Copilot Instructions ## セキュリティ 以下のファイルは読み取らないでください: - `.env` および `.env.*` ファイル - `secrets/` ディレクトリ配下のファイル - `*.pem`、`*.key` ファイル
参考:Excluding content from GitHub Copilot - GitHub Docs
読み取り拒否設定を追加したディレクトリ構成
前回のディレクトリ構成に読み取り拒否設定(またはその代替手段)を追加したものがこちらです。
Kiro CLI については読み取り拒否設定が見つからなかったため、設定の追加はしていません。
.
├── .envrc # direnv 設定(dotenv_if_exists .env.local)
├── .env.local # 実際のAPIキーを記載(.gitignore でGit管理対象外とする)
├── .env.local.sample # .env.local のテンプレート(Git 管理対象)
├── .kiroignore # Kiro IDE 用の読取操作の拒否設定
├── .kiro/
│ └── settings/
│ └── mcp.json # Kiro CLI 用(${VAR} で環境変数を参照)
├── .vscode/
│ └── settings.json # Kiro IDE 用の設定(.kiroignore のパス指定など)
├── .mcp.json # Claude Code 用(${VAR} で環境変数を参照)
├── .claude/
│ ├── settings.json # Claude Code 用の読取操作の拒否設定 + 共通ポリシー
│ └── settings.local.json # MCP ツールの許可リストなど個人ごとの権限設定(.gitignore でGit管理対象外とする)
├── .github/
│ └── copilot-instructions.md # Copilot Agent Mode 用のカスタムインストラクション(読取拒否の指示を含む)
└── .vscode/
└── mcp.json # Copilot agent mode 用(envFile で .env.local を参照)
まとめ
本記事執筆時点(2026年5月)における、AIコーディングエージェントの読み取り拒否設定を整理しました。
| エージェント | 読み取り拒否の仕組み | 設定ファイル | 強制力 |
|---|---|---|---|
| Kiro CLI | なし | — | — |
| Kiro IDE | .kiroignore + Settings |
.kiroignore + .vscode/settings.json |
あり |
| Claude Code | permissions.deny |
.claude/settings.json |
あり |
| GitHub Copilot Agent Mode | なし | .github/copilot-instructions.md(代替) |
なし(指示のみ) |
前回の環境変数化と合わせて、APIキーなどの機密情報がAIのコンテキストに入り込まないようできる限り多層的に防御しましょう。
兼安 聡(執筆記事の一覧)
アプリケーションサービス本部 DS3課
2025 Japan AWS Top Engineers (AI/ML Data Engineer)
2025 Japan AWS All Certifications Engineers
2026 AWS Community Builders(2年目)
Certified ScrumMaster
PMP
広島在住です。今日も明日も修行中です。
X(旧Twitter)