跳转到主要内容
防护栏筛查流经模型的文本防火墙则治理智能体所采取的 动作——它调用的工具、它访问的 MCP 服务器、它加载的技能, 以及它通信的主机。它是 防护栏 在动作层的 对等物:相同的工作区限定范围、相同的”绑定一次”模型、相同的 “策略存在于网关而非你的应用”承诺。 本页是概念概览和操作参考。另有三篇配套页面深入讲解 各个组成部分:

规则

匹配语言——工具 glob、参数子句、egress 列表、 sanitizer 以及序列。

MCP 服务器

在单一受审计的网关后注册并治理 Model Context Protocol 服务器。

技能

在你的智能体安装的能力运行之前,先扫描并为其评定风险分。

1. 什么是防火墙

AI 智能体不只是生成文本——它会行动。它会调用 shell.exec、 查询 db.query、抓取一个 URL、加载一个社区技能,或将一次工具 调用通过第三方 MCP 服务器路由出去。这些每一项都是带有真实世界 后果的动作,而提示词级别的防护栏看不到它们。 防火墙是一个工作区级别的、命名的策略,网关会在每一次 工具调用时对其进行评估。你编写一次策略,将一个 API 密钥绑定到 它(或将某个设为工作区默认),从那之后,该密钥发出的每一次 工具调用都会被对照策略进行检查——它到达工具之前 每条策略是一个有序的规则列表。一条规则决定一件事—— 它适用于哪些工具调用(一个工具名 glob,可选地限定到某个 技能和某个执行面),以及如何处理它们(一个判定(verdict): allow、audit、deny、sanitize、hold for approval 或封顶成本)。引擎 按优先级顺序遍历规则,首个匹配生效(first match wins),如果 没有任何规则匹配,则回退到策略的默认判定。 编辑一条策略会在下一次调用时对绑定到它的每个密钥生效。 无需重新部署。无需修改智能体代码。策略在网关上执行——你的 智能体像以前一样继续发出工具调用。
检测发生在网关上,于首次使用时。 防火墙位于 LLM 中继路径上, 而不在你智能体的包管理器或文件系统内部。智能体自行安装的某个 工具、MCP 服务器或技能,会在它的调用首次穿越网关时被捕获—— 而不是在安装时。这是有意为之:它是那个能看到每一个供应商、 每一个智能体、每一次工具调用的唯一咽喉点,无论该能力是如何 进来的。

2. 四个执行面(surface)

每一次工具调用都恰好对照一个**执行面(surface)**进行评估—— 即防火墙在请求生命周期中看到它的那个点:
执行面它看到什么
inbound智能体在请求上向模型*声明(advertise)*的工具(工具定义)。让你能在模型甚至还没选中之前就拦截一个危险工具。
response模型在其回复中*发出(emit)*的 tool_calls
mcp通过 防火墙 MCP 网关 派发,或经由 SDK hook 评估的一次 tools/call
egress某个工具报告的一个出站网络目的地(host / IP / CIDR)——即 SSRF 与数据外泄的执行面。
没有指定 stage 的规则适用于所有执行面;当某个判定只在一个 执行面上有意义时(例如 egress 白名单),就把规则钉在那一个 执行面上。

3. 核心概念

概念定义
策略(Policy)一个命名的、工作区级别的规则集合。具有 enabledis_default、一个 default_verdict 和一个 shadow_mode 标志。
规则(Rule)策略内的一项检查:一个优先级、一个工具/技能匹配、一个可选的执行面、一个可选的参数谓词,以及一个判定。参见 规则
判定(Verdict)一条规则(或默认值)产生的动作——参见 §4
默认判定(Default verdict)当没有规则匹配时应用。为 allowaudit(默认)或 deny 之一。
影子模式(Shadow mode)策略进行评估和记录,但永不拦截——每个执行性判定都被降级为 audit,原因前缀为 [shadow] would …。这是你的安全上线开关。
观察模式(Observe mode)一个工作区级别的设置。当一个请求解析到没有策略且观察模式开启时,该调用被放行但记录为一个覆盖缺口(gap)——这正是 Discovered-tools 视图的数据来源。

限定范围与解析

策略的解析方式与防护栏和 API 密钥完全相同——当你有活跃工作区 时为工作区共享。对于任何一次工具调用,网关按此顺序解析策略:
  1. 密钥绑定——如果发起调用的密钥有 firewall_policy_id,则 该策略适用(当它存在且已启用时)。
  2. 工作区默认值——否则,工作区已启用的 is_default 策略适用。
  3. 两者皆无——不执行。在观察模式开启时,该调用被放行 并记录为一个缺口;在它关闭时,该调用被静默放行(与从未 启用该功能的工作区字节相同)。
每个工作区最多只能有一个策略作为默认值;晋级一个新默认值会在 同一事务中降级旧的那个。
对未知故障开放,对模糊故障关闭(Fail-open on the unknown, fail-closed on the ambiguous)。 如果策略解析遇到瞬时错误,网关会 降级为观察/放行,而不是让流量中断。但在执行就会让规则 失效的情形下——一份没有可用目的地的 egress 报告、一个不可达 的审批存储、一个无法解析归属的技能——引擎会故障关闭 (fail closed)(deny 或 hold)。可用性得以保留;在真正重要的 情形下安全性不会被静默跳过。

4. 判定(Verdict)

一条规则(或默认判定)产生以下之一:
判定它做什么
allow放行该调用。会被记录。
audit放行,但记录以供审查。默认的 default_verdict——观察一切,不拦截任何东西,直到你准备好。
deny拦截该调用。智能体会看到一个工具错误(或在 inbound 执行面上看到 HTTP 400)。
sanitize从工具参数中脱敏匹配的子串(密钥、PII),并转发清理后的调用。参见 sanitizer。在 inbound 执行面上——此时还没有调用时参数——sanitize 会升级为拦截。
pending_approval为人工审批挂起该调用。智能体会得到一个”已挂起(held)“响应;一名审查者带外批准或拒绝;智能体携带一个一次性审批令牌重新提交。参见 §7
cap_cost一旦该智能体运行累积的花费超过某条规则的分(cents)上限,就拒绝。这是针对失控循环的断路器。
在影子模式下,deny / sanitize / pending_approval 都被降级为 audit,这样你就能在策略改变流量之前先衡量它的影响。

5. 一次工具调用是如何被评估的

  1. 一次工具调用到达网关(在 inbound 上被声明、在响应中被发出、 通过 MCP 网关被派发,或作为 egress 被报告)。
  2. 引擎解析活跃策略(§3)。
  3. 它按优先级顺序遍历策略的规则(优先级越低越先;同级 由规则 id 打破平局)。当一条规则的执行面、它的工具名 glob、 它可选的技能名 glob、它可选的参数子句以及它可选的 egress 范围全部匹配时,该规则才匹配。
  4. 首个匹配生效 → 该规则的判定适用。如果没有规则匹配 → 策略的 default_verdict
  5. 如果该调用归属于一个受治理的 技能, 则技能的执行模式会被叠加在其上——一个处于 block 模式的 技能强制 deny;一个处于 quarantine 模式的技能会把任何 未到 deny 程度的判定升级为 pending_approval
  6. 该决策被记录为一个防火墙事件(除非它是一次 dry run),并 关联到对应的智能体运行和会话。

6. 拦截的表现形式

inbound 执行面上一次被拒绝的调用返回 HTTP 400,带有一个 OpenAI 形态的错误体、错误码 firewall_blocked,以及一条点明 工具和原因的消息——例如 tool "shell.exec" blocked by firewall: destructive shell command。该错误携带结构化的 metadata (原因码、风险因子、得分),并被标记为 skip-retry(重新 运行同一个调用只会再次被拦截)。 通过 MCP 网关派发的一次调用会作为一个工具错误firewall deny: <reason>)被拦截,而不是一次传输失败,因此 模型能看到这次拒绝并作出反应——换一个工具、询问用户,或者 停止——而不是崩溃。 一次被挂起的调用(pending_approval)返回 HTTP 400,带有 错误码 firewall_approval_pending 和一个客户端用于轮询的审批 id。

7. 人工审批(HITL)

一个 pending_approval 判定会把一次工具调用变成一次带外审查:
  1. 引擎将一条审批记录入队,并返回一个携带其 id 的”已挂起” 响应;该调用不会到达工具。
  2. 一名审查者解决它——从控制台(Developer+),或通过一个 HMAC 签名的 webhook 回调到你自己的审批系统。
  3. 你的智能体(或 MCP SDK)轮询该审批 id;一旦获批,它就 携带一个一次性的 X-OrcaRouter-Firewall-Approval 头重新提交 原始调用,网关便放行这一次。
决策是首个写入者生效(first-writer-wins)且幂等的。如果底层 规则在挂起后被编辑过,富化信息会标注 rule_changed,让审查者 知道上下文已发生变化。

8. 自治级别(Autonomy levels)——管控你整体姿态的一个开关

逐条调优策略是精确的路径;自治级别则是快速的那条。一个 单一控制项会在一个事务中原子地替换你工作区的防火墙以及 防护栏姿态,并支持一键撤销:
级别姿态
tight拦截破坏性 shell、参数中的密钥以及 SSRF egress(默认 deny);开启 PII Shield + Secrets Blocker 防护栏;观察模式关闭。
balanced审计破坏性 shell、flag PII;观察模式关闭。推荐的起始姿态。
permissive无执行性策略,无防护栏;观察模式开启,因此你仍能看到一切。
撤销会从审计快照恢复到此前的确切状态。

9. 异常检测(Anomaly detection)

在静态规则之外,防火墙会学习每个工作区正常的工具使用形态, 并在一个查看者可读的信息流上标记偏离:
  • 速率 / 成本尖峰——按工具的活动会对照一个学习到的 周内小时基线(hour-of-week baseline)(一个 14 天滚动平均) 进行评分,因此即便每次调用单独都被允许,“周日凌晨 3 点 100 次 db.query 调用”也会显得突出。
  • retry_loop——一个智能体反复猛击同一个失败的工具。
  • novel_path——本工作区从未做过的一次工具到工具的转移。
该信息流只报告工具名、脱敏后的令牌 id 和计数。你可以在调查 期间将一个异常**贪睡(snooze)**最多 7 天。

10. 可观测性

防火墙会留下可供你行动的踪迹,全部为工作区限定:
视图它给你什么
Events每一次评估,可按判定、执行面、工具、运行和会话过滤。这是其他一切背后的原始记录。
Runs & sessions按智能体运行或对话汇总的事件——判定细分、不同的工具与模型、首次/末次出现。即”这个智能体究竟做了什么”的视图。
Discovered tools工作区见过的每一个工具,标记为 covered(有规则适用)或 gap(没有)。从真实流量出发驱动策略编写。
Simulate在你应用之前,预览某个自治级别改变什么。
Test针对一个样本工具调用对一条策略做 dry-run,看到判定、匹配到的规则和原因——不持久化任何内容,不派发任何内容。
Audit每一次策略、规则和设置变更都会在变更提交后写入一条审计行(工作区 + 中央)。密钥和规则 blob 永不被记录。

11. 与网关其他部分的关系

模块如何与防火墙组合?
防护栏互补的平面。防护栏筛查提示词/响应的文本;防火墙治理工具动作。两者都可作用于一个请求。自治级别会一次性设置两者。
路由相互独立。路由挑选模型/通道;无论由哪个模型来处理,防火墙都会判定那些工具调用。
API 密钥一个密钥通过 firewall_policy_id 绑定到一条策略;绑定关系存在于网关的密钥上。没有绑定时回退到工作区默认值。
MCP 网关防火墙就是 MCP 网关——你注册的每一个服务器都会把它的 tools/call 通过引擎派发。
技能一个受治理技能的执行模式会叠加在规则判定之上,因此即便没有规则点名一个被隔离技能的工具,它依然会被挂起。

12. 将一个智能体连接到防火墙网关

一次工具调用有两种方式到达引擎:
  • MCP 网关——把你的 MCP 客户端(Claude Desktop、Cursor、某个 智能体框架)指向 https://api.orcarouter.ai/api/v1/firewall/mcp。 网关以 <server>.<tool> 命名空间暴露每一个可达的已注册服务器 的工具,并就地评估每一次 tools/call。参见 MCP 服务器
  • Evaluate hook——在派发一次工具调用之前,从你自己的智能体 循环中调用 POST /api/v1/firewall/evaluate,并根据判定采取行动。
两者都需要一个 firewall-gateway-scoped 令牌——为此目的专门 铸造的一个 API 密钥。普通密钥在这些路由上会得到 403

13. API 参考

所有控制台路由都通过工作区上下文进行工作区限定,并一致地 执行 RBAC:读取以及 test/simulate 沙箱对每个成员开放;写入 需要 Developer+

策略与设置

方法与路径角色用途
GET /api/workspace/firewall/settingsMember读取工作区防火墙设置(观察模式、默认值)。
PUT /api/workspace/firewall/settingsDeveloper+更新设置。
GET /api/workspace/firewall/policiesMember列出策略(带规则数 + 绑定密钥数)。
GET /api/workspace/firewall/policies/:idMember单条策略详情。
POST /api/workspace/firewall/policiesDeveloper+创建一条策略。
PUT /api/workspace/firewall/policiesDeveloper+更新一条策略。
DELETE /api/workspace/firewall/policies/:idDeveloper+删除一条策略(若仍有密钥绑定则返回 409)。

姿态、预设与沙箱

方法与路径角色用途
GET /api/workspace/firewall/presetsMember内置规则预设。
POST /api/workspace/firewall/autonomyDeveloper+应用一个自治级别。
POST /api/workspace/firewall/autonomy/undo/:audit_idDeveloper+撤销一次自治变更。
GET /api/workspace/firewall/simulateMember预览一个自治级别(?level=)。
POST /api/workspace/firewall/testDeveloper+针对一个样本工具调用对一条策略做 dry-run。

可观测性

方法与路径角色用途
GET /api/workspace/firewall/discovered-toolsMember见过的工具,标记 covered / gap。
GET /api/workspace/firewall/eventsDeveloper+列出防火墙事件(可过滤)。
GET /api/workspace/firewall/events/by-request/:request_idDeveloper+一个请求的事件。
GET /api/workspace/firewall/events/aggregateDeveloper+运行 / 会话汇总。
GET /api/workspace/firewall/trace/by-runDeveloper+一次运行的 trace 节点(?run_id=)。
GET /api/workspace/firewall/anomaliesMember异常信息流(?window=)。
POST /api/workspace/firewall/anomalies/snoozeDeveloper+贪睡异常信息流。
规则、MCP 服务器和技能各自有独立的端点——参见 规则MCP 服务器技能

网关(机器对机器)

这些运行在一个 firewall-gateway-scoped 令牌上,而非控制台会话:
方法与路径用途
POST /api/v1/firewall/evaluate对一次工具调用做派发前判定。
POST /api/v1/firewall/evaluate_plan对一个多步计划做执行前检查。
ANY /api/v1/firewall/mcp统一的 MCP 网关端点。
GET /api/v1/firewall/approvals/:id轮询一次被挂起调用的审批状态。
POST /api/v1/firewall/approvals/:id/callbackHMAC 签名的审批回调。

14. FAQ

观察模式关闭时,行为与从未启用该功能的工作区字节相同 ——不会拦截或记录任何内容。在观察模式开启时,该调用 被放行但记录为一个覆盖缺口,因此它会出现在 Discovered tools 中。
打开影子模式(shadow mode)。策略会完全像在生产中那样 进行评估和记录,但每个执行性判定都被降级为 audit,原因 前缀为 [shadow] would …。观察 events 和 runs 视图,确认它 在你预期的内容上触发、在你不预期的内容上不触发,然后关闭 影子模式以开始执行。
一次 inbound 拦截发生在上游模型调用之前,因此不消耗任何 模型 token。Audit / allow 判定不改变计费。一条 cap_cost 规则本身就是一个计费控制——一旦该运行的花费越过你的分 上限,它就拒绝。
两者都用,用于不同的层。防护栏筛查提示词和响应中的文本 (PII、密钥、越狱)。防火墙治理智能体所采取的动作(哪些 工具、哪些 MCP 服务器、哪些主机)。一个请求可以同时穿过 两者。tight 自治级别会把它们一起配置好。
防火墙在穿越网关的工具调用上执行——中继路径、MCP 网关 以及 evaluate hook。一个由你的智能体完全在它自己进程内执行、 从不接触网关的工具,在防火墙的视野之外。设计目标是让网关 成为那些重要调用(模型中介的工具、MCP 派发、网络 egress)的 唯一受审计路径;把那些路由经过它,它们就受到治理。

另请参阅

想更深入地了解智能体安全?**保护你的智能体(零信任)**指南会把这项功能放进一套零信任工作流中。

保护你的智能体(零信任)

零信任智能体防火墙操作手册——工具白名单、参数检查和 egress 管控。

安全智能体基线

一个开关,同时设定你的防火墙和防护栏姿态。