Claude Code 自动模式将成为默认权限模式
2026年8月14日起,Claude Code Pro、Max和Team新会话默认启用自动模式。了解6种权限模式、v2.1.200别名变化,以及无人值守VPS应如何选择。
2026 年 8 月 14 日自动模式会发生哪些变化
Claude Code 自动模式会直接运行工具调用,不会暂停并询问您,并且会先将每个操作发送给单独的分类器模型进行审核。从 2026 年 8 月 14 日起,Pro、Max 和 Team 计划的新会话将默认使用该模式。您可以随时切换模式,之前为自己设置的默认模式不会被覆盖。
文档这样说明了这一变化:
从 2026 年 8 月 14 日起,自动模式将成为 Pro、Max 和 Team 计划中新会话的默认权限模式。您可以随时切换模式。除非您接受一次性切换提示,否则自行设置的默认模式会保持不变,组织管理的默认模式也不会改变。
其中有两个条款比日期更重要。您在自己的设置文件中设置的 defaultMode 会保留,不受此变化影响。组织通过托管设置部署的默认模式也会保留。公告文章还说明,在此次逐步推出的初期,Enterprise 计划以及通过 API 使用的账户仍可选择是否使用自动模式。
如果您在 VPS(虚拟专用服务器)上运行 Claude Code,建议在该变化生效前阅读相关说明。权限提示需要有人在键盘前确认。您通常不在远程服务器旁,因此会话启动时使用的模式,可能会在数小时内持续保持不变。
Claude Code 权限模式:从监督最多到最少
共有六种模式。每行开头的名称就是您在设置中填写或传递给 --permission-mode 的值。全部六种模式都由 Claude Code 本身强制执行,而不是由模型执行,因为判断工具调用可以执行哪些操作是模型外围 harness 的职责。
default:Claude 每次使用新工具前都会询问。工作目录内的读取操作仍会直接执行,不会提示。CLI(命令行界面)将此模式标记为 Manual,并从 Claude Code v2.1.200 开始接受manual作为别名。plan:Claude 会读取文件并运行命令进行探索,但不会修改源代码。您批准计划前,编辑操作会被阻止。acceptEdits:文件编辑会直接执行,不会提示;文件系统命令mkdir、touch、rm、rmdir、mv、cp和sed也会直接执行。此规则仅适用于工作目录或additionalDirectories内的路径。其他所有 shell 命令仍会提示。auto:所有操作都会执行,但分类器会先检查每个操作。明确的ask规则仍会强制显示提示。dontAsk:Claude Code 会自动拒绝所有原本需要提示您的操作。只有allow规则、内置的只读 Bash 命令,以及经PreToolUsehook 批准的调用会执行。会话不会等待输入。bypassPermissions:跳过提示和安全检查,包括对.git和.claude等受保护路径的写入。
会话期间按 Shift+Tab 可在 default、acceptEdits 和 plan 之间循环切换。状态栏会显示当前模式,例如 ⏵⏵ auto mode on 或灰色的 ⏸ manual mode on。默认情况下,其他模式不会加入此循环。账号满足要求后,auto 会加入循环。只有在使用 --permission-mode bypassPermissions 或 --dangerously-skip-permissions 启动会话时,bypassPermissions 才会加入循环。dontAsk 永远不会出现在循环中,因此请使用 claude --permission-mode dontAsk 设置它。
自动模式还要求使用较新的模型。这通常是它完全不显示的原因。截至 August 2026,文档列出的要求包括 Anthropic API 上的 Claude Opus 4.6 或更高版本、Sonnet 4.6 或更高版本,以及 Fable 5;文档还说明 Sonnet 4.5 等较旧模型不受任何提供商支持。如果 Claude Code 报告自动模式不可用,说明其中一项要求未满足。这不是临时服务中断,等待也无法解决问题。
两项控制在所有模式下都有效,包括 bypassPermissions:deny 规则和明确的 ask 规则。无论会话以哪种模式启动,这两项都是您始终保留的控制手段。
自动模式分类器会阻止的操作
分类器是第二个模型。它会读取待执行的操作,并判断该操作是否符合您的要求。文档用一句话说明了它的职责:
独立的分类器模型会在操作执行前进行检查,阻止超出您请求范围、针对无法识别基础设施,或疑似由 Claude 读取的恶意内容驱动的操作。
默认会阻止以下操作。这些是服务器运维人员最常遇到的类别:
- 下载并执行代码,例如
curl | bash - 在生产环境中部署和执行迁移
- 强制推送
- 修改共享基础设施
- 打开隧道或反向 shell,使本地服务可从公网访问
- 将有效凭据或令牌打印到会话记录或文件中
默认允许以下操作:
- 在工作目录中操作本地文件
- 安装锁定文件或清单中声明的依赖项
- 只读 HTTP 请求
- 推送到您正在使用的仓库中的任意分支
不要仅依据上面的摘要进行操作。运行 claude auto-mode defaults,以 JSON 格式输出完整的规则列表,并阅读您安装的版本随附的规则集。
在依赖此功能前,还需注意两个已记录的限制。第一,分类器可以看到您的消息、工具调用和 CLAUDE.md 内容,但工具结果会被移除。因此,Claude 读取的文件或网页中的文本无法直接影响分类器。第二,当分类器连续 3 次阻止某个操作,或在一个会话中累计阻止 20 次时,自动模式会暂停,Claude Code 会恢复向您请求确认。这些阈值无法配置。在使用 -p 标志的非交互模式下,没有人可以响应提示,因此重复遭到阻止会直接中止会话。
第二种行为才是远程服务器上最容易造成问题的情况。无人值守运行一旦触发限制,就会停止并等待一个没有查看终端的人。即使在同一台服务器上启动第二个 Claude Code 会话,也不能替代这个人,因为 从一个会话发送到另一个会话的文本 会一直保留,直到接收会话读取它;而暂停在权限提示处的会话仍然需要人工回答。缩小代理的任务范围是解决问题的另一部分,而 引导代理执行最小可行修改的技能 可以防止会话扩展为分类器会阻止的复杂操作。技能只针对一项任务提供引导,而 输出样式会直接编辑系统提示词;因此,要求进行小范围、精准修改的样式会作用于会话的每一轮,而不只是你调用它执行的那一项任务。
settings.json 中模式的配置位置
上文所有内容都属于设置文件中的一个对象。
{
"permissions": {
"defaultMode": "auto",
"allow": [
"Bash(npm run test *)",
"Bash(git status)"
],
"ask": [
"Bash(git push *)",
"Bash(docker compose up *)"
],
"deny": [
"Read(./.env)",
"Read(./secrets/**)",
"Bash(curl *)"
]
}
}规则按以下顺序评估:deny、ask、allow。按此顺序找到的第一个匹配项决定结果。较窄的规则不会覆盖先出现的较宽规则。针对 Bash(aws *) 的 deny 规则会阻止 aws s3 ls,即使您同时允许了该精确命令。因此,deny 规则不能包含例外。
ask 是在 auto 模式中发挥作用的规则类型。auto 模式会取消常规提示,而 ask 规则会针对您希望人工确认的特定命令重新启用提示。部署命令应放在那里。如果您希望在代码离开此主机前设置检查点,Bash(git push *) 也应放在那里。将凭据文件放在 deny 中是这一做法的另一部分,并且与首先让凭据无法被代理访问相配合。
以下是设置文件,优先级从低到高排列:
~/.claude/settings.json:您的用户设置,应用于每个项目。.claude/settings.json:项目设置,提交到代码仓库。.claude/settings.local.json:您针对单个代码仓库的个人设置,并由 git 忽略。- 托管设置,由管理员部署。在 Linux 上,该文件是
/etc/claude-code/managed-settings.json。任何内容都不能覆盖托管权限规则,包括命令行标志。
这里有一个具有明确文档说明原因的陷阱。从 Claude Code v2.1.142 开始,如果 defaultMode: "auto" 来自 .claude/settings.json 或 .claude/settings.local.json,则会被忽略。这样可以防止代码仓库通过提供设置文件来授予自身 auto 模式。将其设置在那里后,会话会以 default 模式启动,且不会在任何位置输出错误。请将该行移到 ~/.claude/settings.json。运行 /permissions,列出每条活动规则及其来源文件。
关闭模式的两个开关
管理员有两个禁用开关,二者都接受字符串 "disable",而不是布尔值。
{
"permissions": {
"disableAutoMode": "disable",
"disableBypassPermissionsMode": "disable"
}
}文档明确说明了应将它们放在哪里:
要阻止使用bypassPermissions或auto模式,请在任意设置文件中将permissions.disableBypassPermissionsMode或permissions.disableAutoMode设置为"disable"。这些设置最适合用于无法被覆盖的托管设置。
disableAutoMode 会将 auto 从 Shift+Tab 周期中移除,并在启动时拒绝 --permission-mode auto。disableBypassPermissionsMode 对旁路模式执行相同操作,并且可在任意作用域中生效。因此,您可以将它设置在自己的 ~/.claude/settings.json 中,禁止自己在凌晨 2 点操作线上服务器时进入不应使用的模式。在多人共用的服务器上,应将这两个设置放入 /etc/claude-code/managed-settings.json,因为用户设置文件属于用户,而托管设置文件不属于用户。
为什么 VPS 上的自动模式需要隔离边界
分类器一次只检查一个操作。它不会限制已批准操作随后执行的内容。文档明确说明:
分类器是按操作实施的控制措施,不是隔离边界。因此,无人值守运行仍需设置隔离边界,以实现纵深防御;而对于 --dangerously-skip-permissions,隔离边界并非可选,而是必需的。
因此,在远程主机上,应将自动模式与可接受丢失的环境配合使用,而不是使用 bypassPermissions 并寄希望于不会出问题。文档规定绕过模式只能用于隔离环境:没有互联网访问权限的容器、虚拟机或开发容器。在这些环境中,Claude Code 无法破坏宿主系统。运行数据库和反向代理的 VPS 不属于这些环境。
服务器上的安全措施主要有3项。使用普通用户运行 Claude Code,绝不要使用 root。为该用户提供一个工作目录,不要让它接触其他有读取价值的内容。与其修复主机,不如重建主机;这也是使用 每次任务结束后都销毁的一次性虚拟机 的原因。这些措施背后的加固细节包括创建用户和配置防火墙规则,详见 在 VPS 上运行 Claude Code 的完整安全检查,此处不再重复。
Claude Code 会自行强制执行 root 规则。在 Linux 和 macOS 上,如果使用 sudo 或 root 身份,它会拒绝以绕过模式启动:
--dangerously-skip-permissions cannot be used with root/sudo privileges for security reasons在受识别的沙盒中会跳过这项检查。因此,对于自主运行的容器,文档建议使用以非 root 用户运行 Claude Code 的开发容器。如果你通过 SSH 从手机或笔记本电脑驱动代理,同样的原则也适用于 在 tmux 中保持运行的 Claude Code 会话:会话运行期间,没有人监控提示内容。在登录本身成功之前,其他步骤都无法开始。因此,如果主机以 Permission denied (publickey) 拒绝你的连接,详细的 SSH 输出会告诉你实际遇到的是5种故障中的哪一种。
在 Ubuntu VPS 上设置 Bash 沙箱
内置沙箱会限制 Claude 运行的每个 Bash 命令对文件系统和网络的访问,操作系统也会对其子进程强制执行这些限制。在 Linux 上需要安装 2 个软件包。
sudo apt-get install bubblewrap socat启动 Claude Code 并运行 /sandbox。面板中会打开 Mode 选项卡和 Overrides 选项卡,还会有一个 Dependencies 选项卡,列出缺少的依赖项。依赖项检查会在启动时执行,因此安装软件包后必须重启 Claude Code,否则面板仍会将这些依赖项报告为缺失。
在 Ubuntu 24.04 及更高版本中,默认的 AppArmor 策略会阻止 bubblewrap 创建所需的用户命名空间,因此沙箱无法启动。检查当前系统是否受此影响:
sysctl kernel.apparmor_restrict_unprivileged_userns如果输出为 0,或显示密钥不存在的错误,则无需进行任何操作。如果输出为 1,则 bwrap 需要单独的配置文件:
sudo tee /etc/apparmor.d/bwrap > /dev/null <<'EOF'
abi <abi/4.0>,
include <tunables/global>
profile bwrap /usr/bin/bwrap flags=(unconfined) {
userns,
include if exists <local/bwrap>
}
EOF
sudo systemctl reload apparmor该配置文件仅应用于 bwrap 本身,不应用于它在沙箱中运行的命令。然后在设置中进一步收紧边界:
{
"sandbox": {
"enabled": true,
"filesystem": {
"denyRead": ["~/"],
"allowRead": ["."]
},
"network": {
"allowedDomains": ["github.com", "*.npmjs.org"]
}
}
}该代码块应放在项目的 .claude/settings.json 中,因为只有从项目设置解析 . 时,它才会指向项目根目录。将相同的行放入 ~/.claude/settings.json 后,. 会解析为 ~/.claude,因此 denyRead 规则会继续阻止访问项目文件,并导致每个命令都无法读取其需要编辑的代码。
请注意,此配置不涵盖以下内容。沙箱会限制 Bash 及其子进程。内置文件工具在 Claude Code 进程内部运行;MCP(模型上下文协议)服务器和钩子则是独立进程,会在主机上不受限制地运行。若要将所有这些进程置于同一边界内,请在容器、虚拟机或 @anthropic-ai/sandbox-runtime 软件包中运行完整的 Claude Code 进程。撰写本文时,该软件包仍是 beta 研究预览版。
每种场景应使用哪种模式?
个人笔记本上的独立仓库
使用 auto,并为需要人工确认的操作配置 ask 规则。您就在键盘前,分类器的回退机制确实可以请求您的确认,而且损害范围仅限于您控制的一台计算机。这正是 14 August 默认设置所针对的场景。
共享 VPS
按用户使用 auto,并在每个用户自己的 ~/.claude/settings.json 中配置。运行 Claude Code 的账户不应是 root,也不能读取其他用户的工作目录。在 /etc/claude-code/managed-settings.json 中将 disableBypassPermissionsMode 部署为 "disable",同时配置保护共享路径的拒绝规则。共享主机最能说明 bypassPermissions 不适用,因为该模式假定的隔离边界并不存在:其他租户就在这个边界之内。
CI 和无人值守会话
使用 dontAsk,并明确列出作业所需的命令,配置到 allow 中。没有人会看到提示时,自动拒绝是正确的失败方式。自动模式同样以非交互方式运行,但分类器反复阻止操作会中止 -p 会话。因此,遇到这些阻止时,作业会中途失败,导致工作只完成一部分。仅在可从镜像重建的容器或虚拟机中使用 bypassPermissions,不要在同时运行重要服务的主机上使用。
FAQ
auto 模式何时会成为 Claude Code 的默认模式?
从 2026 年 8 月 14 日起,Pro、Max 和 Team 计划的新会话将默认使用 auto 模式。文档还说明,您可以随时切换模式;您自行设置的默认模式会保持不变,除非您接受一次性切换提示;由组织管理的默认模式不会改变。公告指出,在发布初期,Enterprise 计划以及使用 API 的账户仍可选择是否使用 auto 模式。请查看状态栏,确认当前会话实际使用的模式;auto 模式下会显示 ⏵⏵ auto mode on。
在 VPS 上,我应使用 auto 模式还是 bypassPermissions?
使用 auto 模式,并配合隔离边界。分类器会在每个操作运行前进行检查,但文档明确说明,它是按操作执行的控制机制,不是隔离边界。因此, unattended 运行仍应使用容器、虚拟机,或一台您愿意重建的服务器。bypassPermissions 会完全跳过检查,文档规定只能用于隔离环境。Claude Code 在 Linux 上以 root 身份使用该模式时不会启动,并会输出 --dangerously-skip-permissions cannot be used with root/sudo privileges for security reasons。
如何阻止服务器上的任何人使用 auto 模式或 bypass 模式?
在 /etc/claude-code/managed-settings.json 中,将 permissions.disableAutoMode 和 permissions.disableBypassPermissionsMode 设置为字符串 "disable"。托管设置的优先级高于所有其他作用域,因此用户设置文件和命令行标志都无法覆盖这些设置。disableAutoMode 会从 Shift+Tab 循环中移除 auto,并在启动时拒绝 --permission-mode auto。disableBypassPermissionsMode 也可在任何作用域中使用,因此单个用户可以在自己的 ~/.claude/settings.json 中设置它。
为什么会忽略我的 defaultMode: "auto" 设置?
因为设置位于错误的文件中。从 Claude Code v2.1.142 开始,如果 defaultMode: "auto" 来自 .claude/settings.json 或 .claude/settings.local.json,就会被忽略。这样,代码仓库无法通过附带设置文件自行启用 auto 模式。会话将以 default 模式启动,且不会显示错误。将设置移到 ~/.claude/settings.json,然后运行 /permissions,确认每条生效规则来自哪个文件。如果 auto 模式仍不可用,请检查模型要求:Sonnet 4.5 等较旧模型不受任何提供商支持。