下面的时序图展示了一次工具调用在系统中的流转。ASK 决策会连同自动生成的建议规则一起呈现给用户;接受建议后规则会被持久化,之后相同的调用不再询问:
决策矩阵
每次调用都自上而下依次经过相同的决策点,第一个给出裁决的决策点即为最终结果。下表按模式展示各决策点的产出:“跳过”表示该模式完全不咨询这一步;当某一步保持沉默(规则未命中,或工具返回PASSTHROUGH)时,评估继续向下,直到兜底:
各行的含义:
- ① / ② / ⑤ 规则:用户配置的匹配模式,拒绝与询问规则先评估,允许规则靠后。拒绝规则与询问规则在所有模式下始终生效(
DONT_ASK下询问规则转为 DENY,因为没有用户可以回答)。 - ③ 只读快速通道:如果本次调用在事实上是只读的(
check_read_only(tool_input)),在所有模式下都会自动放行。该判定针对每次调用,而非静态的工具标记:git status通过,写文件的 Bash 命令不通过,被标记为命令注入风险的命令永远不视为只读。 - ④ 工具
check_permissions:工具检查本次调用,返回 ALLOW、DENY、ASK 或 PASSTHROUGH。安全 ASK(bypass_immune=True)无法被第 ⑤ 步的允许规则静默,普通 ASK 可以。针对编辑操作的工作目录自动放行也在这一步发生。 - ⑥ 兜底:以上都未裁决时按模式收尾,这也是各模式性格的来源:询问(
DEFAULT/ACCEPT_EDITS)、拒绝(EXPLORE/DONT_ASK)、放行(BYPASS)。
常见场景
下面的示例展示了如何为常见部署场景配置AgentState.permission_context。每个示例把一种模式与一组规则结合,匹配特定的使用场景。
延伸阅读
权限模式
选择全局策略,查看各模式的完整决策流程。
权限规则
编写允许/拒绝/询问规则,运行时接受建议规则。
工具内置检查
只读判定、危险路径保护与自定义安全检查。
工具
权限系统所管辖工具的注册与管理。