pending_approval を返すと、ツール呼び出しが保留され、
エージェントが待ちます。デフォルトでは、レビュアーがコンソールからその保留をクリアします。
ファイアウォール承認 webhook は同じゲートをあなたのシステムに配線します:呼び出しが
保留された瞬間にゲートウェイがあなたのエンドポイントに署名付き通知を POST し、あなたの
システムがそれを解放するために HMAC 署名付き決定を POST して返します — コンソールの
席なし、人間のポーリングなし。
これはヒューマンインザループの非同期(コールバック)半分です。保留された呼び出し、判定、
コンソールの解決パスは承認の解決と
ファイアウォールリファレンスで
カバーされています;このページは webhook の配線だけです。
webhook はファストパスの先触れであり、記録のシステムではありません。保留された
呼び出しに対するリレーのロングポールが権威あるゲートです — 通知がドロップされたり受信側が
ダウンしたりしても、保留は依然として有効で、レビュアーがコンソールからそれをクリア
できます。webhook の設定は、それを解決するプログラム的な方法を追加するだけです。
1. いつファイアウォール承認 webhook を使うか
ヒューマンインザループのファイアウォールゲートが、ボタンをクリックする人以外の何かで 解決されなければならないときに手を伸ばします:独自の承認 UI にルーティング
保留されたツール呼び出しを Slack、PagerDuty、または内部レビューキューにプッシュし、
チームがすでに作業している場所でそれらを解決します。
プログラム的なポリシー
リードレプリカに対する保留された
db.query を自動承認し、prod に対するものを
自動拒否 — あなたのコードが決定し、ゲートウェイが強制します。2. コンソールで設定する
両半分はひとつのワークスペース設定に存在します。Firewall → Settings を開き、2 つの フィールドを記入します(Developer+ のアクション — 設定の書き込みはロールゲート されています):承認 webhook URL — どこで通知するか
承認 webhook URL — どこで通知するか
呼び出しが保留されたときに POST する
https:// エンドポイント。HTTP は拒否され、
URL は保存時に SSRF プリフライトを通されるため、ループバック、プライベート範囲、
クラウドメタデータ宛先は保存される前に拒否されます。非同期パスを完全に無効化するには
空のままにします。共有シークレット — 両側がどう認証するか
共有シークレット — 両側がどう認証するか
書き込み専用の HMAC シークレット(最大 255 文字)。それは私たちのアウトバウンド
通知に署名しかつあなたのインバウンドコールバックを認証します。コンソールは
それを決してエコーバックしません — 一度保存すると、シークレットが設定されている
ことだけを見られます;新しい値を書き込んでローテートします。
3. 私たちがあなたに送る通知
呼び出しが保留されると、私たちは署名付き JSON エンベロープをあなたの URL に POST します:approval_id と相関付けるための識別子を運び、ツール引数は決して運び
ません。引数の詳細はApprovals キューと
ファイアウォールevents ログに存在します。
4. あなたが返して POST するコールバック
保留を解放(または拒否)するには、通知からのapproval_id とともに決定をコールバック
エンドポイントに POST します:
decision は approved または rejected です — 他の値は受け入れられません。
reason はオプションで、解決された承認の監査証跡に表示されます。
コールバックは最初の決定が勝ち、冪等です:誰が最初に解決しても — あなたの webhook
またはコンソールのレビュアー — 結果を設定し、すでに解決された承認に対する繰り返しの
コールバックは 200 を返すため、あなたのシステムは再試行を停止します。
5. 保留された呼び出しを解放する
承認を解決しても、あなたのためにツール呼び出しを再生はしません — ゲートを持ち上げて、 エージェントがそれを再発行できるようにします。エージェントランタイムは:- 保留の状態を
GET /api/v1/firewall/approvals/:id(リレーキーやコンソールセッションではなく ファイアウォールゲートウェイスコープのキー)でpendingを離れるまでポーリングします。 approvedで、単回使用のX-OrcaRouter-Firewall-Approvalヘッダーを運んで元の ツール呼び出しを再送信します — ゲートウェイはその 1 つの呼び出しを通し、 トークンが消費されます。
呼び出しが保留された後に基礎となるルールが編集された場合、
Approvals キューはルールがその後変更された
ことをフラグし、今や古くなった「held because…」句を抑制するため、コンソールの
レビュアーが呼び出しを保留したものにもはやマッチしない来歴に基づいて行動することは
ありません。
6. 配線を検証する
依存する前のクイックなエンドツーエンドチェック:| ステップ | 何をするか | 期待される結果 |
|---|---|---|
| 呼び出しを保留 | pending_approval 判定のルールをトリガー | 400 firewall_approval_pending |
| 通知 | エンドポイントを監視 | 署名付き firewall.approval.pending POST が到着 |
| コールバック | 署名付きの { "decision": "approved" } を POST | 解決された状態とともに 200 |
| リプレイガード | コールバックを再度 POST | 200、すでに解決済み(二重適用なし) |
7. これがどこに収まるか
承認の解決
コンソールレビュアーのパスと完全な保留呼び出しのライフサイクル。
判定
pending_approval がどこから来るか、そして他の判定とどう合成されるか。ゲートウェイキー
ポーリング + 再送信フローが必要とするファイアウォールゲートウェイスコープのキーを発行。
過剰なエージェンシー
ヒューマンインザループのゲートが封じ込めるために作られた脅威。
