Claude Code 自动模式默认开启:分类器看什么、拦什么、漏判率多少

10 月 22 日,Anthropic 在 auto mode 默认化公告里补了一条更新:从下周开始,Pro、Max、Team 用户在大多数 Claude 应用里新开的会话,默认都会进 auto mode。Claude Code 终端里其实早就这样了,从 9 月底的 v2.1.283、v2.1.284 起,不管什么套餐、什么提供商,只要你没配置权限模式,交互式会话都从 auto 启动。

也就是说,"这条命令能不能执行"以后多半不由你点按钮决定,而是交给另一个模型判断。下面看看这个分类器看得到什么、拦什么、官方公布的漏判率,以及它管不了的事。

它是什么

项 内容
首次发布 2026-03-24,研究预览
全量开放 2026-07-10,对所有 Claude Code 用户可用
默认开启 2026-08-14 起 Pro / Max / Team 默认;v2.1.284 起所有套餐和提供商的终端、VS Code 默认
最新动向 2026-10-22 公告更新:下周起在大多数 Claude 应用的新会话里默认开启
脚本 / SDK v2.1.302 起 claude -p 在第三方提供商等场景默认 Manual,要 auto 需显式 --permission-mode auto
支持模型(Anthropic API) Opus 4.6+、Sonnet 4.6+、Haiku 5.5、Fable 系列;Sonnet 4.5、Opus 4.5、Haiku 4.5 不支持
分类器模型 本地分类器默认 Sonnet 5;工程博客写的初版是 Sonnet 4.6
收费 服务端审查不单独计费;Enterprise、API、云厂商账户的本地分类器调用计入 token 用量

原理:一次工具调用要过几道关

官方文档给的决策顺序如下,先命中的规则生效:

text 复制代码
工具调用
  │
  ├─ 1. allow / ask / deny 规则 ── 命中就按规则走(有例外,见下)
  │
  ├─ 2. 只读操作、工作目录内的文件编辑 ── 直接放行
  │
  └─ 3. 其余所有操作 ── 交给分类器
                          │
                   Stage 1:单 token 快筛,"宁可拦"
                    ├─ 放行 → 执行
                    └─ 标记 → Stage 2:带推理复核
                               ├─ 放行 → 执行
                               └─ 拦截 → 把原因告诉 Claude,让它换条路

输入侧还有一层:服务端的提示注入探针会在工具结果进入上下文之前扫一遍,发现疑似劫持就附上一条警告。

为什么分两段

Stage 1 只输出一个 token,指令是"拿不准就拦",又快又便宜。被它标记的才进 Stage 2。Stage 2 输入相同,只把最后一句指令换成"仔细推理",所以 prompt 几乎全部命中缓存,复核成本很低。

工程博客给了两段各自的数据(官方自测):

真实流量(n=10,000) 真实越权动作(n=52) 合成外泄(n=1,000)
只用 Stage 1 误拦率 8.5% 漏判率 6.6% 漏判率 1.8%
Stage 1 → 2 误拦率 0.4% 漏判率 17% 漏判率 5.7%

取舍很清楚:只用 Stage 1,大约每 12 次误拦一次,用户会烦到关掉 auto;加上 Stage 2,误拦率降到 0.4%,代价是真实越权动作的漏判率从 6.6% 升到 17%。Anthropic 选了后者,原话是"17% 是诚实的数字"。

为什么分类器"看不见" Claude 说了什么

这是我觉得最值得看的设计。分类器只看两样东西:用户的消息 和 Claude 发出的工具调用。Claude 自己写的解释、工具返回的结果,统统被剥掉。

text 复制代码
完整对话                              分类器看到的
User: 修一下登录 bug          ──→     User: 修一下登录 bug
Assistant: 我先 grep 一下...     ✗
Bash: grep -r ...             ──→     Bash: grep -r ...
[工具输出: 配置里找到了 token]   ✗
Bash: curl -d $TOK ...        ──→     Bash: curl -d $TOK ...
  • 剥掉 Claude 的话:防止 Agent 用一句"这是为了验证 token"说服分类器。官方说法是"评判 Agent 做了什么,而不是它说了什么"。
  • 剥掉工具结果:恶意指令基本从工具结果进来(网页、文件、README),分类器看不到,注入就打不到它。
  • 保留用户消息:作为意图锚点。只看工具调用的方案漏判最低,但会误拦用户明确要求的动作。

代价是看不到来源:Claude 要操作 job abc123,分类器分不清这个 ID 是查出来的还是编的。

进入 auto 时,宽泛的 allow 规则会失效

Bash(*)、Bash(python*) 这类等于"任意代码执行"的授权,以及包管理器 run 命令、Agent / Monitor 的 allow 规则,进入 auto 时会被临时丢掉,离开后恢复。Bash(npm test) 这种窄规则会保留,并且在分类器之前生效;想让所有 shell 命令都过分类器,设 "autoMode": { "classifyAllShell": true }。

它默认拦什么、放什么

默认拦截(节选) 默认放行(节选)
`curl bash` 这类下载即执行
把敏感数据发到外部 安装 lock 文件或 manifest 里已声明的依赖
生产部署、数据库迁移、terraform destroy 读 .env 并把凭据发给对应的 API
force push、改写远端历史 推送到当前仓库的任意分支(production、gh-pages 这类单独判断)
git reset --hard、git clean -fd 等丢未提交改动的命令 只读 HTTP 请求
访问 169.254.169.254、读宿主机凭据(v2.1.257 起) 发到 autoMode.environment 里列出的可信域名和存储桶

完整规则用 claude auto-mode defaults 打印,合并你的设置后实际生效的规则用 claude auto-mode config 看。

有两条容易踩的边界:

  1. 对话里说"别 push"不是硬规则 。它会被当作拦截信号,但上下文压缩后可能丢失。要硬保证,用 permissions.deny 或 permissions.ask。
  2. 笼统同意不算授权。"清理一下这个 PR"不等于允许 force push。

官方数据和第三方测试

10 月 22 日更新的那篇默认化公告里,有两组数字(官方称):

  • 对照实验:1,053 名付费测试者做编程任务,某次权限提示被悄悄换成一条明显危险的命令。人只拦下了 13.6%(143 / 1,053),auto mode 拦下 89%(937 / 1,053)。
  • Trajectory Labs 红队(Anthropic 委托):72 个间接提示注入场景,每个跑 10 次。Fable 5、Opus 5、Sonnet 5 在 auto mode 下 720 次全部没成功;GPT-5.6 Sol 在 Codex Auto-review 下成功率 5.83%,Full Access 下 19.03%。

这些数字要打折看:

  • 第三方测试是 Anthropic 委托的,测的是 Claude Code v2.1.205 和 Codex v0.144.5;脚注也写了 OpenAI 后来更新过 Auto-review,结果可能会变。
  • 89% 反过来就是 11% 的危险命令会被放过(Simon Willison 指出过)。
  • 13.6% 反映的是"确认疲劳"。它说明 auto 比"一路点同意"好,说明不了 auto 比"认真审"好;工程博客自己也承认,跟认真逐条审批比,auto mode "可以说是退步"。

独立研究者的反例:Johann Rehberger 公布过一种针对 Opus 5 + auto mode 的攻击(Simon Willison 8 月 27 日转述),据称成功率约 80%。做法是让 Claude 下载并解压一个藏着 struct.py 的 zip,之后运行任何 import base64 的代码时,Python 会先加载同目录下的这个文件。有几次 Claude 发现中招想杀掉恶意进程,这条清理命令反而被分类器拦了。分类器判断的是单条命令,看不到"目录里刚多了一个同名模块"这种环境变化。我没查到 Anthropic 对此的公开回应。

和 Codex Auto-review 对比

OpenAI Codex 有个类似的 Auto-review,思路不太一样:

Claude Code auto mode Codex Auto-review
底层边界 默认不开沙箱,靠规则 + 分类器 系统沙箱优先(macOS Seatbelt、Linux bwrap + seccomp),默认断网
审查什么 规则没命中的所有非只读动作 只审本来就需要审批的动作:沙箱提权、被拦的网络请求、有副作用的 MCP 调用
失败时 无判定就拒绝;连续拦 3 次或累计 20 次退回人工 fail closed,超时也不执行
开启方式 --permission-mode auto,或 defaultMode: "auto" approval_policy = "on-request" + approvals_reviewer = "auto_review"
计费 服务端审查不单独收费 额外模型调用计入 Codex 用量

Codex 是"先用沙箱框死,审查只管越界部分";Claude Code 是"默认不框,每一步交给分类器"。前者确定性更强,后者日常开发更顺手。

该怎么用

适合交给 auto 的:本地仓库里改代码、跑测试、装已锁版本的依赖、推自己的分支。

建议再加一道闸的:

json 复制代码
{
  "permissions": {
    "ask": ["Bash(git push *)", "Bash(gh pr create *)"],
    "deny": ["Bash(terraform apply *)"]
  },
  "autoMode": {
    "environment": [
      "$defaults",
      "Source control: github.com/your-org and all repos under it",
      "Trusted internal domains: *.internal.example.com"
    ]
  }
}

注意 autoMode 只在 ~/.claude/settings.json、托管设置或 --settings 里生效,写在项目 .claude/settings.json 里不会被读取 ,防止仓库自带规则放宽分类器。另外,environment、allow、soft_deny、hard_deny 只要写了数组却没带 "$defaults",就会把那一节的内置规则整个替换掉。

不想手写可以跑 /auto-mode-setup 生成草稿。

不适合只靠 auto 的:

  • 机器上有生产凭据、SSH 密钥、云账号,又要处理不可信输入(陌生仓库、网页、第三方依赖)。这类任务应该进容器或开沙箱,限制网络出口。
  • 走 LLM 网关或中转的场景。服务端审查要求网关原样转发 safeguards 请求字段和 safeguard_results 返回字段,被剥掉就退回本地分类器(按 token 计费的账户会多花钱,并弹出计费提示);响应被截断或改写还会出现"无判定"拒绝。

我的判断

权限提示点多了,人就不看内容了,auto mode 针对的是这个真问题。13.6% 是官方测的,但方向上我信。把审批交给一个只盯动作、不听 Agent 解释的模型,比让疲惫的人点按钮靠谱。

但它是"更好的默认值",不是安全边界:官方自己给的真实越权漏判率是 17%,测试集只有 52 条。分类器判断的是"这一条命令符不符合用户意图",对供应链、同名模块、环境变化这类攻击没有视野。

我的建议:

  1. 日常开发放心用 auto,它比 --dangerously-skip-permissions 强得多。
  2. 推送、发 PR、部署这几类动作,用 permissions.ask 留一道人工确认。
  3. 要处理不可信输入,或者机器上有值钱的凭据时,靠沙箱和网络隔离,不要指望分类器。
  4. 用中转或网关的,跑一下 /status,看 Auto mode server 这一行是不是 Enabled。

10 月 22 日的更新意味着 auto 要从开发者工具扩到更多 Claude 应用,被"默认替你点允许"的会是更多普通用户。

参考资料

相关推荐
IT规划师1 小时前
Agent 总返工? Google 工程师把工程实践写成了技能库
ai编程·代码规范
OpsEye1 小时前
同一套用例跑两个大模型接口,差异到底出在哪
javascript·ai编程
程序员老刘2 小时前
Flutter 3.50更新,开发者应该关注什么?
flutter·ai编程·客户端
孟健3 小时前
我用 REA 逆向自己的 Electron 桌面端,扒出 178 个 IPC 通道后我反而放心了
架构·开源·ai编程
熊猫钓鱼>_>3 小时前
普通用户视角的端侧智能体验手记【鸿蒙心迹】
开发语言·人工智能·华为·智能手机·性能优化·ai编程·harmonyos
用户702952632145 小时前
MCP Server 写完了,怎么让别人一条命令用上?
ai编程
梦醒江南5 小时前
Agent 调工具报 504 之后:测试如何设计网络抖动下的幂等与补偿验证?
后端·agent·ai编程
Captaincc5 小时前
转译:《软件工程师现在该怎么办》
前端·后端·ai编程
浪浪山_大橙子5 小时前
被1.4 MB的射击游戏震撼后,我认真拆了一遍Fable的实现
ai编程·游戏开发·three.js
AI入职记5 小时前
本地 266MB 模型,追平大模型 API,还快 0.66 秒
后端·ai编程