跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

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

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

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

[[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 工具转换还有独立的无头行为,不要混为同一种审批。