command フィールドに落とされた sk-… キー、body
に貼り付けられた顧客の SSN、リクエストヘッダー内の内部トークン。ファイアウォールの
sanitize 判定は、その素材をツール呼び出しの引数内で捕捉し、型付きのリダクション
トークンで置き換え、クリーニングされた呼び出しを転送します — そのためアクションは
依然として実行されますが、シークレットはゲートウェイを決して離れません。
これはファイアウォールのマッチング言語のひとつの判定です。完全なセットについては
判定とルールリファレンスを
参照してください;このページはサニタイズを作成し推論するための焦点を絞ったガイドです。
1. サニタイズが行うこと — そして決して触らないもの
verdict: sanitize のルールは、呼び出しがディスパッチされる前にツール呼び出しの
引数に対してリダクションエンジンを実行します。各マッチは正規のトークンで
置き換えられ、呼び出しはクリーニングされた引数で進みます — ツールは依然として実行
されますが、生のシークレットなしでです。
リダクトする
モデルが発行した
tool_call または MCP tools/call の JSON 引数 —
command、body、headers、シークレットや PII が落ちた任意の文字列フィールド。決してリダクトしない
ツールが返すコンテンツ、プロンプト、モデルのレスポンステキスト。サニタイズは
引数専用のリダクタです。テキストのスクリーニングは
ガードレールの関心事です。
[redacted:<preset>] になり(例:[redacted:openai_key])、カスタムパターンマッチは
[redacted:custom] になります。引数の形は保たれます — 機密の部分文字列のみが変わり
ます — そのため有効な JSON を期待するツールは依然として有効な JSON を受け取ります。
2. 組み込み検出器プリセット
サニタイズルールは 1 つ以上のプリセット(よく知られたシークレット/PII の形) および/またはカスタム正規表現パターンを名指しします。組み込みプリセット:| プリセット | 捕捉するもの |
|---|---|
aws_access_key | AWS アクセスキー id(AKIA… / ASIA… + 16 文字) |
aws_secret_key | 40 文字の AWS シークレット(境界認識) |
openai_key | sk- + 32 文字以上 |
anthropic_key | sk-ant- + 40 文字以上 |
bearer_token | Bearer + 16 文字以上のトークン(キーワード保持) |
email | メールアドレス |
ssn_us | 3-2-4 形の US SSN |
credit_card | Luhn チェックを通過する 13〜19 桁の連続 |
サニタイズルールは少なくとも 1 つのプリセットまたはカスタムパターンを宣言
しなければなりません — 空のサニタイザはルールを保存するときに拒否されます。
credit_card マッチはさらに Luhn チェックされるため、有効なカードではない同じ長さの
数字は過剰リダクトされるのではなく手を加えられないままになります。3. 具体例 1 つ
これをコンソールのルールエディタで作成します。この例は、エージェントが発行する任意のhttp.* ツール呼び出しの引数から OpenAI キーと任意のメールをリダクトし、それから
クリーニングされた呼び出しを転送します:
key=[redacted:openai_key] user=[redacted:email] に書き換えて
転送します — リクエストは依然として実行され、シークレットとアドレスはゲートウェイを
決して離れません。
4. inbound サーフェスでは、サニタイズは deny にエスカレートする
inbound サーフェスは、エージェントがリクエストで
アドバタイズするツール — ツール定義、まだ呼び出し時の引数を運ばない — を
評価します。そこにはリダクトするものが何もないため、inbound サーフェス上の
sanitize 判定は deny にエスカレートします(フェイルクローズ):リクエストは
リダクトされずに転送されるのではなく firewall_blocked でブロックされます。
5. サニタイズ vs. シークレットを扱う他の方法
エージェントが漏らそうとしているシークレットに対して 3 つの層が作用できます — 何と どこで選びます:サニタイズ(ファイアウォール) — ツール呼び出しの引数をリダクト
サニタイズ(ファイアウォール) — ツール呼び出しの引数をリダクト
シークレットをツール呼び出しの引数から剥がし、それでも呼び出しを実行します。
アクションは正当だがエージェントがフィールドに機密のものを入れたときに使います。
引数層のみ。
deny(ファイアウォール) — 呼び出し全体をブロック
deny(ファイアウォール) — 呼び出し全体をブロック
呼び出しを完全に止めます。引数だけでなくアクションそのものが危険なときに使います。
これは inbound サーフェスでサニタイズがなるものでもあります。
ツールをブロックを参照。
ガードレール — プロンプト / レスポンステキストをスクリーニング
ガードレール — プロンプト / レスポンステキストをスクリーニング
Secrets Blocker と PII ガードレールは、
リクエストまたはレスポンスのテキストをスクリーニングします(出力ステージでは、
モデル生成コンテンツを含む)。それが「ツールやモデルが返すもの」の層です —
サニタイズが行わないものです。
6. サニタイズが証跡のどこに表示されるか
すべての判定と同様に、サニタイズ評価はファイアウォールイベントとして記録されます — events ログで判定、サーフェス、ツール、実行で フィルタ可能で、分析でロールアップされます。 シャドウモードでは、サニタイズ判定は(すべての 強制判定と同様に)audit に格下げされ、理由には [shadow] would … が前置されるため、
引数が実際に書き換えられる前に影響を測定できます。
次に進む場所
すべての判定
allow、audit、deny、sanitize、pending_approval、cap_cost。
引数の検証
引数の中にあるもので呼び出しをマッチ — JSONPath 句文法。
ツールをブロック
アクションそのものが問題なら、呼び出し全体を deny。
ファイアウォール + ガードレール
ツールやモデルが返すテキストをスクリーニング — サニタイズがカバーしない層。
