Auto mode 别再死磕:拒绝一次就停,静默则退避
Auto mode 省的是确认点击,不是安全边界。以前有一类糟心体验:安全审查已经拒绝,或迟迟不给答复,会话却像卡住一样把同一动作砸个不停——烧额度、刷日志,还让人误以为「再等一下就会放行」。CLI 2.1.280 把这两条重试路径钉死了。
本文只谈「审查结果之后怎么停」;分类器跑在服务端、如何看 /status,见 Auto mode 服务端分类器。环境与 $defaults 仍看 Auto mode 配置。
拒绝一次:明确说「再试也没用」
当安全审查对某次动作给出拒绝 / 不愿审查的结论时,Auto mode 现在会:
- 只否决这一次(不再同动作连打)。
- 在结果里标明:重试不会改善结果。
对你意味着:看到这类提示,不要指望「再开一轮 Auto 就会翻盘」。该改的是权限规则、deny/ask 列表、沙箱范围,或换一条不踩红线的实现路径——而不是催模型硬撞。
静默无答复:退避,十次收工
另一类是安全检查没有给出可解析答复(超时、空响应、通道异常等)。旧行为容易表现为:不停 deny、没有停顿,会话像活死人。2.1.280 改为:
- 重试带退避(间隔拉大,降低空转)。
- 同一动作连续约十次仍无有效答复 → 结束本轮并给出说明,而不是无限循环。
实操建议:
| 你看到的现象 | 先做什么 |
|---|---|
| 「拒绝且提示重试无用」 | 查 /permissions、deny 规则、组织策略;改任务拆法 |
| 反复退避后停轮 | 查网络 / 代理 / 审查服务是否可达;看 /status 与调试日志 |
| 只在某些目录翻车 | 对照下文符号链接路径;确认写入目标是否在允许树外 |
CI 与 -p 头less 路径同样受益:失败应尽快以非零退出暴露,而不是在审查抖动里空转半小时。相关边界见 print / bare / CI。
顺带:符号链接写入按「落盘处」判权限
同版本还有一处和 Auto mode / acceptEdits / allow 规则强相关的修复:
经符号链接路径的写入,按真实落盘位置(in-tree 拼写)来判断,而不再被「链接看起来还在仓库里」误导。
以前可能出现:提示里显示的是仓库内某路径,实际写入却落到树外;acceptEdits、allow 规则和 Auto mode 却按「看起来安全」的路径放行。现在:
- 提示会点明写入真正落在哪;
- acceptEdits、allow、Auto mode 不会再仅凭符号链接外观批准树外落盘。
对使用 node_modules 外链、共享 cache 目录、把配置链到家目录的仓库尤其重要。权限总览仍见 权限与沙箱:规则写的是真实边界,链接只是别名。
和「服务端分类器」怎么叠
- 服务端分类器:解决「分类器开销谁买单、是否在云上跑」——看
/status的 Auto mode server 行。 - 本文的重试语义:解决「审查已拒 / 无答复时还要不要死磕」。
两者同时生效:上云省的是分类器费用;停重试省的是空转与误判安全感。deny、ask、environment 规则仍然先于自动放行逻辑。
小结
- 2.1.280:安全审查拒绝 → 只否决一次并提示重试无益;无答复 → 退避,约十次后停轮。
- 符号链接写入按真实落盘路径做 acceptEdits / allow / Auto mode 判定,降低树外误批。
- 翻车时先改规则与路径,再谈「让 Auto 再试一次」。
Auto mode 该省的是手点确认,不该省的是「被拒绝之后还要不要撞墙」。