Claude Code Auto Mode 怎么开:Bedrock、Vertex AI、Foundry 最新配置
用 Claude Code 写代码时,默认权限比较保守:改文件、跑 bash 经常要你点确认。任务一长,弹窗会把节奏打断。很多人干脆上 --dangerously-skip-permissions,省事但等于裸奔。
Auto Mode 是中间方案:大部分操作自动过,危险操作先过一道安全分类器(classifier),能拦就拦,拦不住再问你。
本文按当前版本说明怎么开、怎么关,以及 Bedrock / Vertex AI / Foundry 上要注意的地方。先确认版本:
claude --version
建议 ≥ 2.1.207。更早的版本配置方式不一样(见下文「版本变化」)。
官方文档:
一、Auto Mode 是什么
Claude Code 有几种权限模式,会话里用 Shift+Tab 切换:
| 模式 | 配置值 | 行为简述 |
|---|---|---|
| Manual | default | 写文件、跑命令多半要确认 |
| Accept edits | acceptEdits | 自动接受工作目录内的文件编辑 |
| Plan | plan | 只分析、出方案,不直接改代码 |
| Auto | auto | 少弹窗,动作先经 classifier 检查 |
| Bypass | bypassPermissions | 几乎全跳过(仅建议容器 / VM) |
Auto 不是关掉所有检查,而是用另一个模型在执行前判断:是不是越权、是不是往不认识的环境动手、像不像被注入带偏。
注意:
- Auto 降低确认次数,不等于绝对安全
- 会多一点延迟和 token 消耗
- 连续拦截太多次会退回人工确认
二、版本变化:环境变量还要不要
网上很多教程还在写:
export CLAUDE_CODE_ENABLE_AUTO_MODE=1
或在 settings.json 里:
{
"env": {
"CLAUDE_CODE_ENABLE_AUTO_MODE": "1"
}
}
这是 v2.1.158~2.1.206 在 Bedrock / Vertex / Foundry 上的做法。
| 版本 | Bedrock / Vertex AI / Foundry |
|---|---|
| 2.1.158 – 2.1.206 | 需要 CLAUDE_CODE_ENABLE_AUTO_MODE=1 才能开 Auto |
| ≥ 2.1.207 | 不需要环境变量,Auto 可直接进入模式列表 |
| 任意版本想禁用 | 用 disableAutoMode(见第四节) |
如果你已经升级到 2.1.207+,还照旧教程 export 环境变量,一般无害,但不是必须步骤。以 changelog 和本机行为为准。
三、怎么开启 Auto Mode
1. 前置条件
同时满足下面几条,Auto 才会出现:
- 版本:建议 ≥ 2.1.207(第三方云免 opt-in)
- 模型
- Anthropic API:文档要求较新的 Sonnet / Opus(如 4.6+)
- Bedrock / Vertex / Foundry:常见为 Sonnet 5、Opus 4.7、Opus 4.8 等;过旧模型不支持
- 套餐 / 组织
- Team / Enterprise:Owner 可能要在 Claude Code 管理后台 打开
- 管理员也可能在托管配置里全局关掉 Auto
- 提供方
- Anthropic API:相对直接
- Bedrock / Vertex / Foundry:207 后默认可进;更老版本要环境变量
若提示 Auto unavailable,优先查这几条,一般不是临时故障。
2. 会话里临时开启
进入 Claude Code 后按:
Shift+Tab
在模式之间切换,直到出现 Auto。
也可以启动时指定:
claude --permission-mode auto
3. 设为默认模式(推荐写用户配置)
编辑用户级配置文件:
路径: ~/.claude/settings.json
(Windows 一般是 %USERPROFILE%\.claude\settings.json)
{
"permissions": {
"defaultMode": "auto"
}
}
保存后新开一个 session 即可(多数权限相关配置会热加载,defaultMode 以新会话最稳)。
4. 组织统一开启 / 关闭
走 managed settings(管理后台、MDM、机器上的 managed-settings.json 等)。
企业若要统一禁止 Auto,用下一节的 disableAutoMode,不要指望每个仓库自己配。
5. 老版本(< 2.1.207)在云上怎么开
仍停在 2.1.158~2.1.206 时,在用户配置里加:
{
"env": {
"CLAUDE_CODE_ENABLE_AUTO_MODE": "1"
},
"permissions": {
"defaultMode": "auto"
}
}
然后再 Shift+Tab 切到 Auto。
注意: 这些提供方上,若不设 enable 变量,只写 defaultMode: "auto" 可能被忽略。
四、怎么关闭:disableAutoMode
不想让本机或团队使用 Auto 时,在配置里加:
{
"permissions": {
"disableAutoMode": "disable"
}
}
效果:
Shift+Tab循环里不再出现 Auto--permission-mode auto会被拒绝- 会盖过旧的
CLAUDE_CODE_ENABLE_AUTO_MODE开启方式
建议放置位置:
| 位置 | 是否推荐 |
|---|---|
| 组织 managed settings | 团队统一管控首选 |
~/.claude/settings.json | 个人关闭 OK |
启动参数 / --settings | 单次任务 |
项目里的 .claude/settings.json | 不要用来当「全公司关掉 Auto」的开关 |
五、配置文件放哪:为什么项目里改了不生效
这是最容易踩坑的地方。
1. settings 有几层
| 作用域 | 路径 | 说明 |
|---|---|---|
| 托管 / 企业 | managed-settings 等 | 优先级最高,用户改不掉 |
| 用户 | ~/.claude/settings.json | 个人全局 |
| 项目 | .claude/settings.json | 可提交 git,团队共享 |
| 本地 | .claude/settings.local.json | 本机、一般不提交 |
普通字段优先级大致是:托管 > 命令行 > 本地 > 项目 > 用户。
但 Auto 相关有额外限制,不能按「项目覆盖用户」那套想。
2. defaultMode: "auto" 写在项目里无效
从 v2.1.142 起,Claude Code 会忽略 下面两个文件里的 defaultMode: "auto":
.claude/settings.json.claude/settings.local.json
也就是说:仓库不能通过提交配置,给自己开通 Auto。
你写了也不报错,session 仍可能从 Manual 启动——看起来像 bug,实际是安全策略。
正确做法: 把 defaultMode: "auto" 写到 ~/.claude/settings.json 或企业托管配置。
3. autoMode(分类器规则)也不读共享项目配置
信任哪些 Git 组织、哪些内网域名、哪些桶,写在 autoMode 里。官方规定分类器从这些地方读:
~/.claude/settings.json- managed settings
- 启动时的
--settings/ SDK 传入
不读 可提交的 .claude/settings.json(避免 clone 仓库就放宽安全规则)。
另外 v2.1.207 起:autoMode 也不再从 .claude/settings.local.json 读取。
以前靠 local 给单个仓库加 trusted bucket 的,升级后要迁到用户配置。
4. 一张表记清楚
| 配置项 | 写在项目 settings | 写在用户 / 托管 |
|---|---|---|
普通 allow / deny | 可以 | 可以 |
defaultMode: "auto" | 无效 | 有效 |
autoMode.environment 等 | 共享项目无效;local 在 207 后也别依赖 | 有效 |
disableAutoMode | 不适合当治理手段 | 有效 |
结论: 想默认开 Auto、调 classifier、或禁用 Auto,都写到用户级或企业托管;别堆在仓库 .claude/ 里指望生效。
六、安全边界:默认拦什么、放什么
1. 判断顺序(简化)
- 先匹配你配置的
deny/ask/allow(deny 优先) - 只读、工作目录内普通编辑:多数自动过(受保护路径除外)
- 其余交给 classifier
- 被拦则把原因返回给 Claude,让它换方案;连拦过多则退出 Auto、改回弹窗确认
进 Auto 时,过宽的 allow(例如 Bash(*))会被暂时挂起;像 Bash(npm test) 这种窄规则可以保留。
2. 默认会拦的(不完全列表)
curl | bash一类下载执行- 敏感数据发到外部
- 生产部署、迁移、云上大批量删除
- 改 IAM / 仓库权限、改共享基础设施
- force push、破坏性 git(如乱
reset --hard) terraform destroy等- 未经批准的合并、对 bot 发
/deploy类指令 - 往敏感环境开 shell / 端口转发
- 在对话记录里打印活的密钥
完整默认规则可在本机查看:
claude auto-mode defaults
claude auto-mode config
3. 默认相对宽松的
- 工作目录内本地文件操作
- 按 lockfile / package 声明安装依赖
- 只读 HTTP
- 推送到你启动 session 时的分支,或 Claude 新建的分支
远端仓库的 branch protection 仍然生效,Auto 替代不了它。
4. 信任范围默认很小
默认只信任:
- 当前工作目录
- session 开始时 已配置的 git remote
公司 GitHub org、内网域名、构建产物桶等,需要你写进 autoMode.environment,否则可能被当成外部目标拦住。
示例(写在 用户 ~/.claude/settings.json):
{
"autoMode": {
"environment": [
"$defaults",
"Source control: github.com/your-org and all repos under it",
"Trusted internal domains: *.corp.example.com",
"Trusted cloud buckets: s3://your-build-artifacts"
]
}
}
务必保留 "$defaults"。
不写的话,等于用你的列表整体替换官方默认规则,安全基线会被你自己拆掉。
5. 其他注意点
- 对话里说的「先别 push」「等我 review 再部署」会被参考,但上下文压缩后可能丢失。硬约束请用
permissions.deny。 - classifier 主要看用户消息、工具调用、CLAUDE.md,默认不看工具原始输出(防网页/文件注入影响判断)。
.git、.claude(worktrees 除外)、shell 配置、.mcp.json等受保护路径在 Auto 里仍会进检查,宽 allow 盖不住。- Auto 不是
bypassPermissions。后者几乎全放行,只建议隔离环境使用。
七、可直接复制的配置示例
示例 1:个人默认开 Auto
文件:~/.claude/settings.json
{
"permissions": {
"defaultMode": "auto"
},
"autoMode": {
"environment": [
"$defaults",
"Organization: YourCo. Primary use: software development",
"Source control: github.com/your-org"
]
}
}
示例 2:个人 / 团队关闭 Auto(207 后云上默认可开时用)
{
"permissions": {
"disableAutoMode": "disable"
}
}
示例 3:允许 Auto,但禁止危险命令
{
"permissions": {
"defaultMode": "auto",
"deny": [
"Bash(terraform apply *)",
"Bash(terraform destroy *)",
"Bash(git push --force *)",
"Bash(git push -f *)",
"Read(./.env)",
"Read(./.env.*)"
]
},
"autoMode": {
"environment": [
"$defaults",
"Source control: github.com/your-org"
]
}
}
改完自检:
claude auto-mode config
claude doctor
八、常见问题
Q:Shift+Tab 里没有 Auto?
依次检查:版本是否够新、当前模型是否支持、Team/Enterprise 是否被管理员关掉、是否配置了 disableAutoMode。Bedrock/Vertex/Foundry 若版本 < 2.1.207,还要检查环境变量。
Q:settings 里写了 "defaultMode": "auto",启动还是 Manual?
多半写在了项目目录 .claude/settings.json 或 settings.local.json。从 2.1.142 起这两处的 auto 会被忽略。挪到 ~/.claude/settings.json。
Q:内网 push / 上传公司 bucket 总被拦?
在用户或托管配置里补 autoMode.environment,并带上 "$defaults"。然后跑 claude auto-mode config 看生效结果。
Q:升级到 2.1.207 后,local 里写的 autoMode 不生效了?
正常。207 起不再从 .claude/settings.local.json 读 autoMode,请改到 ~/.claude/settings.json。
Q:旧教程让我 export CLAUDE_CODE_ENABLE_AUTO_MODE,还要吗?
≥ 2.1.207 在 Bedrock / Vertex / Foundry 上不需要。仍停在更早版本才需要。
Q:被连拦几次后变成每步确认?
属于设计行为(例如连续约 3 次或累计约 20 次会回退)。补全 environment、把任务说具体,或对个别操作用 /permissions 处理,而不是找「关闭回退」的隐藏开关。
九、简要对照
| 你想做的事 | 做法 |
|---|---|
| 临时用 Auto | Shift+Tab 或 claude --permission-mode auto |
| 每次默认 Auto | ~/.claude/settings.json → permissions.defaultMode: "auto" |
| 云上老版本开启 | env.CLAUDE_CODE_ENABLE_AUTO_MODE: "1" + 足够新的模型 |
| 彻底关掉 Auto | permissions.disableAutoMode: "disable" |
| 减少误拦 | 用户/托管里配置 autoMode.environment,保留 $defaults |
| 硬禁止某类命令 | permissions.deny(比口头叮嘱可靠) |
一句话总结:
2.1.207 之后,Bedrock / Vertex AI / Foundry 上开 Auto Mode 不用再迷信环境变量;用 Shift+Tab 或用户级 defaultMode 即可。要关就用 disableAutoMode。
项目目录里的 settings 不能给自己开 Auto,也不能当企业治理开关——这是刻意设计,不是配置没写对。
版本会更新,字段和默认规则以本机 claude --version、changelog 和 claude auto-mode defaults 为准。