1. 2 つのルートファミリー
コンソール — 設定する
/api/workspace/firewall/*。あなたのセッション / アクセストークン
(UserAuth)で認証され、アクティブなワークスペースにスコープされます。ポリシーを
作成し、イベントを読み、MCP サーバーを登録し、承認を解決します。すべてのアクションが
ロールゲートされています。ゲートウェイ — 強制する
/api/v1/firewall/*。ファイアウォールゲートウェイスコープのキー
(is_firewall_gateway が設定されたキー)で認証されます。エージェントや MCP
クライアントが実行時に呼び出すマシン間サーフェスです。通常のリレーキーはここで
403 を受け取ります。コンソールルートは
sk-orca-… リレーキーを決して取らず、ゲートウェイルートは
セッショントークンを決して取りません。これらを混同するのが、ファイアウォールを
初めて配線するときの最も一般的な 401/403 です。/v1/firewall/* 呼び出しに
属する唯一の sk-orca-… キーは、is_firewall_gateway をオンにして発行されたもの
です — スコープ、キー、ポリシーを
参照してください。2. ロール一覧
コンソールルートはあなたのワークスペースロールを解決し、それに応じてゲートします。 ツール呼び出しの来歴を運ばない読み取りは任意のメンバーに開放されています;書き込みと、 ツール呼び出し引数を公開するものは Developer+ を必要とします。| ロール | できること |
|---|---|
| Viewer / member | 設定、ポリシー、プリセット、Discovered tools、simulate、anomalies の読み取り。 |
| Developer+ | 上記すべてに加えて、すべての書き込み、events/runs/trace サーフェス、そして test ドライラン。 |
| Admin+ | 加えて、キーに is_firewall_gateway フラグを設定し、ゲートウェイキーの平文を読む。 |
3. コンソールからポリシーを設定する
コンソールルートは、ポリシーを作成し検査する方法です。すべてをダッシュボード UI で 設定します — これらはそれが呼び出すのと同じエンドポイントです。ポリシーと設定
| メソッドとパス | ロール | 目的 |
|---|---|---|
GET /api/workspace/firewall/settings | Member | 観察モード + カウント。 |
PUT /api/workspace/firewall/settings | Developer+ | ワークスペースのファイアウォール設定を更新。 |
GET /api/workspace/firewall/policies | Member | ポリシー一覧。 |
GET /api/workspace/firewall/policies/:id | Member | 単一ポリシー詳細。 |
POST /api/workspace/firewall/policies | Developer+ | ポリシーを作成。 |
PUT /api/workspace/firewall/policies | Developer+ | ポリシーを更新。 |
DELETE /api/workspace/firewall/policies/:id | Developer+ | ポリシーを削除。 |
POST /api/workspace/firewall/rules | Developer+ | ルールを追加。 |
PUT /api/workspace/firewall/rules | Developer+ | ルールを更新。 |
DELETE /api/workspace/firewall/rules/:id | Developer+ | ルールを削除。 |
姿勢、プリセット、サンドボックス
| メソッドとパス | ロール | 目的 |
|---|---|---|
GET /api/workspace/firewall/presets | Member | 組み込みルールプリセット。 |
GET /api/workspace/firewall/templates | Member | ユースケーステンプレートギャラリー。 |
POST /api/workspace/firewall/templates/apply | Developer+ | テンプレートを適用 → 1 ポリシー + そのルール。 |
POST /api/workspace/firewall/autonomy | Developer+ | 自律性レベルを適用(tight / balanced / permissive)。 |
POST /api/workspace/firewall/autonomy/undo/:audit_id | Developer+ | 監査スナップショットからのワンクリック取り消し。 |
GET /api/workspace/firewall/simulate | Member | レベルが何をブロックするか(?level=)。 |
POST /api/workspace/firewall/test | Developer+ | サンプル呼び出しに対してポリシーをドライラン。 |
可観測性
| メソッドとパス | ロール | 目的 |
|---|---|---|
GET /api/workspace/firewall/discovered-tools | Member | 見たツール、covered / gap とフラグ。 |
GET /api/workspace/firewall/events | Developer+ | ファイアウォールイベント一覧(フィルタ可能)。 |
GET /api/workspace/firewall/events/by-request/:request_id | Developer+ | 1 つのリクエストのイベント。 |
GET /api/workspace/firewall/events/aggregate | Developer+ | Runs / sessions ロールアップ。 |
GET /api/workspace/firewall/trace/by-run | Developer+ | 実行のトレースノード(?run_id=)。 |
GET /api/workspace/firewall/anomalies | Member | 異常フィード。 |
POST /api/workspace/firewall/anomalies/snooze | Developer+ | フィードをスヌーズ(≤ 7 日)。 |
MCP サーバー
エージェントが到達する Model Context Protocol サーバーを、単一の監査済みゲートウェイの 背後で登録します。クレデンシャルは暗号化して保存され、読み取り時にはマスクされます。| メソッドとパス | ロール | 目的 |
|---|---|---|
GET /api/workspace/firewall/mcp_servers | Member | 登録済みサーバー一覧。 |
GET /api/workspace/firewall/mcp_servers/:id | Member | サーバー詳細。 |
POST /api/workspace/firewall/mcp_servers | Developer+ | サーバーを登録(name 重複で 409)。 |
PUT /api/workspace/firewall/mcp_servers | Developer+ | サーバーを更新。 |
DELETE /api/workspace/firewall/mcp_servers/:id | Developer+ | サーバーを削除。 |
POST /api/workspace/firewall/mcp_servers/:id/probe | Developer+ | 到達可能性 + tools/list ハンドシェイク。 |
name、endpoint、auth_mode
(none / bearer / oauth / basic)、そしてヘルス status
(ok / degraded / down)を持ちます。フルライフサイクルとスキル隔離については
ファイアウォール MCPを参照してください。
4. ゲートウェイで強制する
これらは、あなたのセッションではなく、ファイアウォールゲートウェイスコープのキー上で 動作します。エージェントループまたは MCP クライアントが実行時に呼び出すものです。| メソッドとパス | 目的 |
|---|---|
POST /api/v1/firewall/evaluate | 1 つのツール呼び出しに対するディスパッチ前の判定。 |
POST /api/v1/firewall/evaluate_plan | マルチステッププランの実行前チェック。 |
ANY /api/v1/firewall/mcp | 統合された MCP ゲートウェイエンドポイント。 |
GET /api/v1/firewall/mcp_servers | ワークスペースの登録済みサーバーを列挙。 |
GET /api/v1/firewall/approvals/:id | 保留された呼び出しの承認状態をポーリング。 |
POST /api/v1/firewall/approvals/:id/callback | HMAC 署名付き承認コールバック。 |
ひとつの具体例:ツール呼び出しを評価する
エージェントがツールをディスパッチする前に、ゲートウェイに判定を尋ねます。リレーsk-orca-… キーではなく、ファイアウォールゲートウェイスコープのキーを渡します:
allow、audit、deny、sanitize、または
pending_approval。deny では呼び出しをスキップし、理由をモデルに表面化します;
sanitize ではゲートウェイが返すクリーニングされた引数を転送します(sanitize は
ツール呼び出しの引数のみをリダクトします — ツールが返すコンテンツは決して触りません);
pending_approval では下記の承認ループに入ります。
5. 承認ハンドシェイク(HITL)
pending_approval 判定は、呼び出しを人間のために保留します。保留中の HTTP エラーは
firewall_approval_pending です。それをクリアするのは、両方のルートファミリーに
またがる 3 ステップのループです:
レビュアーが保留を解決する
コンソールから(
PATCH /api/workspace/firewall/approvals/:id、Developer+)、
あるいはあなた自身のシステムが HMAC 署名付きコールバックを
POST /api/v1/firewall/approvals/:id/callback にポストします。コールバックは
HMAC をインラインで検証します — 他の認証は受け付けられません。エージェントが承認をポーリングする
ゲートウェイキーを使って
GET /api/v1/firewall/approvals/:id を、状態が
approved または rejected に変わるまでポーリングします。6. ブロックがどう見えるか
| 結果 | HTTP | コード |
|---|---|---|
| 拒否されたツール呼び出し(inbound サーフェス) | 400 | firewall_blocked |
| MCP ゲートウェイ経由で拒否 | tool error | firewall deny: <reason> |
| 承認のために保留 | 400 | firewall_approval_pending |
firewall_blocked は skip-retry とマークされています — 同一の呼び出しを再実行
しても再びブロックされるだけなので、リトライするクライアントはハンマリングする代わりに
バックオフします。完全なコードリストは
エラーコードにあります。
7. 関連リファレンス
ガードレール API
コンテンツポリシーのピア — テキストプレーンのための
/api/guardrail/* ルート。判定用語集
すべての判定と、それが呼び出しに何をするか。
Glob と JSONPath
tool_name_glob と args_match の背後にあるマッチング文法。コンプライアンス API
パック、署名付きレポート、レジデンシー、そして消去。
8. FAQ
なぜ私のリレーキーは /api/v1/firewall/evaluate で 403 を受け取るのか?
なぜ私のリレーキーは /api/v1/firewall/evaluate で 403 を受け取るのか?
ゲートウェイルートはファイアウォールゲートウェイスコープのキー —
is_firewall_gateway
を設定して発行されたもの(Admin+ のアクション) — を必要とします。通常のリレーキーは、
有効なものでも 403 を受け取ります。エージェントランタイム用に専用のゲートウェイ
キーを発行してください。viewer はファイアウォールイベントを読めるか?
viewer はファイアウォールイベントを読めるか?
いいえ。
events、events/aggregate、trace ルートは、レコードがツール呼び出し
引数の来歴を運ぶため Developer+ です。Viewer は設定、ポリシー、プリセット、
Discovered tools、simulate、異常フィードを読めます。保留された承認はどこで解決する — コンソールかゲートウェイか?
保留された承認はどこで解決する — コンソールかゲートウェイか?
どちらでも。人間がコンソールで
PATCH /api/workspace/firewall/approvals/:id(Developer+)経由で解決するか、
あなた自身のシステムが HMAC 署名付き決定を
POST /api/v1/firewall/approvals/:id/callback にポストします。どのパスが解決したかに
関わらず、エージェントは GET /api/v1/firewall/approvals/:id をポーリングします。sanitize はツールが返すものをクリーニングするか?
sanitize はツールが返すものをクリーニングするか?
いいえ。
sanitize 判定は、ツール呼び出しの引数のみをリダクトします — ツールが
返すコンテンツは決して触りません。inbound サーフェスでは、まだ呼び出し時の引数が
ないため、sanitize はブロックにエスカレートします。
ファイアウォールルールを参照してください。これらのコントロールがガードレールおよびゲートウェイの他の部分とどう構成されるかに ついては、AI エージェントのセキュリティと ガードレール vs ファイアウォールを 参照してください。
