Search the alley

記事を検索

2文字以上でタイトル・カテゴリ・タグを検索できます。

AI coding agentの間接プロンプトインジェクション対策|README・issue・外部ドキュメントを信じすぎない

AI coding agentがREADME、issue、外部ドキュメント、エラーメッセージを読むときに起きる間接プロンプトインジェクションを、防御目線で整理。AGENTS.md、Copilot code review、Codex、Claude Codeでの扱い方を解説します。

公開 2026.07.01 / 更新 2026.08.10

この記事のポイント

  • README、issue、外部ページ、エラーメッセージは作業情報であって、上位指示ではない
  • AGENTS.mdは便利なrepo規約だが、知らないrepoでは内容の妥当性を先に読む
  • 外部URLを読むAIには、秘密情報・diff・ログの外部送信を禁止するルールが必要

agent phaseのnetworkとsetup scriptsのnetworkを分ける

Codex cloudで「agent internet accessをOFF」にしても、setup scriptsの依存取得まで自動的に同じ制限になるとは扱いません。agentがWebページ、issue、dependency READMEを読みながら実行する通信と、環境準備のためのsetup通信を別の段階として棚卸しし、どの段階で何が外部へ出るかを確認します。

設定・段階公式Docsの説明安全な開始点
agent phase既定ではinternet accessをblockするまずOFFのまま、必要性が説明できる作業だけ例外候補にする
setup scripts依存関係をinstallするためinternet accessがあるsetupが読むscript、依存、送信先、ログをagent実行前に確認する
環境単位Agent internet accessはenvironmentごとに設定するrepo全体や全taskの恒久許可とせず、対象environmentと所有者を記録する
On + domainOnにしてもdomain allowlistで制限でき、None / Common dependencies / Allを選べるAllを常用せず、NoneまたはCommon dependenciesから必要domainだけ追加する
HTTP methods`GET`、`HEAD`、`OPTIONS`だけに制限でき、POST・PUT・PATCH・DELETEなどをblockできる読み取りが目的ならsafe methodsだけにし、書き込みmethodが必要な理由を別承認にする
確認networkを狭くしてもagent outputとwork logをreviewする通信設定の成功を、secret非送信・安全な変更・公開可とは扱わない

Codex cloudのnetworkを有効にする前の停止条件

  • agent phaseのnetworkが本当に必要かを先に分け、公式Docsの閲覧や依存取得を一つの広い許可にまとめない。
  • ONにするenvironment、対象task、期限、許可domain、HTTP method、送信してよいデータを依頼文とログへ残す。
  • domain allowlistの`All (unrestricted)`を便利さだけで選ばず、NoneまたはCommon dependenciesから狭く始める。
  • GET・HEAD・OPTIONSで足りる読み取り作業へPOST・PUT・PATCH・DELETEを許可しない。書き込みが必要なら送信先、payload、secret、監査ログを別に確認する。
  • issue、README、Webページ、dependencyの説明に隠れた命令があっても、外部送信、secret、diff、ログの転送を実行しない。
  • networkを有効にしたagentのoutput、work log、生成差分、取得した依存のlicense・脆弱性を確認し、完了報告だけで採用しない。
  • setup scriptsが先にネット接続できる前提で、普段のAPI key、GitHub token、SSH key、cloud認証が同じenvironmentにないか確認する。

Codex Agent internet accessのFAQ

agent internet accessをOFFにすればsetupも安全ですか?

安全とは限りません。公式Docsではsetup scriptsは依存関係のinstall用にinternet accessを使えると説明されています。setupのscript、依存、送信先、secretの見える範囲を別に確認します。

domain allowlistを使えばprompt injectionはなくなりますか?

なくなりません。allowlistとHTTP method制限で通信範囲は狭められますが、許可domainのcontentやdependency READMEに悪意のある指示が含まれる可能性、secretやlicense、脆弱な依存のリスクは残ります。

GETだけなら外部送信は起きませんか?

GETでもURL query、header、取得内容、ログにsecretやdiffが混じれば情報が漏れる可能性があります。safe methodは追加の防御層であり、送信データとoutputのレビューを省略しません。