プロンプトイン ジェクションとは? Claude Codeでの 例と 対策【2026年 10月】
- 外から読んだ文章の命令で、AIが動かされる攻撃です。
- 完全には防げないので、被害を小さくする層を重ねます。
- denyとsandbox、MCPの審査、人の承認で守ります。

プロンプトインジェクションは、AIが読む文章の中に、AIへの命令を紛れ込ませて、AIの動きを変えてしまう攻撃です。 Claude Codeは、READMEなどのファイル、Webページ、MCPサーバーの返事など、外からの文章をたくさん読みます。GitHubの連携などでIssueを読ませる使い方でも同じです。その中の一文が命令として働くと、頼んでいない作業をするおそれがあります。
完全には防げません。AnthropicもOWASPも、確実に防ぐ方法はないという立場です。だから対策は「入れない」ではなく、入られても被害を小さくする層を重ねることです。Claude Codeでは、denyとaskの権限、sandbox、通信先の許可リスト、MCPの審査、人の承認、そしてbypassを使わないことの6つが、その層になります。
内容は、2026年10月23日に公式のセキュリティ、権限の設定、sandbox、権限モード、MCPの説明と、OWASPのLLM01 Prompt Injectionの頁と照らし合わせました。
プロンプトイン ジェクションとは
Anthropicの公式の説明では、プロンプトインジェクションは、悪意のある文章を差し込んで、AIアシスタントの指示を上書きしたり操ったりしようとする手法です。
人にたとえると、荷物の中に「受け取った人は、この箱の中身を誰かに渡してください」というメモが入っていて、それを上司の指示だと思い込んで従ってしまう状態です。AIは文章を読んで動くので、読んだ文章の中に命令が混ざると、その通りに動いてしまうことがあります。
OWASPは、これを2つに分けています。
| 種類 | OWASPの説明 | Claude Codeでの |
|---|---|---|
| 種類直接 | OWASPの説明利用者が | Claude Codeでの当てはまり方自分で |
| 種類間接 | OWASPの説明Webサイトや | Claude Codeでの当てはまり方次の |
OWASPは、人の目に見えない文章でも、AIが読み取れれば影響し得ること、悪意がなくても起こり得ることも書いています。
Claude Codeで 起こり 得る 入り口
Claude Codeは、頼まれた作業のために、手元のファイルやWebの内容、外部ツールの結果を読みます。読んだ内容は、そのまま会話に入ります。次の4つは、外から文章が入ってくる代表的な入り口です。下の例は、仕組みを説明するための作り話で、実際の被害の報告ではありません。
| 入り口 | 紛れ込む | まず |
|---|---|---|
| 入り口READMEや | 紛れ込む文章の例「この | まず効く守り実行前に |
| 入り口Webページ | 紛れ込む文章の例人には | まず効く守り通信先の |
| 入り口Issueや | 紛れ込む文章の例「この.envの | まず効く守り.envの |
| 入り口MCPサーバーの返事 | 紛れ込む文章の例ツールの | まず効く守り提供元を |
OWASPの攻撃例にも、AIに要約させたWebページに隠れた指示があり、その指示で会話の内容が外へ送られる、という場面があります。Anthropicも、外の内容を取ってくるMCPサーバーはプロンプトインジェクションの危険があるので、つなぐ前に信頼できるか確かめるよう、警告を出しています。
なぜ 完全には 防げないのか
理由は、公式がそのまま書いています。
- OWASPは、プロンプトインジェクションの弱点は生成AIの性質に由来し、確実な予防法があるのかどうかも分からない、としています。検索で外の資料を補う方法(RAG)や追加の学習(ファインチューニング)でも、完全には防げないという調査も挙げています。
- Anthropicは、保護でリスクは大きく減るが、どんなシステムも全ての攻撃を完全には避けられない、と明記しています。
つまり「この設定を入れれば安全」という話ではありません。命令が紛れ込む入り口を全部ふさぐより、紛れ込んだ命令に従っても、取り返しのつかないことが起きない形にしておくのが現実的です。OWASPが挙げる7つの対策にも、権限を最小にする、危険な操作は人が承認する、外から来た内容を分けて扱う、といった被害を限定する項目が入っています(ほかに、AIの役割の制約、出力の形式の検証、入出力のフィルタリング、攻撃の模擬テストがあります)。
ブラウザを動かすClaude in Chromeでは、ページやメールの中の隠れた指示が入り口になります。公式の試験の数字と、サイトごとの許可の仕組みは次の記事で説明しています。
関連記事被害を 小さく する 6つの層
Claude Codeの公式の説明をもとに、層ごとに整理します。上の層をすり抜けても、下の層が止める形にします。
| 層 | 何を | Claude Code |
|---|---|---|
| 層1 権限の | 何を防ぐかClaudeの | Claude Codeでの設定permissions.、permissions.。 |
| 層2 sandbox | 何を防ぐかシェルの | Claude Codeでの設定/sandboxで |
| 層3 通信先の | 何を防ぐかデータを | Claude Codeでの設定sandboxのallowedDomains。 |
| 層4 MCPの審査 | 何を防ぐか外部ツールからの | Claude Codeでの設定信頼できる.mcp.の |
| 層5 人の承認 | 何を防ぐか危険な | Claude Codeでの設定Manualモードでは、 |
| 層6 bypassを | 何を防ぐか全ての | Claude Codeでの設定公式は、bypassPermissionsは |
1 権限の denyと ask
読ませたくないファイルはpermissions.denyに書きます。公式の説明では、Readのdenyが効くのは、Claudeの組み込みのファイル用の道具と、catやsedのように認識できるBashのコマンドです。ファイルを名指ししない読み取りや、PythonやNodeのスクリプトが自分で開く場合は止まらないので、全ての処理を止めたいときはsandboxを使います。.envや鍵の具体的な書き方は、次の記事で説明しています。
注意点が1つあります。公式の説明では、curlやwgetのようにWebから内容を取ってくるコマンドは、初期設定では自動承認されません。Manualモードでは確認が出ます。止めたいときはdenyに入れます。ただしdenyの規則は、書かれたとおりのコマンドにだけ当たります。パス付きの呼び出しやsh -cの中までは当たらないので、確実に止めたいときはsandboxの通信の制限と組み合わせます。
2 sandboxと 3 通信先の 許可リスト
sandboxは、シェルのコマンドを、OSの仕組みで囲います。初期設定では無効で、/sandboxを実行するか、sandbox.enabledをtrueにして有効にします。macOS、Linux、WSL2で動き、Windowsにそのまま入れた場合は、コマンドは囲われずに実行されます。
通信については、囲われたコマンドには、ネットワークへの直接の道がありません。手元のプロキシが、接続先ごとに許可したドメインかどうかを確かめ、許可リストは空から始まります。命令が紛れ込んで「このデータを外へ送れ」と動いても、許可していないドメインには出られません。
ただし、公式はsandboxの範囲も書いています。囲うのはシェルのコマンドだけで、Claudeのファイル用の道具、MCPサーバー、フックは、囲いの外で動きます。またallowedDomainsは、WebFetchの道具の接続先を制限しません。WebFetchは権限の規則で別に決めます。
4 MCPの審査
AnthropicはMCPサーバーについて、自分で書くか、信頼できる提供元のものを使うよう勧めています。Anthropic Directoryに載せる前に審査はするものの、MCPサーバーのセキュリティ監査や管理はしていません。ここで覚えておくのは、MCPサーバーが監査済みとは限らず、その返事が入り口になり得る点です。MCPサーバーの返事は、外から来た文章です。
5 人の承認
最後の層は人です。Anthropicは、提案されたコマンドと変更を承認する前に確認するのは、利用者の責任だと書いています。外の内容を読ませるときの心得として、公式は次を挙げています。
- 承認する前に、提案されたコマンドを確認する
- 信頼できない内容を、そのままClaudeに流し込まない
- 重要なファイルへの変更を確かめる
- 外のWebサービスとやりとりするスクリプトなどは、仮想マシン(VM)で動かす
- 怪しい動きは
/feedbackで報告する
承認の画面で見るのは、「いま頼んでいる作業に、このコマンドは必要か」です。READMEの要約を頼んだだけなのに、未知のURLへ送るコマンドが出てきたら、承認しません。
6 bypassを 使わない
--dangerously-skip-permissionsなどで入るbypassPermissionsは、確認と安全の点検を省いて、操作をすぐ実行します。公式の表で、この方式は隔離したコンテナとVMだけで使うものとされています。ただし、denyの規則はこの方式でも効きます。会社で止めたいときは、管理者が管理設定のpermissions.disableBypassPermissionsModeを"disable"にできます。
今日から できる 小さな設定
個人で始める最小の形です。.envの守り方と通信先の許可は、お使いの環境に合わせて直してください。
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Bash(curl *)",
"Bash(wget *)"
]
},
"sandbox": {
"enabled": true,
"network": {
"allowedDomains": ["github.com"]
}
}
}このあとに、Claude Codeの中で/permissionsを実行すると、いま効いている規則と、その設定元を確認できます。ダミーのフォルダで、curlが止まること、許可していないドメインに出られないことを、先に試しておくと安心です。初めての設定は、次の記事の30分の手順で、ダミーのフォルダから始めると安全です。
怪しいと 感じた ときの 動き方
次のような動きは、立ち止まる合図です。
- 頼んだ作業と関係のないコマンドが、承認の画面に出てくる
- 見たことのないURLへ、データを送ろうとする
.envや鍵のファイルを、理由なく読もうとする
承認せずに止めて、何を読んだ直後にそうなったかを確かめます。公式は、怪しい動きは/feedbackで報告するよう案内しています。
まとめ
プロンプトインジェクションは、AIが読む文章に混ぜられた命令で動かされる攻撃で、Claude CodeではREADMEやWebページ、Issue、MCPの返事が入り口になります。完全には防げないので、denyとask、sandbox、通信先の許可リスト、MCPの審査、人の承認、bypassを使わないことの6つで、被害を小さくします。
設定の全体像と法人での運用は、次の記事にまとめています。
関連記事MCPサーバーのつなぎ方は、次の記事をご覧ください。
関連記事よく ある質問
プロンプトイン ジェクションとは 何ですか?
AIが読む文章の中にAIへの命令を紛れ込ませて、AIの動きを変えてしまう攻撃です。Webページやファイルなど、AIが外から受け取る内容に入っていると「間接」と呼ばれ、Claude Codeではこちらが主な心配です。
Claude Codeで プロンプトイン ジェクションは 防げますか?
完全には防げません。Anthropicも、どんなシステムも全ての攻撃を避けられないと書いています。権限のdeny、sandbox、通信先の許可リスト、MCPの審査、人の承認を重ねて、被害を小さくします。
bypassPermissionsは 安全ですか?
安全ではありません。公式は、このモードはプロンプトインジェクションへの保護を提供しないと書いています。隔離したコンテナやVMの中だけで使います。
sandboxを 入れれば プロンプトイン ジェクションは 安心ですか?
いいえ。sandboxが囲うのはシェルのコマンドだけで、ファイル用の道具、MCPサーバー、フックは囲いの外です。だから権限のdenyと人の承認も合わせます。


