每个会话都在且只在一个权限姿态下运行。这是你要设的最重要的开关,因为它决定的是:当 agent 想做点什么(而不是读点什么)时,会发生什么。
/permission readonly这个切换在回合进行中也能用。姿态属于会话 —— 谨慎的选择不需要变成一次全局决策。
五种模式
| 模式 | 读 | 写、shell、未知工具 |
|---|---|---|
readonly |
预批准,包含可判定为只读的 shell | 直接拒绝 —— 没有提示,也没有绕过 |
workspace_write |
预批准 | 走审批提示 |
interactive |
预批准 | 走审批提示,包含有副作用的检查类操作 |
auto |
预批准 | 每次调用交给决策模型判断;被拒是引导信号,不是错误 |
yolo |
预批准 | 预批准 —— 审批提示根本不出现 |
其中三个值得展开。
readonly:不弹提示,也没有例外。它不需要 UI,也不需要人:改文件和只读之外的 shell 一律拒绝。审阅类任务、汇报类任务、以及团队放量的第一周,用它。
auto:语义闸门。每个非只读调用都交给决策模型;看起来有风险的操作、或者授予概率偏低的,会被拒。它没有确定性兜底:没有决策模型就组装不起来,/permission auto 也会拒绝切换。后端用 /decision 指定 —— 见模型。
yolo:只管工具执行。它从不批准提交上来的计划;计划是否通过,仍然归评审流程管。
“批准”记住了什么
当提示被回答为本会话内允许时,这次授权会在该 agent 生命周期内被缓存 —— 不落盘:
- 写类工具和未知工具按工具名缓存 —— 批准过一次
edit,之后所有edit都算批过 - shell 工具按命令段缓存:命令按
&、|、;和换行切段,每段以第一个词为作用域,所以批准了moon check不等于批准同一条管线里的rm -rf
新会话从空的授权缓存开始。
各入口怎么设
| 入口 | 方式 |
|---|---|
| 终端 | /permission <mode> |
| 编辑器(ACP) | 会话配置项 permission,或启动时的 CETAS_PERMISSION_MODE |
| 自动化 | --permission <mode>,或 --yolo |
| 启动时未设置 | ACP 入口默认 yolo |
CETAS_PERMISSION_MODE 只在一个方向上宽容:取值不认识就警告一次、退回 workspace_write。笔误永远不会把姿态放宽。
一条不需要开会的放量路径
- 所有人先
readonly。把阅读行为验证一遍,确认答案值得照着做。 - 把
workspace_write给那些明确要求动手的人。从这刻起每次写都会先提示一次,这些提示会慢慢养成评审习惯。 - 想要“引导”而不是“确认”的团队,上
interactive或auto。auto需要决策模型,所以这一步正是/decision派上用场的地方。 yolo只给无人值守、有边界的工作 —— 带readonly的 CI,或者任务非常窄的专用自动化。
要避免的失败模式是“因为安静所以从 yolo 起步”——出事之前,它一直是安静的。