メインコンテンツへスキップ
ツールを許可リストすることは、エージェントがどのツールを呼び出してよいかに 答えます。それはどの引数でには答えられません。shell.execls には問題 ありませんが、rm -rf / には大惨事です。db.query はレプリカに対しては問題 ありませんが、prod に対しては責任問題です。違いは引数の中にあり、ツール名 ルールはそれを見られません。 ファイアウォールの引数句args_match_json)はそのギャップを埋めます。ツール 呼び出しのためにモデルが選んだ具体的な引数を検査し、そのから判定を決定します — そのためツールを広く許可しつつ、それが取りうる 1 つの危険な形を deny できます。 このページはそれらの句を作成するための焦点を絞ったガイドです;完全なルール語彙に ついてはファイアウォールルールを、その周りのポリシー モデルについてはファイアウォールを参照してください。
引数値はモデルがツールをどう呼び出すかを選んだ後にのみ存在するため、引数句は responsemcpステージに属します。inbound では — エージェントがツール定義のみをアドバタイズする — チェックする呼び出し時の 引数がありません。

1. いつツール呼び出しの引数を検証するか

ツールが一般的には安全だが特定の形で危険なときはいつでも、引数句に手を伸ばします:

破壊的なコマンド

shell.exec を許可しつつ、コマンドが rm -rfmkfsdd if= にマッチするとき deny。

本番のブラスト半径

db.query を許可しつつ、接続ターゲットが prod のとき deny(または承認のための 保留)。

内部宛先

フェッチツールを許可しつつ、その url/ip 引数が RFC-1918 範囲またはクラウド メタデータ IP に入るとき deny。

過大な操作

バルクツールを許可しつつ、limit または count 引数が数値上限を超えるとき deny。
ルールは依然としてまずツール名でマッチします;句がそれをどのツールからどの呼び出しへ 絞ります。

2. 句セットの形

args_match_jsonJSON エンコードされた文字列で、そのデコードされた値は clauses のリストを保持するオブジェクトです。各句は { path, op, value } の組であり、 すべての句が AND されます — すべての句が真のときのみルールが発火します。デコード すると、値は次のようになります:
{
  "clauses": [
    { "path": "$.command",    "op": "regex",      "value": "rm -rf|drop table" },
    { "path": "$.connection", "op": "in",         "value": ["prod", "replica"] },
    { "path": "$.ip",         "op": "cidr_match", "value": "10.0.0.0/8" }
  ]
}
ルールボディでは、このフィールドはその JSON を単一のエスケープされた文字列として 運びます — 例:"args_match_json": "{\"clauses\":[{\"path\":\"$.command\",\"op\":\"regex\",\"value\":\"rm -rf\"}]}" 空または不在の args_match_json空虚に真です — ルールはツール名グロブ単独で マッチし、名前のみのルールと全く同じです。

3. 演算子

7 つの演算子が閉じた語彙を構成します。コンソールは保存時に演算子とその値の形を検証 するため、不正な形の句が永続化されることはありません。
演算子マッチする条件
eqスカラー等価(数値は数値として比較;型不一致はマッチなし)。
contains部分文字列 — 両オペランドが文字列でなければならない。
regexGo RE2 パターンが文字列値にマッチ(線形時間、後方参照なし)。
in値が与えられた JSON 配列の要素である。
cidr_match文字列 IP が与えられた CIDR に入る。
gt / lt数値の greater-than / less-than(文字列は強制変換されない)。

4. パス構文

句の path は、ツールの引数オブジェクトに対する小さな JSONPath サブセットです:
トップレベルまたはネストしたオブジェクトフィールドを名前で読みます。
配列にインデックスし、オプションで要素のフィールドへ続けます。
引数 blob 全体に対してマッチ(粗いスキャンには contains または regex と 組み合わせて便利)。
ワイルドカード、フィルタ、スライス、再帰下降はありません — 文法は意図的に小さく、 マッチングがホットパス上で線形時間かつ予測可能であり続けます。

5. 実践例

エージェントに shell.exec を自由に実行させるが、再帰的な強制削除は決してシェルに 到達してはならないとします。コマンド引数が破壊的に見えるときのみ shell.exec を deny する 1 つの response ステージルールを作成します。
1

ルールエディタを開く

コンソールで、エージェントのキーにアタッチされたファイアウォールポリシー(または ワークスペースデフォルト)を開き、ルールを追加します。ポリシーの編集は Developer+ のアクションです — メンバーはポリシーを読めますが書けません。
2

response ステージでツールをマッチする

ステージを response に、ツールグロブを shell.exec に設定します。response ステージは、句が必要とするモデルが選んだ引数を運びます。
3

引数句を追加する

$.command に 1 つの regex 句を追加し、判定を deny に設定します:
{
  "stage": "response",
  "tool_name_glob": "shell.exec",
  "verdict": "deny",
  "args_match_json": "{\"clauses\":[{\"path\":\"$.command\",\"op\":\"regex\",\"value\":\"rm\\\\s+-rf|mkfs|dd\\\\s+if=\"}]}"
}
args_match_json は JSON エンコードされた文字列です;そのデコードされた値は §2 で示した { "clauses": [ … ] } オブジェクトです。
4

依存する前にドライランする

Test タブを使って、サンプルの shell.exec 呼び出しに対してルールを評価します。判定、マッチしたルール、理由を返します — 何も ディスパッチされず、何も永続化されません。
これで "command": "ls -la"shell.exec は以前と同様に流れ、"command": "rm -rf /var" は deny されます。response 上の deny は、モデルがツールエラーを見て反応できるように します — 別のツールを選ぶ、ユーザーに尋ねる、あるいは停止する — クラッシュする代わりに。
呼び出しを許可しつつ、ブロックする代わりに漏れた値を剥がしたい?判定を sanitize に 切り替えます。サニタイズは句がマッチしたものをリダクトしません — 別のリダクタ (openai_keyanthropic_keyssn_us といった名前付きプリセットと、独自のカスタム 正規表現)を引数文字列に対して実行し、各ヒットを [redacted:…] トークンで置き換え、 クリーニングされた呼び出しを転送します。args_match_json 句は依然としてルールが発火 するかどうかを決定します;サニタイザは何がスクラブされるかを決定します。 引数のサニタイズを参照。サニタイズは ツール呼び出しの引数のみをリダクトします — ツールが返すコンテンツは決して触りません。

6. 句はフェイルクローズする — リクエストではなくルールが

句が評価できない場合 — パスが解決しない、引数が不正な形、正規表現 / CIDR が無効 — 句は false に評価され、ルールは単に発火しません。呼び出しは次のルールまたは ポリシーの default_verdict に落ちます。壊れた句は決して自動 deny せず、リレーを 決して乱しません。
評価できない句はそのルールをマッチしないようにするため、句が特定の方法で失敗する ことに決して頼らないでください。「危険なものすべてを捕捉する」ルールは、独自のツール グロブを持つ明示的な deny として作成し、引数句は許可を絞るために使ってください — 最後の防衛線としてではなく。

7. 句をルールの残りと組み合わせる

引数句はルールが表現する他のすべてとスタックします — それらはいくつかの中の 1 つの AND された条件です:
組み合わせ先効果
tool_name_glob句はツール名がマッチした後にのみ実行 — 名前が先、引数が後。
skill_name_glob所有スキルによって同じツールの引数を異なってゲート(例:community.* でより厳格)。
verdict句を deny だけでなく denysanitizepending_approvalcap_cost と組み合わせ。
複数の句すべて成立しなければならない — regex コマンドチェックと in 環境チェックを組み合わせ、deny を厳密にスコープ。
各組み合わせが生成する正確な判定セマンティクスについては 判定を、保留された呼び出しがどう解決するかについては 承認を参照してください。

8. これがどこに収まるか

ファイアウォールルール

完全なルールリファレンス — グロブ、句、サニタイザ、egress、シーケンス。

引数クックブック

一般的な危険な形のためのコピペ args_match_json レシピ。

ファイアウォールステージ

なぜ引数句が inbound ではなく responsemcp に存在するか。

ツールをブロック

どの引数も安全でないとき、ツールを完全に deny。
より広い全体像については、 危険なツール呼び出しOrcaRouter がどう検査するかを 参照してください。