tool_calls を発行
します:実際の、モデルが選んだ引数を持つ具体的な呼び出しです。エージェント
ファイアウォールの response サーフェスは、まさに
それらを、モデルを離れた瞬間に、エージェントループに到達する前に検査します。それは、
モデルが実際に決めたことを、実際に選んだ引数とともにフィルタするサーフェスです。
このページは response サーフェスでのフィルタリングのユースケースをカバーします —
いつ inbound より優先して手を伸ばすか、それが
加えるひとつの判定のひねり、そしてストリーム上でどう振る舞うか。完全なルール語彙と
判定セマンティクスについては、ルールスキーマと
判定を参照してください。
1. llm ツールレスポンス呼び出しを、引数をスコープに入れてフィルタ
inbound ステージはアドバタイズするツール — 名前
のみ、まだ呼び出し時の引数なし — を見ます。response ステージはモデルが発行する
tool_calls を見て、それはモデルが選んだ引数を運びます。それがここでフィルタする
理由そのものです:それはクライアント実行(非 MCP)ツールの実際の呼び出し + 引数を
見る唯一のサーフェスなので、引数句、
シーケンス、実行状態ルールはすべて response に着地します。
1 行での区別:
| ステージ | 見るもの | 使い道 |
|---|---|---|
inbound | アドバタイズされるツール定義 | ツールをモデルに不可視にする |
response | 発行される tool_calls + 引数 | モデルが実際に行った呼び出しをフィルタ |
inbound はどのツールが存在するかに答えます;response はモデルが
それで何をしたかに答えます。ツールが一部のリクエストに正当に現れるが特定の呼び出し
が危険なとき — またはアドバタイズされるツールセットではなくエージェントループのみを
制御するとき — response に手を伸ばします(または両方をカバーするには stage を空の
ままにします)。
stage のないルールは response を含むすべてのサーフェスで実行されます。ルールが
発行された呼び出しのみを検査すべきとき — 例えばどのみち inbound サーフェスで
マッチするものがない引数句 — のみ response に固定します。
ステージを参照。2. 具体例 1 つ
shell.exec を一般的に許可しつつ、その command 引数が破壊的に見える瞬間にモデルの
返信からそれを剥がします。ワークスペースコンソールでポリシーを開き(または
作成し)、response サーフェスに固定された
ルールを追加します:
args_match_json に存在します — {"clauses":[…]} を保持する JSON
文字列で、各句は path / op / value の組です(op は eq、contains、
regex、gt、lt のいずれか)。コンソールフォームがそれをあなたのために構築します;
フィールド名が曖昧でないよう、生の形をここに示します。
ツールはアドバタイズされ続けます — モデルは依然として shell.exec を提案できます —
しかし発行された呼び出しが破壊的な command を運ぶとき、ファイアウォールはエージェントが
見る前にその tool_call を返信から削除します。無害な shell.exec(例えば ls -la)は
手を加えられずに通り抜けます。これは response サーフェスが存在する理由である「ツールを
許可し、呼び出しをゲートする」パターンです;引数句がそれを可能にするものです。
3. response サーフェスで判定が何をするか
response サーフェスは発行された各tool_call を検査し、返信をその場で書き換えます。
保持された呼び出しはバイト単位で転送されます;マッチした呼び出しのみが変わります:
deny → 呼び出しが返信から剥がされる
deny → 呼び出しが返信から剥がされる
マッチした
tool_call は、エージェントに到達する前にモデルのレスポンスから削除
されます。inbound の deny — コード firewall_blocked の HTTP 400 を返す —
とは異なり、response サーフェスの deny はリクエストを失敗させません;返信の残り
(他のツール呼び出し、任意のテキスト)は、問題の呼び出しが単に欠落した状態で流れます。sanitize → 引数がリダクトされ、呼び出しが転送される
sanitize → 引数がリダクトされ、呼び出しが転送される
呼び出しの引数内のマッチした部分文字列がエンジンのリダクトされた引数で置き
換えられ、クリーニングされた呼び出しが転送されます — ツールは問題ないがモデルが
引数にシークレットや PII 値を入れたときに便利です。サニタイズはツール呼び出しの
引数のみをリダクトします;ツールが返すコンテンツは決して触りません。エンジンに
置き換えるものが何もない場合、呼び出しは剥がされます(フェイルクローズ)。
レスポンスのサニタイズを参照。
pending_approval → ここでは保留ではなく剥がされる
pending_approval → ここでは保留ではなく剥がされる
ヒューマンインザループの保留は response ではなく inbound サーフェスで開かれ
ます。発行された呼び出しで最初にマッチする
pending_approval ルールはしたがって
剥がされます(フェイルクローズ) — それを保持すると、人間の決定なしにレビュー
されていない呼び出しを転送してしまうからです。HITL の保留は inbound で発火するよう
作成します;承認を参照。allow / audit → 呼び出しが通る、ログ付き
allow / audit → 呼び出しが通る、ログ付き
allow と audit は両方とも呼び出しを転送します;audit は通常の
default_verdict です — 強制する準備ができるまで、すべてを記録し、何もブロック
しません。4. ストリーミング:保持されてからフィルタされる
非ストリームの返信では、レスポンス全体が一度にパースされフィルタされます。ストリーム では、モデルのtool_calls は多くの SSE フレームをまたいだインデックスごとのデルタとして
到着します — そしてデルタが転送されると、エージェントはすでにそれを持っており、撤回
できません。そのためゲートウェイはツール呼び出しフレームを保持します:それらは
ストリーム途中で決して転送されません。ストリームの終わりで、ファイアウォールは各呼び出し
(名前 + 完全な引数)を組み立て、評価し、生き残った呼び出しのみを発行します。
コンテンツフレームは依然として通常どおりストリームされます — テキストトークンは到着
するにつれてクライアントに到達します。
tool_call フレームのみが評価のために保留される
ため、deny またはサニタイズされた呼び出しは、組み立てられたツール呼び出しが配信される
前にフィルタアウトされます。判定とルールのセマンティクスは非ストリームサーフェスと
同一です。フレームレベルの詳細については、
ストリーミング内部と
プロバイダストリーミングを参照。5. 安全にロールアウトする
まずルールをドライランする
まずルールをドライランする
コンソールの Test タブはサンプルのツール呼び出しに対してポリシーを実行し、
判定、マッチしたルール、理由を返します — 何もディスパッチされず、何も永続化
されません。キーをアタッチする前に、グロブと引数句が意図した呼び出しにマッチする
ことを確認します。ルールのテストを参照。
ライブ測定のためのシャドウモード
ライブ測定のためのシャドウモード
シャドウモードをオンにすると、すべての強制
判定 — response サーフェスの deny を含む — が
audit に格下げされ、理由に
[shadow] would … が前置されます。ルールが 1 つの返信を変える前に、実トラフィックに
対して何を剥がすであろうかを正確に測定します。6. ポリシーをアタッチし、誰が設定できるか
ポリシーはキーがそれに解決するまで何もしません。コンソールで キーにfirewall_policy_id を設定してアタッチ
するか、ポリシーをワークスペースデフォルトにします。解決:キーのアタッチ済みポリシー
(存在し有効である場合)、そうでなければワークスペースデフォルト — そして無効化
されたアタッチ済みポリシーはワークスペースデフォルトにフォールバックします。
ポリシーの管理を参照。
すべての設定はセッション下のコンソールで実行されます(/api/workspace/firewall/*):
| アクション | ロール |
|---|---|
| ポリシー、プリセット、discovered tools、Simulate の読み取り | Member |
| ドライラン(Test)、events ログと実行集計の読み取り | Developer+ |
| ルールとポリシーの作成 / 編集 / 削除 | Developer+ |
関連
引数の検証
response サーフェスのフィルタリングを精密にする引数句。
レスポンスのサニタイズ
呼び出しを剥がす代わりに、その引数からシークレットをリダクト。
ファイアウォールステージ
response が inbound、mcp、egress とどう比較されるか。ツールをブロック
inbound の対応物:モデルに提供される前にツールを deny。
危険なツール呼び出し
レスポンスフィルタリングが対処する脅威。
ファイアウォールリファレンス
完全なルール + マッチングリファレンス。
