刷到 Anthropic 的公告时是周五晚上。大意是:8 月 14 日起,Claude Code 的 Pro、Max 和 Team 用户将默认启用 Auto 模式。
翻译成人话就是——后天开始,Claude Code 不再逐条问你"可以执行这个命令吗?",而是自己判断安全性后直接执行。修改文件、运行脚本、执行 git 操作,全部自动。
我当时第一反应是打开终端检查了自己的 settings.json。不是因为我觉得 Auto 模式一定会炸,而是因为这件事的默认值变了,意味着你什么都不做的话,行为就变了。
他们给了三个数据:
数据一:97% 的权限提示被无脑批准。
Anthropic 统计了所有 Claude Code 用户的权限操作——每次 Claude 要执行命令时弹出的"Allow?"确认框,97% 的情况下用户直接点了同意。
这意味着那个确认框形同虚设。你以为自己在"审核",实际上你在条件反射地按回车。
数据二:62% 的用户已经在用 bypassPermissions 或类似设置。
超过一半的付费用户早就主动关掉了权限确认。Claude Code 的六种权限模式里,最严格的 Manual 模式反而是少数人在用。
数据三:1053 人对照实验,Auto 模式比人工审核安全 6.5 倍。
Anthropic 做了一个对照研究——同样的危险命令序列,Auto 模式的内置分类器拦截了89%,而人工逐条审核只拦截了13.6%。
原因很简单:机器不会疲劳,不会在第 47 次"Allow?"的时候走神点了同意。人会。
89% 拦截率的另一面是:有 11% 的危险命令,Auto 模式也没拦住。
这 11% 是什么?根据公开的测试报告,主要是:
rm -rf被包在一个看似无害的脚本里)11% 听起来不多,但如果你一天跑 100 次命令,平均每天有 11 次危险操作会被放行。
打开 Auto 模式后,Claude Code 会在以下操作上不再询问你:
| 操作类型 | Manual 模式 | Auto 模式 |
|---|---|---|
| 读取文件 | 自动 | 自动 |
| 写入/修改文件 | ⚠️ 需确认 | ✅ 自动执行 |
| 执行 Bash 命令 | ⚠️ 需确认 | ✅ 自动执行(除非触发危险分类器) |
| git add/commit | ⚠️ 需确认 | ✅ 自动执行 |
| git push | ⚠️ 需确认 | 🔴 分类器拦截(大多数情况) |
| rm/delete 操作 | ⚠️ 需确认 | 🟡 取决于路径和上下文 |
| 安装 npm 包 | ⚠️ 需确认 | ✅ 自动执行 |
| 修改 package.json | ⚠️ 需确认 | ✅ 自动执行 |
关键变化:文件写入和 Bash 命令执行不再需要你确认。 这意味着 Claude 可以直接改你的代码、直接跑脚本、直接装包——只要它的内置分类器认为"安全"。
看完公告后我做的第一件事不是关掉 Auto 模式(那样就退回到 97% 无脑点同意的状态了),而是在 Auto 模式的基础上加约束。
// .claude/settings.json
{
"permissions": {
"allow": [
"Read",
"Glob",
"Grep",
"Write(src/**)",
"Edit(src/**)"
],
"deny": [
"Write(.env*)",
"Write(*.config.js)",
"Bash(rm *)",
"Bash(git push*)"
]
}
}
核心思路:只允许 Claude 自动写入src/目录下的文件。 配置文件、环境变量、根目录文件全部需要确认。这样 Claude 可以自由改业务代码,但碰不了构建配置和敏感文件。
{
"permissions": {
"deny": [
"Read(.env*)",
"Write(.env*)",
"Read(**/*secret*)",
"Read(**/*credential*)",
"Bash(*SECRET*)",
"Bash(*TOKEN*)",
"Bash(*PASSWORD*)"
]
}
}
Auto 模式下 Claude 能读取项目里的任何文件——包括.env。如果你的.env里有数据库密码、API 密钥,Claude 读到之后可能在生成代码时把它们硬编码进去,或者在执行命令时意外暴露。
deny 规则优先级高于 allow,配了 deny 之后即使 Auto 模式也会被拦住。
{
"permissions": {
"deny": [
"Bash(git push*)",
"Bash(git reset --hard*)",
"Bash(git checkout -- *)",
"Bash(git clean*)",
"Bash(git branch -D*)"
]
}
}
Auto 模式下 Claude 可以自动git add和git commit——这其实挺方便的。但push、reset --hard、强制删除分支这些不可逆操作,必须手动确认。
一个真实案例:上周看到有人发帖说 Claude Code 在 Auto 模式下自动 push 了一个有 debug 日志的 commit 到 main 分支。原因是 Claude 判断"commit+push 是一个完整的工作流",分类器没有拦截 push 操作。
{
"permissions": {
"deny": [
"Bash(npm install *--global*)",
"Bash(npx *)",
"Bash(yarn global*)"
],
"allow": [
"Bash(npm install)",
"Bash(npm run *)",
"Bash(yarn install)",
"Bash(yarn add *)"
]
}
}
允许 Claude 在项目内装包(npm install、yarn add),但禁止全局安装和 npx 执行。npx 可以下载并执行任意包——这是一个巨大的攻击面。
# CLAUDE.md
## 安全规则(Auto模式下必须遵守)
- 永远不要修改 .env、.env.local 或任何包含环境变量的文件
- 永远不要执行 git push,所有push操作必须由我手动执行
- 永远不要删除文件,如需删除请先列出文件列表等我确认
- 永远不要修改 CI/CD 配置文件(.github/workflows/*, .gitlab-ci.yml)
- 新增依赖时必须说明理由,不要静默安装
CLAUDE.md 是 Claude Code 的行为规则文件。Auto 模式下 Claude 会遵守这些规则——当然,这不是"硬性"限制(settings.json 的 deny 规则才是),但它提供了一层语义级别的防护。
{
"auditLog": {
"enabled": true,
"path": ".claude/audit.log",
"includeCommands": true,
"includeFileWrites": true
}
}
Auto 模式下最危险的事情不是 Claude 执行了什么,而是你不知道它执行了什么。开启审计日志后,每一次文件修改和命令执行都会被记录。每天花 2 分钟扫一眼日志,比事后排查问题快 100 倍。
| 场景 | 推荐模式 | 关键设置 |
|---|---|---|
| 个人 side project | Auto + 宽松 allow | 允许大多数操作,仅 deny push 和 rm |
| 公司项目(有 CI) | Auto + 严格 deny | 锁死 config/env/CI 文件,仅 allow src/ |
| 多人协作仓库 | Plan 模式 | 让 Claude 先出方案再执行,避免冲突 |
| 生产环境相关 | Manual | 别用 Auto,逐条确认 |
| 开源项目维护 | Auto + deny push | 防止意外 push 到公开仓库 |
可能有人会说:既然有风险,为什么不直接改回 Manual?
因为 Anthropic 的数据是对的——97% 的确认提示你都是无脑点的。Manual 模式给你的不是安全感,是"安全感的幻觉"。你觉得自己在审核,实际上第 10 次之后你就不看了。
Auto 模式 + 精确的 deny 规则,实际上比 Manual 模式更安全:
区别在于:Manual 模式的安全取决于你的注意力(会疲劳),Auto+deny 的安全取决于你的配置(不会疲劳)。
后天 Auto 模式就默认开启了。如果你还没配置过,至少做这几件事:
# 1. 检查当前的权限模式
cat .claude/settings.json
# 2. 如果文件不存在,创建一个
mkdir -p .claude
touch .claude/settings.json
# 3. 至少加上这个最小化安全配置
cat > .claude/settings.json << 'EOF'
{
"permissions": {
"deny": [
"Write(.env*)",
"Bash(git push*)",
"Bash(git reset --hard*)",
"Bash(rm -rf*)"
]
}
}
EOF
# 4. 确认CLAUDE.md存在且有安全规则
cat CLAUDE.md
| 保护目标 | deny 规则 | 优先级 |
|---|---|---|
| 环境变量/密钥 |
Write(.env*), Read(.env*)
|
🔴 必须 |
| 不可逆 git 操作 |
Bash(git push*), Bash(git reset --hard*)
|
🔴 必须 |
| 文件删除 |
Bash(rm -rf*), Bash(rm -r *)
|
🔴 必须 |
| CI/CD 配置 |
Write(.github/**), Write(.gitlab-ci.yml)
|
🟡 强烈建议 |
| 包管理配置 | Write(package.json) |
🟡 视情况 |
| 全局安装 |
Bash(npm install *--global*), Bash(npx *)
|
🟡 强烈建议 |
| 构建配置 |
Write(webpack.config*), Write(vite.config*)
|
🟢 可选 |
Auto 模式不是洪水猛兽。Anthropic 的数据证明了一个尴尬的事实:大多数人的"人工审核"其实比 AI 分类器更不靠谱。
但 11% 的漏网率也是真实的。后天开始,如果你什么都不配置,Claude Code 就会用它自己的判断来决定哪些操作安全——而它的判断有 11% 的概率是错的。
所以正确的策略不是二选一(全手动 vs 全自动),而是:让 Auto 处理 97% 的安全操作,用 deny 规则硬性拦截那 3% 你绝对不允许自动执行的东西。
你的 Claude Code 配置好了吗?8 月 14 日后天就到了。