Skip to content
FunCoding

Search

Search docs, Skills and MCP

策略规则、审批模式与持久批准

编写 TOML 条件和决定,控制交互环境及跨模式的授权范围。

This page has not been translated into English yet. The original Chinese version is shown below.

一条规则由匹配条件、决定和优先级组成;所有指定条件同时满足才生效。以下示例对文件写入类工具要求确认:

[[rule]]
toolName = ["write_file", "replace"]
decision = "ask_user"
priority = 100
modes = ["default", "autoEdit"]

字段

字段用途
toolName工具名或名称数组;* 可匹配全部工具
decisionallow、deny、ask_user
priority0–999 的整数,同层内较高者优先
argsPattern匹配稳定序列化的工具参数 JSON
modes限制审批模式,未设或空数组表示全部
interactivetrue 仅交互、false 仅无头,未设两者均适用
toolAnnotations工具元数据须包含的键值
denyMessage向用户和模型说明拒绝原因

工具名称存在不证明参数条件正确,应以实际工具 schema 的键为准。当前解析器仍兼容旧 deny_message,但它已弃用;新规则用 denyMessage。

模式名称

策略 modes 使用 default、autoEdit、plan、yolo;其中 autoEdit 不同于 CLI --approval-mode auto_edit 的拼写。没有 modes 的规则也会影响 Plan,所以用户级 allow 可能扩大计划模式的默认边界。

默认只读工具通常允许,写工具通常询问;Auto-Edit 对部分写操作自动批准,YOLO 的内置规则允许全部工具,但更高层规则仍可约束。禁止 YOLO 不意味着所有只读工具必须逐次询问。

持久批准的范围

选择 Allow for all future sessions 时,官方规则按从受限到宽松的顺序扩展:

批准时模式生效模式
planplan、default、autoEdit、yolo
defaultdefault、autoEdit、yolo
autoEditautoEdit、yolo
yoloyolo

这解释了为何在默认模式批准的命令进入 Plan 后仍可能询问。关闭或重新审阅持久批准时,不应仅检查当前提示框,还需检查保存的策略。

无头执行

ask_user 在非交互环境变为 deny;需要脚本执行的规则应明确限定范围。interactive = false 只是条件,不会自动批准所有工具。Plan 工具转换还有独立的无头行为,不要混为同一种审批。