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 用量 |
原理:一次工具调用要过几道关
官方文档给的决策顺序如下,先命中的规则生效:
工具调用
│
├─ 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 自己写的解释、工具返回的结果,统统被剥掉。
完整对话 分类器看到的
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 看。
有两条容易踩的边界:
- 对话里说"别 push"不是硬规则。它会被当作拦截信号,但上下文压缩后可能丢失。要硬保证,用
permissions.deny或permissions.ask。 - 笼统同意不算授权。"清理一下这个 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 的:本地仓库里改代码、跑测试、装已锁版本的依赖、推自己的分支。
建议再加一道闸的:
{
"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 条。分类器判断的是"这一条命令符不符合用户意图",对供应链、同名模块、环境变化这类攻击没有视野。
我的建议:
- 日常开发放心用 auto,它比
--dangerously-skip-permissions强得多。 - 推送、发 PR、部署这几类动作,用
permissions.ask留一道人工确认。 - 要处理不可信输入,或者机器上有值钱的凭据时,靠沙箱和网络隔离,不要指望分类器。
- 用中转或网关的,跑一下
/status,看 Auto mode server 这一行是不是Enabled。
10 月 22 日的更新意味着 auto 要从开发者工具扩到更多 Claude 应用,被"默认替你点允许"的会是更多普通用户。
参考资料
- Anthropic:Auto mode is now the default in Claude Code for Pro, Max, and Team plans(2026-08-07,2026-10-22 更新)claude.com/blog/auto-m…
- Anthropic:Auto mode for Claude Code(2026-03-24,2026-07-10 更新)claude.com/blog/auto-m…
- Anthropic Engineering:Claude Code auto mode(2026-03-25)www.anthropic.com/engineering…
- Claude Code 文档:Permission modes code.claude.com/docs/en/per…
- Claude Code 文档:Configure auto mode code.claude.com/docs/en/aut…
- Claude Code 文档:Auto mode classifier request charges code.claude.com/docs/en/aut…
- Claude Code CHANGELOG github.com/anthropics/…
- OpenAI Codex 文档:Agent approvals & security learn.chatgpt.com/docs/agent-…
- Simon Willison:Auto mode is now the default in Claude Code(2026-08-08)simonwillison.net/2026/Aug/8/…
- Johann Rehberger 原文 embracethered.com/blog/posts/…