autoMode 设置块告诉该分类器您的组织信任哪些代码库、存储桶和域,以便它停止阻止常规内部操作。
自动模式可供所有提供商上的所有用户使用,包括 Anthropic API、Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 和已登录的 Claude 应用网关会话。如果 Claude Code 报告您的账户无法使用自动模式,请检查完整要求,其中还涵盖了支持的模型和 Team 和 Enterprise 计划上的所有者启用。在 v2.1.158 到 v2.1.206 中,Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 和 Claude 应用网关会话上的自动模式需要设置
CLAUDE_CODE_ENABLE_AUTO_MODE=1;v2.1.207 移除了该要求。autoMode.environment。
有关如何启用自动模式以及它默认阻止的内容,请参阅权限模式。本页是配置参考。
本页涵盖如何:
- 为推送和拉取请求添加人工检查点,使用
permissions.ask - 选择在何处设置规则,跨越 CLAUDE.md、用户设置和托管设置
- 定义受信任的基础设施,使用
autoMode.environment - 覆盖阻止和允许规则,当默认值不适合您的管道时
- 将所有 shell 命令路由通过分类器,使用
autoMode.classifyAllShell - 检查您的有效配置,使用
claude auto-mode子命令 - 查看拒绝,以便您知道接下来要添加什么
常见边界
自动模式默认允许推送到您的工作分支、例行推送到存储库默认分支以及拉取请求创建。分类器仅在存在风险时(例如强制推送或绕过您设置的审查的内容)才会阻止推送。如果您想在每次推送或拉取请求之前进行人工检查点,请添加权限规则:以下配方将为其他所有操作保持自动模式开启。 最直接的机制是permissions.ask。内容范围的 ask 规则(如下面的规则)在分类器之前进行评估,并且即使在自动模式下也始终强制权限提示,因为显式 ask 规则是您明确表示要对该操作进行提示的意图。在您的 settings 中添加规则:
分类器读取配置的位置
分类器读取与 Claude 本身加载的相同 CLAUDE.md 内容,因此项目的 CLAUDE.md 中的指令(如”从不强制推送”)会同时引导 Claude 和分类器。从那里开始了解项目约定和行为规则。 对于跨项目应用的规则,例如受信任的基础设施或组织范围的拒绝规则,请使用autoMode 设置块。分类器从以下范围读取 autoMode:
分类器不从
.claude/settings.json 或 .claude/settings.local.json 中的项目设置读取 autoMode。两个文件都位于仓库目录中,因此已检入的仓库或构建步骤可能会注入自己的允许规则。在 v2.1.207 之前,分类器也读取 .claude/settings.local.json;将该文件中的任何 autoMode 块移动到 ~/.claude/settings.json。排除 .claude/settings.local.json 也解决了仓库提交该文件或本地工具或构建步骤写入该文件的情况。
来自每个范围的条目被合并。开发者可以使用个人条目扩展 environment、allow、soft_deny 和 hard_deny,但不能删除托管设置提供的条目。由于允许规则在分类器内充当软块规则的例外,开发者添加的 allow 条目可以覆盖组织的 soft_deny 条目:组合是累加的,而不是硬策略边界。
分类器是在权限系统之后运行的第二道门。对于必须永远不运行的操作,无论用户意图或分类器配置如何,请在托管设置中使用
permissions.deny,它在咨询分类器之前阻止操作,无法被覆盖。定义受信任的基础设施
对于大多数组织,autoMode.environment 是您唯一需要设置的字段。它告诉分类器哪些代码库、存储桶和域是受信任的:分类器使用它来决定”外部”的含义,因此任何未列出的目标都是潜在的数据泄露目标。
从 Claude Code v2.1.198 开始,claude auto-mode defaults 打印三种环境条目。v2.1.195 之前的版本仅打印前五个信任槽。
- 上下文槽:描述您的组织、技术栈和安全态势,以便分类器读取您上下文中的其他规则。与其他两种不同,上下文槽没有针对它们的规则。每个都默认为
None configured或保守假设(如下所示):- 组织
- Claude Code 的主要用途:默认为软件开发
- 云提供商
- 代码库可见性:除非其远程主机和名称另有说明,或会话中较早的可见性检查分类器读取的内容显示它是公开的,否则代码库被假定为私有。分类器读取您的消息和 Claude 运行的命令,而不是它们的输出,因此证据必须是它能读取的内容,例如您自己的消息将存储库命名为公开;单独的
gh repo view的输出无法到达它。转录证据检查需要 Claude Code v2.1.200 或更高版本 - 内部共享 / 代码片段托管:公共粘贴和 gist 服务被视为在信任边界之外,直到您命名一个
- 特定于组织的 CLI
- 密钥管理
- 默认 / 受保护的分支:
main和master被视为受保护,直到您命名其他分支 - CI/CD 部署目标
- 网络态势
- 受保护的部署命名空间 / 环境:回退到敏感远程目标启发式方法,直到您命名它们
- 数据保留 / 解密
- 信任槽:命名分类器视为在您边界内的内容。槽位是受信任的代码库、源代码控制、受信任的内部域、受信任的云存储桶、关键内部服务和内部包注册表。代码库和源代码控制条目默认为工作代码库及其配置的远程。所有其他信任槽默认为
None configured,因此在您添加之前没有其他内容是受信任的。存储库的可见性仅限于机密材料:私有存储库是机密材料的可接受目标,但将存储库设为私有永远不会清除秘密、个人或受信任的数据进入其中,分类器将从工作存储库外部移植、重新指向或首次读取的内容视为不是该存储库自己的工作。此范围界定需要 Claude Code v2.1.203 或更高版本。 - 敏感性槽:命名保护规则视为高风险的内容。槽位是敏感数据位置和受众、敏感远程目标和受保护的 IaC 范围。每个都默认为广泛的启发式方法,例如将任何名称中包含
prod或production的主机或命名空间视为敏感远程目标,因此保护规则在您配置任何内容之前就处于活动状态。在敏感性槽中命名具体目标会使这些规则应用于命名的目标而不是启发式方法。
"$defaults"。默认条目会在该位置被拼接进去,因此您的自定义条目可以在它们之前或之后。
以下示例保持默认条目并添加组织的代码库、存储桶、域和服务。
- 组织:您的公司名称以及 Claude Code 的主要用途,例如软件开发、基础设施自动化或数据工程
- 源代码控制:您的开发者推送到的每个 GitHub、GitLab 或 Bitbucket 组织
- 云提供商和受信任的存储桶:Claude 应该能够读取和写入的存储桶名称或前缀
- 受信任的内部域:您网络内的 API、仪表板和服务的主机名,例如
*.internal.example.com - 关键内部服务:CI、工件注册表、内部包索引、事件工具
- 内部包注册表:私有 npm、PyPI 或其他注册表,安装应该通过它路由,因此绕过它安装到公共注册表的安装会被阻止
- 敏感数据位置和受众:保存个人数据、机密业务数据、凭证、受管制数据或类似敏感材料的存储桶、数据库或路径,以及每个位置中的数据可能与之共享的受众,以便分类器保护这些位置而不是从内容猜测。Claude Code v2.1.195 至 v2.1.197 将此条目命名为 PII / 受管制数据位置,仅涵盖保存个人或受管制数据的位置,不包括受众维度
- 敏感远程目标:计为生产的命名空间、主机或容器,因此远程 shell 和端口转发到它们需要您的明确批准
- 受保护的 IaC 范围:其应用或销毁应始终需要您命名更改的基础设施资源
- 其他上下文:受管制行业的约束、多租户基础设施或影响分类器应将什么视为风险的合规要求
覆盖阻止和允许规则
三个额外的字段让您替换分类器的内置规则列表:autoMode.hard_deny:无条件安全边界autoMode.soft_deny:用户意图可以清除的破坏性操作autoMode.allow:软阻止规则的例外
permissions.deny。
在分类器内,优先级分为四个层级:
hard_deny规则无条件阻止。用户意图和allow例外不适用。soft_deny规则接下来阻止。用户意图和allow例外可以覆盖这些。allow规则然后覆盖匹配的soft_deny规则作为例外。- 明确的用户意图覆盖剩余的软阻止:如果用户的消息直接且具体地描述 Claude 即将采取的确切操作,分类器允许它,即使
soft_deny规则匹配。
allow。要收紧,为您的环境特定的破坏性风险添加到 soft_deny(默认值会遗漏),或为必须永远不能跨越的安全边界添加到 hard_deny。要保持内置规则同时添加您自己的规则,请在数组中包含字面字符串 "$defaults"。默认规则会在该位置拼接,因此您的自定义规则可以在它们之前或之后,并且当内置列表在版本发布中更改时,您继续继承更新。
以下示例在所有四个列表中保持默认值,并向每个列表添加特定于组织的规则。
在不包含
"$defaults" 的情况下设置 environment、allow、soft_deny 或 hard_deny 中的任何一个会替换该部分的整个默认列表。如果您设置一个没有 "$defaults" 的数组,您会丢弃该部分的内置规则:soft_deny:每个内置软阻止规则,包括强制推送、curl | bash、生产部署和自动模式绕过hard_deny:内置的数据泄露规则
environment 会保持默认 allow、soft_deny 和 hard_deny 列表完整。仅在您打算完全拥有该列表时才省略 "$defaults"。要安全地执行此操作,请运行 claude auto-mode defaults 打印内置规则,将它们复制到您的设置文件中,然后根据您自己的管道和风险容限审查每条规则。
将所有 shell 命令路由通过分类器
默认情况下,窄 Bash 和 PowerShell 允许规则(例如Bash(npm test))会进入自动模式并在分类器运行之前解决。自动模式仅暂停授予任意代码执行的广泛规则,例如 Bash(*) 或通配符解释器。这意味着窄规则仍然可以让破坏性参数通过而不被分类器看到,例如脚本路径或规则前缀未预期的标志。
将 autoMode.classifyAllShell 设置为 true 以在自动模式处于活动状态时暂停每个 Bash 和 PowerShell 允许规则,以便分类器评估每个 shell 命令,无论您的允许列表如何。
autoMode.classifyAllShell 需要 Claude Code v2.1.193 或更高版本。早期版本忽略该键并继续将窄 shell 允许规则进入自动模式。检查默认值和您的有效配置
三个 CLI 子命令帮助您检查和验证您的配置。 将内置environment、allow、soft_deny 和 hard_deny 规则打印为 JSON:
jq 管道,请传递 --label 和规则标签的开头,例如 claude auto-mode defaults --label 'Git Destructive'。匹配是对每条规则标签的不区分大小写的前缀,没有匹配的部分打印为空列表。需要 Claude Code v2.1.208 或更高版本。
打印分类器实际使用的内容作为 JSON,应用您的设置(如果设置)或使用默认值:
allow、soft_deny 和 hard_deny 规则的 AI 反馈:
claude auto-mode config 以确认有效规则是您期望的,其中 "$defaults" 已展开到位。如果您编写了自定义规则,claude auto-mode critique 会审查它们并标记模糊、冗余或可能导致误报的条目。
如果您需要删除或重写内置规则而不是在其旁边添加,请将 claude auto-mode defaults 的输出保存到文件,编辑列表,并将结果粘贴到您的设置文件中以替换 "$defaults"。
查看拒绝
当自动模式拒绝工具调用时,拒绝被记录在/permissions 下的”最近拒绝”选项卡中。在被拒绝的操作上按 r 将其标记为重试:当您退出对话框时,Claude Code 发送一条消息告诉模型它可能重试该工具调用并恢复对话。
在 Claude Code v2.1.193 及更高版本中,分类器对每个拒绝的原因出现在成绩单中被阻止的工具调用旁边、拒绝通知中以及”最近拒绝”选项卡上的每个条目下。使用原因来决定修复是 environment 条目、allow 例外还是在您的下一条消息中使用明确意图重试。
对同一目标的重复拒绝通常意味着分类器缺少上下文。将该目标添加到 autoMode.environment,然后运行 claude auto-mode config 确认它生效。
要以编程方式对拒绝做出反应,请使用 PermissionDenied hook。