策略规则、审批模式与持久批准
编写 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 | 工具名或名称数组;* 可匹配全部工具 |
decision | allow、deny、ask_user |
priority | 0–999 的整数,同层内较高者优先 |
argsPattern | 匹配稳定序列化的工具参数 JSON |
modes | 限制审批模式,未设或空数组表示全部 |
interactive | true 仅交互、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 时,官方规则按从受限到宽松的顺序扩展:
| 批准时模式 | 生效模式 |
|---|---|
| plan | plan、default、autoEdit、yolo |
| default | default、autoEdit、yolo |
| autoEdit | autoEdit、yolo |
| yolo | yolo |
这解释了为何在默认模式批准的命令进入 Plan 后仍可能询问。关闭或重新审阅持久批准时,不应仅检查当前提示框,还需检查保存的策略。
无头执行
ask_user 在非交互环境变为 deny;需要脚本执行的规则应明确限定范围。interactive = false 只是条件,不会自动批准所有工具。Plan 工具转换还有独立的无头行为,不要混为同一种审批。