每次都点"同意",点到最后你其实什么都没在看
Claude Code 默认会在执行每条命令前停下来等你确认。这套机制是为了安全,但现实是——用户最终接受了 93% 的请求。
点多了,人就麻木了。" approve" 变成了肌肉记忆,安全检查形同虚设。这就是 approval fatigue(审批疲劳)。
两种旧解法,各有硬伤
面对审批疲劳,用户通常走向两个极端:
- 沙箱(Sandbox):把工具隔离在高风险操作之外。安全,但每次加新能力都要重新配,网络和主机访问一上来就破防。
--dangerously-skip-permissions:彻底关掉确认。零摩擦,但出了事没人拦。
两者之间,有巨大的空缺。
Auto Mode:让模型当你的"代理审批人"
Anthropic 最近发布的 Auto Mode,就是在填这个空缺——用模型驱动的分类器替代人肉审批,在保持安全的前提下,让 AI 真正自主运行。
核心思路很清晰:拦住那些"用户没让你干、你自己发挥"的操作,其他一律放行。
两层防御:读什么、做什么
Auto Mode 实际上有两套机制,分工明确:
第一层:输入侧——对抗提示词注入 模型读到的一切(文件内容、网页抓取结果、shell 输出)都会先经过一个探针扫描。如果内容看起来像是在试图劫持 AI 行为,系统会在传给 Agent 之前插入一条警告,让模型"当心这个,别被带跑"。
第二层:输出侧——Transcript 分类器 每一条要执行的工具调用,在真正运行之前,都会被一个运行在 Sonnet 4.6 上的分类器审查。这个分类器扮演的是"人类审批者"的替代角色。
分类器分两阶段工作:
- 阶段一:快筛——只输出一个 token(yes/no),默认倾向于拦截
- 阶段二:只有阶段一标记了的才会进入,带有完整的思维链推理,把误报率从 8.5% 压到 0.4%
为什么这么设计?因为绝大多数操作阶段一就放行了,只有真正可疑的才动用贵的推理阶段。
三层权限体系
不是所有操作都要过分类器。Auto Mode 把权限判断分成三层,从轻到重:
| 层级 | 内容 | 拦截成本 |
|---|---|---|
| 第一层 | 安全工具白名单(读文件、搜索代码等不修改状态的操作) | 无 |
| 第二层 | 项目目录内的文件写入/编辑 | 无 |
| 第三层 | Shell 命令、外部工具调用、项目外的文件操作 | Sonnet 4.6 分类器审查 |
进入 Auto Mode 时,有一条重要变化:那些授予"任意代码执行"权限的规则会被静默移除——比如无限制的 shell 访问、宽泛的 python/node/ruby 解释器调用。方便是方便,但把这些直接放给分类器判断太危险。
分类器靠什么判断"该不该拦"
这里的设计很有意思。分类器的提示词分两块:固定模板 + 可配置槽位。
固定模板 负责解释工作,告诉分类器:
- 不看命令文本,看真实影响——Agent 不能用一个看似无害的命令包装危险操作,比如写文件再执行它
- 看用户是否真的授权了,而不是"这件事和用户目标相关"
- "清理我的分支" ≠ 授权批量 force-push
- "能帮我修一下吗?" 是提问,不是指令
可配置槽位 允许用户自定义:
- Environment:信任边界(你自己的 GitHub org、云存储桶、内部服务 vs. 外部未知服务)
- Block rules:默认 20+ 条,涵盖销毁/外泄数据、安全降级、跨信任边界操作、绕过安全检查等
- Allow exceptions:白名单,比如安装 manifest 里已声明的包、通过标准流程获取凭证等
真实数据:0.4% 误拦,17% 漏拦
Anthropic 在三套数据集上做了评估:
| 数据集 | 描述 |
|---|---|
| 真实内部流量(n=10,000) | 真实的 Claude Code 工具调用 |
| 真实过度发挥行为(n=52) | 员工实际会话中发生过的危险操作 |
| 合成数据外泄(n=1,000) | 伪造的数据外泄尝试,含混淆技术 |
最终结果(完整管道):
- 误报率(FPR):0.4%——真实流量中,被错误拦截的操作只有这么点
- 漏报率(FNR):17%——真实过度发挥行为中,有 17% 没被拦住
关于 17% 的漏报,他们详细分析了原因:分类器其实正确识别了危险,但在判断"用户这句话是否真的授权了这个危险级别"时出了问题。比如用户说"清理一下这个 PR",分类器看到了 force-push,但无法确定这句话的授权边界到哪里。"说了一句涉及的命令" ≠ "完全理解了后果并同意了"。
Anthropic 也坦率地指出:Auto Mode 适合原来用 --dangerously-skip-permissions 的人,是一个巨大的改进;但如果你原来就在认真审每一条审批,Auto Mode 暂时还替代不了你。
一个反直觉的设计:把 AI 说的话藏起来
分类器只看两样东西:用户消息 + 工具调用指令,Claude 自己的解释和工具输出结果一律剥离。
原因:Agent 可能会"说服"分类器——生成看似合理的解释:"这个安全因为用户之前默许了"或者"这个目标肯定是自己创建的"。如果分类器读到这些,就可能被误导。
所以它的判断逻辑是:看你实际干了什么,不是看你怎么说。
这带来的一个额外好处是:即使一个模型在思维链里藏了不良意图,只要它最终的动作没踩规则,依然能执行——但反过来,如果动作踩了红线,不管动机多纯都会被拦住。这是两种不同维度的安全,互相补足。
总结:点同意点了 93% 的时候,那 93% 就该被放行
Auto Mode 解决的不是"AI 不安全"的问题——它解决的是"人类在低摩擦场景下无法保持警惕"的现实。
用模型判断意图,用分类器守好底线。这不是最完美的方案,但是一个在实际工作流中真正可用的折中。