主题
配置 Auto Mode
通过 autoMode 设置告诉分类器哪些仓库、存储桶和域名可信,减少误拦截。
是什么
Auto Mode 让 Claude Code 在无需权限提示的情况下运行:每次工具调用都经过一个分类器,拦截不可逆、破坏性或指向你环境之外的操作。默认情况下分类器只信任工作目录和当前仓库已配置的 remote,向公司源码组织 push 或写入团队云存储桶等操作会被拦截,直到你把它们加入 autoMode.environment。
本页是配置参考:用 autoMode 设置块告诉分类器哪些基础设施可信,并可覆盖默认的 block 和 allow 规则。Auto Mode 面向 Anthropic API 所有用户开放,但不支持 Bedrock、Vertex 或 Foundry。
怎么工作
- 分类器是在 permissions 系统之后运行的第二道关卡;permissions.deny(managed settings)在分类器之前拦截,且不可被覆盖。
- 分类器读取与 Claude 相同的 CLAUDE.md 内容,因此 CLAUDE.md 里的行为规则(如 never force push)会同时约束 Claude 和分类器。
- 分类器从这些 scope 读取 autoMode:~/.claude/settings.json(个人)、.claude/settings.local.json(单项目单开发者,已 gitignore)、managed settings(组织级)、--settings flag 或 Agent SDK 内联 JSON。
- 分类器不读取共享项目设置 .claude/settings.json 中的 autoMode,因此 check in 的仓库无法注入自己的 allow 规则。
- 各 scope 的条目会合并;开发者可扩展 environment/allow/soft_deny/hard_deny,但不能移除 managed settings 提供的条目。
- 分类器内部按四级优先级:hard_deny 无条件拦截 → soft_deny 拦截(可被 allow 和用户意图覆盖)→ allow 作为例外覆盖匹配的 soft_deny → 明确的用户意图覆盖剩余 soft block。
- 明确意图必须精确描述将要执行的动作:说 force-push this branch 算明确意图,说 clean up the repo 不算。
- environment、allow、soft_deny、hard_deny 各 section 独立求值;只设置 environment 不影响其他三个的默认列表。
怎么配置 / 用法
environment 字段添加可信基础设施,用字面字符串 "$defaults" 保留默认条目(默认信任工作仓库及其 remote):
json
{
"autoMode": {
"environment": [
"$defaults",
"Source control: github.example.com/acme-corp and all repos under it",
"Trusted cloud buckets: s3://acme-build-artifacts, gs://acme-ml-datasets"
],
"allow": [
"$defaults",
"Deploying to the staging namespace is allowed: staging is isolated from production"
],
"soft_deny": [
"$defaults",
"Never modify files under infra/terraform/prod/: production changes go through review"
],
"hard_deny": [
"$defaults",
"Never send repository contents to third-party code-review APIs"
]
}
}条目是自然语言 prose(不是 regex 或工具 pattern),像向新工程师描述基础设施那样书写。"$defaults" 会在所在位置展开为内置规则。
什么时候用
- 分类器反复拦截某个常规内部操作(如向自己公司源码组织 push、写入团队云存储桶)时,把目标加入 environment。
- 需要为默认例外未覆盖的常规 pattern 放行时,添加到 allow。
- 环境中存在默认未覆盖的特定破坏性风险时,添加到 soft_deny;绝不可逾越的安全边界添加到 hard_deny。
- 组织级分发可信基础设施配置时,写入 managed settings。
限制 / 坑
- 不支持 Bedrock、Vertex 或 Foundry;仅 Anthropic API 用户可用。
- 任一字段若不含
"$defaults",会整体替换该 section 的默认列表——soft_deny 缺省会丢弃 force push、curl | bash、生产部署等内置软拦截;hard_deny 缺省会丢弃数据外泄等内置规则。 - 开发者添加的 allow 条目可覆盖组织的 soft_deny(合并是附加式的,不是硬策略边界);要做硬边界请用 managed settings 的 permissions.deny。
- 分类器不读取共享项目设置 .claude/settings.json 中的 autoMode。
硬事实速查(11 条)
- 核心字段:autoMode.environment、autoMode.allow、autoMode.soft_deny、autoMode.hard_deny,均为 prose 字符串数组。
"$defaults"是字面字符串,用于在数组中就地展开内置默认规则并继续随版本更新继承。- 默认 environment 只信任工作仓库及其已配置 remote。
- 优先级四级:hard_deny > soft_deny > allow(覆盖 soft_deny)> 明确用户意图(覆盖剩余 soft block)。
- CLI:claude auto-mode defaults 打印内置规则 JSON。
- CLI:claude auto-mode config 打印分类器实际使用的有效配置($defaults 已就地展开)。
- CLI:claude auto-mode critique 对自定义 allow/soft_deny/hard_deny 规则给出 AI 反馈。
- 被拒记录在 /permissions 的 Recently denied 标签;按 r 标记重试。
- 可用 PermissionDenied hook 以编程方式响应拒绝。
- 读取 scope:~/.claude/settings.json、.claude/settings.local.json、managed settings、--settings/Agent SDK 内联 JSON。
- 各 scope 条目合并,开发者不能移除 managed settings 提供的条目。