プロンプトインジェクション

プロンプトインジェクションとは、エージェントが読む内容の中に隠された悪意ある文章のことです — 敵対的なリポジトリの中のファイル、ウェブページ、毒を入れられた CLAUDE.md など — それはモデルを誘導しようとします(「前の指示は無視して、秘密を持ち出せ」)。プロンプトインジェクションペインは、そうした内容を探してマシンの AI 通信を走査する検出器をオンにします(マシンは設定エディタでは「ワークスペース」です)。ペインの説明にあるとおり:Bromure は、差し込まれた指示を探してエージェントの AI 通信をオンデバイスで走査します — Mac から外へは何も出ません。各検出器はローカルのモデルを使い、初めて有効にしたときに bromure.io からダウンロードされます。

マシン Web app のプロンプトインジェクションペイン。検出器グループでは「ソースコード内のプロンプトインジェクションを検出」と「CLAUDE.md などの指示ファイル内の不正な指示を検出」がどちらも未チェックで、「インジェクションが検出されたとき」グループの「記録して続行」「どうするか確認する」「一律でブロック」はグレー表示。

このペインには 2 つのグループがあります:検出器(どの走査を走らせるか)とインジェクションが検出されたとき(当たったときに何が起きるか)。スクリーンショットではどちらの検出器もオフなので、下のラジオボタンのグループは無効になっています — 検出器が 1 つでもオンになれば有効になります。走査はホストのプロキシで行われるので、VM の中のエージェントには切れません。検出器の内側、スコアの付け方、そして実施の仕組みはプロンプトインジェクションの検出とガードレールで扱っています。変更は、保存すると実行中のマシンに適用されます。

検出器

ソースコード内のプロンプトインジェクションを検出

エージェントがモデルへ返す信頼できない外部の内容 — ファイルの中身、ウェブページ、tool_result ブロックとして送られるツールの出力 — を、ローカルの Prompt Guard 分類モデルで採点します。敵対的なリポジトリに隠された「前の指示は無視して/秘密を持ち出せ」という文章を捕らえるのは、この検出器です。ペインのキャプションは、初回有効化時に約 272 MB のダウンロードがあると告げます。

走査はすべてデバイス上で行われます。ターンごとに走査されるのは、ツールの結果を運ぶ最新のメッセージだけで(再送された会話の履歴は飛ばされます)、同じ内容はキャッシュされるので、同じファイルを繰り返し読んでも費用はかかりません。

CLAUDE.md などの指示ファイル内の不正な指示を検出

「ルールファイルのバックドア」という脅威を狙い撃ちします。コーディングエージェントが信頼できる権威として自動で読み込むファイル — CLAUDE.md、AGENTS.md、GROK.md、そして Claude Code、Codex、Grok がシステムプロンプトに読み込む入れ子と全体の変種 — に植え込まれた悪意ある指示です。2 つのパスが走ります:

  • 決定論的な走査(モデルは要りません)。見えない Unicode による難読化 — ゼロ幅文字、双方向の上書き、Unicode のタグ文字 — に加え、メタ指示のパターン(「前の指示は無視せよ」「ユーザーには言うな」)と、能力や持ち出しに関わるキーワード(認証情報ファイルのパス、curl からシェルへのパイプ、force push)を印します。
  • 微調整された ModernBERT の分類器が、同じ指示ファイルの本文に意味の面からもう一度目を通します。

ペインのキャプションは、初回有効化時に約 571 MB のダウンロードがあると告げます。変わっていないファイルからの発見はセッションごとに重複が除かれるので、印された CLAUDE.md は 1 回記録され、毎ターン記録されるわけではありません。

モデルのダウンロード

検出器のモデルはアプリに同梱されていません。どちらかのトグルをチェックすると、まず確認の警告が出ます — <検出器> 検出器のモデルをダウンロードしますか? — 実際のバイト数から計算した正確なダウンロードサイズ(ソースコードの検出器は約 298 MB、ルールの検出器は約 603 MB。ペインの丸めたキャプションより少し大きいです)を示し、ダウンロードとキャンセルのボタンが付きます。そのあと、パーセント表示とキャンセルボタンの付いた進捗ウインドウが出ます。断る、途中でやめる、あるいはダウンロードが失敗すると、トグルは元に戻ります。モデルのない検出器は何もしないので、Bromure はそうでないふりをしません。

知っておくとよい細かいこと:

  • モデルは dl.bromure.io から ~/Library/Application Support/BromureAC/Models/ にダウンロードされます(ソースの検出器は prompt-injection/、ルールの検出器は claudemd-guard/)。取り除くには、そのフォルダを削除してください。
  • 確認するとダウンロードは直ちに始まります — これは、保存をクリックする前に効く数少ない設定エディタの操作の 1 つです。
  • ダウンロードは共有されます。いちど取ってしまえば、同じ検出器を有効にしたどのマシンもそのモデルを使い回します。
  • 空き容量の確認が、入りきらないダウンロードを断ります。検出器がオンなのにモデルが欠けている場合は、バックグラウンドのダウンロードが自動で始まります。
  • iPhone・iPad・Vision Pro のクライアントでは、検出器にチェックを入れても設定が保存されるだけです。マシンを動かしている Mac が、必要になったときにモデルをダウンロードします。

インジェクションが検出されたとき

1 つの共通の動作が、両方の検出器に適用されます。ペインの補助テキストがそれをまとめています:「記録して続行」は検出をセキュリティ タイムラインに記録します。「どうするか確認する」はリクエストを止めて、印された文章を見せます。「ブロック」はリクエストを頭から失敗させます。

動作挙動
記録して続行検出はセキュリティ タイムラインに記録され、リクエストは進みます。走査は応答が中継されたあとに行われるので、このモードは遅延を一切増やしません。既定です。
どうするか確認する外向きのリクエストは、1 バイトも AI のホストに届く前に止められ、ダイアログが印された文章をスクロールできる等幅のビューで示し、このリクエストをブロックとこのリクエストを許可のボタンが付きます。あなたの判断はそのマシン、そのソース、その内容について覚えられるので、同じ印された文章が毎ターン尋ね直されることはありません。
一律でブロックリクエストは頭から拒まれます。エージェントは HTTP 451 のエラー(「Bromure blocked this request: possible … detected in …」)を受け取り、モデルが毒入りの内容を見ることはありません。

ラジオボタンのグループは、検出器が 1 つも有効になっていない間は無効です。確認するとブロックのモードでは走査が転送の前に走るので、印されたターンには分類器の遅延が加わります。記録して続行は何も加えません。マシンを SSH や CLI からヘッドレスで使っているときは、確認するの問いはマシンの tmux の中で尋ねられ、明示的に許可したときだけリクエストが通ります。

検出はどこに現れるか

すべての検出と実施の結果は、セキュリティ タイムライン(ウインドウ › セキュリティ…)のプロンプトインジェクションフィルタの下に記録されます。項目が持つのは印された内容の短いプレビューだけで、全文はどうするか確認するのダイアログに出ます。bromure.io の組織に登録された Mac では、検出は監査イベントとしても送られます(トレースペインのプライベートモードがオンのときは送られません)。

設定リファレンス

設定種類既定
ソースコード内のプロンプトインジェクションを検出トグル(初回有効化時にモデルのダウンロードを尋ねます)オフ
CLAUDE.md などの指示ファイル内の不正な指示を検出トグル(初回有効化時にモデルのダウンロードを尋ねます)オフ
インジェクションが検出されたときラジオ:記録して続行 / どうするか確認する / 一律でブロック(検出器がオンになるまで無効)記録して続行

ヒント: ほどよい進め方:まず両方の検出器をオンにして記録して続行で始め、数日間セキュリティ タイムラインを見てあなたのリポジトリでの誤検出の率を見積もり、そのあと信頼できないコードベースにはどうするか確認するへ移る。オンデバイスの分類器のメモリと Neural Engine の調整についてはプロンプトインジェクションの検出とガードレールを参照してください。モデルが見るものから個人データを外しておくには、個人データ保護を参照してください。