cap_cost 如何解析,以及为什么 audit 是你从之起步的默认值。
关于判定在规则语法中的位置参见
防火墙规则;关于在创建策略时挑选一个默认
判定参见 创建与绑定。
1. 六个规则判定
一条规则恰好产生六个判定之一。在控制台规则编辑器中编写它们;引擎按 优先级顺序遍历规则,首个匹配生效。allow —— 放行该调用,会被记录
allow —— 放行该调用,会被记录
该调用原封不动地继续。它仍会作为一个
allow 落入
事件信息流,因此你保留一份审计
追踪而不拦截任何东西。把它用作一条默认拒绝策略中的明确许可。audit —— 放行,但记录以供审查
audit —— 放行,但记录以供审查
与
allow 流量结果相同,但该调用被标记为你想要观察的东西。这也是
默认判定开箱即用所落到的值——观察一切,不拦截任何东西,直到你
准备好执行。deny —— 拦截该调用
deny —— 拦截该调用
该调用永远不会到达工具。在
inbound 执行面上中继返回 HTTP 400,
带有错误码 firewall_blocked,点名工具和原因;在 mcp 执行面上它
作为一个工具错误返回,因此模型能作出反应。参见
拦截的表现形式。sanitize —— 脱敏参数,然后转发
sanitize —— 脱敏参数,然后转发
从工具调用参数(智能体放进一个
command 或 body 字段里的一个
密钥或 PII)中脱敏匹配的子串,并转发清理后的调用。它只脱敏参数——
绝不脱敏工具返回的内容。在 inbound 执行面上还没有调用时参数,所以
sanitize 升级为一次 deny。参见
脱敏响应。pending_approval —— 为人工挂起
pending_approval —— 为人工挂起
把该调用变成一次带外审查。中继返回 HTTP 400,带有码
firewall_approval_pending 和一个审批 id;该调用不会到达工具。一名
审查者在控制台中或通过 webhook 回调解决它,智能体携带一个一次性的
审批头重新提交。参见 审批。影子模式抹平执行。 在 影子模式 下,
每个执行性判定(
deny、sanitize、pending_approval,以及一个解析为
deny 的 cap_cost)都被降级为 audit,原因前缀为 [shadow] would …。
以这种方式上线一条执行性策略,并在把它切换到实时之前观察事件信息流。2. 默认判定
默认判定(策略上的default_verdict)是当没有规则匹配一次工具调用
时策略所做的事。它是你姿态的底线,并且与一个规则判定不同,它只接受
三个值:
default_verdict | 当没有规则匹配时…… |
|---|---|
audit (默认) | 放行该调用,但记录它。安全的起点。 |
allow | 放行并记录,无审查记录。 |
deny | 拦截任何规则没有明确允许的东西——一种默认拒绝姿态。 |
audit:它观察每一次工具调用,在你添加执行性规则
之前不拦截任何东西。三个仅限规则的判定——sanitize、pending_approval
和 cap_cost——不能作为默认值;默认判定是一个覆盖式回退,而那些判定
只在限定到一个特定匹配时才有意义。
3. cap_cost 解析为 allow 或 deny
cap_cost 是唯一一个不会出现在你事件中的判定。你编写一条带有
cap_cost_cents 上限的规则,但在评估时引擎在事件被记录之前把它解析为一个
具体的 allow 或 deny——所以
事件信息流 永远不携带一个字面的
cap_cost 判定,只有智能体实际看到的 allow/deny。
该上限是按智能体运行计的:引擎把该运行累积的花费与你的上限比较。
- 在上限之下 → 解析为
allow。(在内部这被当作非匹配处理,因此 评估会继续到下一条规则,而不是让cap_cost以首个匹配赢得一个许可。) - 在上限之上 → 解析为
deny,原因点名该运行的总额相对于上限。这是 终端的、断路器式的结果。
4. 一个判定是如何被选中的
对于任何一次工具调用,无论哪个判定胜出,解析都是相同的:1. 解析策略
1. 解析策略
网关挑选绑定到发起调用的密钥的策略(
firewall_policy_id),或工作区
默认值——参见
解析。2. 遍历规则,首个匹配生效
2. 遍历规则,首个匹配生效
规则以
priority ASC 顺序运行。第一条其执行面、工具 glob、可选参数
子句以及可选 egress 范围全部匹配的规则产生判定。3. 无匹配 → 默认判定
3. 无匹配 → 默认判定
如果没有规则匹配,则应用策略的
default_verdict——除非你改过它,
否则为 audit。4. 技能执行叠加于其上
4. 技能执行叠加于其上
如果该调用归属于一个受治理的 技能,则一个
block 模式的技能强制 deny,而一个 quarantine 模式的技能把任何
未到 deny 程度的判定升级为 pending_approval。5. 一次 deny 的成本与重试行为
inbound 执行面上的一个防火墙判定在上游模型调用之前触发,所以那里的
一个 deny 不消耗任何模型 token。该错误被标记为 skip-retry——重新
运行同一个被拦截的调用只会再次被拦截,所以网关告诉客户端不要重试它。
这与一次 防护栏 拦截不同,
后者筛查提示词/响应的文本(PII、密钥)而非工具动作,并返回它自己的
guardrail_blocked 错误。一个请求可以穿过两个平面。
接下来去哪里
创建并绑定一条策略
挑选一个默认判定并把一条策略绑定到一个密钥。
封顶成本
编写一个花费上限以及它如何按运行解析。
影子模式
在你衡量影响时把每个执行性判定降级为审计。
规则参考
一个判定背后的完整匹配语言。
