跳转到主要内容
当 Claude 想要编辑文件、运行 shell 命令或发出网络请求时,它会暂停并要求您批准该操作。权限模式控制暂停发生的频率。您选择的模式塑造了会话的流程:默认模式让您在操作进行时审查每个操作,而更宽松的模式让 Claude 在更长的不间断时间内工作,然后报告完成情况。为敏感工作选择更多监督,或在您信任方向时选择更少中断。

可用模式

每种模式在便利性和监督之间做出不同的权衡。下表显示了在每种模式中 Claude 无需权限提示即可执行的操作。
模式无需询问即可运行的操作最适合
default仅读取入门、敏感工作
acceptEdits读取、文件编辑和常见文件系统命令(mkdirtouchmvcp 等)迭代您正在审查的代码
plan仅读取在更改代码库前进行探索
auto所有操作,带后台安全检查长时间任务、减少提示疲劳
dontAsk仅预先批准的工具锁定的 CI 和脚本
bypassPermissions所有操作仅隔离容器和 VM
在除 bypassPermissions 外的每种模式中,对受保护路径的写入永远不会自动批准,保护仓库状态和 Claude 自己的配置免受意外破坏。 模式设置基线。在顶部分层权限规则以预先批准或阻止特定工具。拒绝规则和显式询问规则适用于每种模式,包括 bypassPermissions。允许规则在该模式中无效,因为其他所有操作都已被批准。

切换权限模式

您可以在会话期间、启动时或作为持久默认设置切换模式。模式通过这些控制设置,而不是通过在聊天中询问 Claude。选择下面的您的界面以查看如何更改它。
在会话期间:按 Shift+Tab 循环切换 defaultacceptEditsplan。当前模式显示在状态栏中。并非每种模式都在默认循环中:
  • auto:当您的账户满足 auto mode 要求时出现;循环到 auto 会显示一个选择加入提示,直到您接受它,或选择不,不再询问以从循环中移除 auto
  • bypassPermissions:在您使用 --permission-mode bypassPermissions--dangerously-skip-permissions--allow-dangerously-skip-permissions 启动后出现;--allow- 变体将模式添加到循环中而不激活它
  • dontAsk:永远不会出现在循环中;使用 --permission-mode dontAsk 设置它
启用的可选模式在 plan 之后插入,bypassPermissions 优先,auto 最后。如果您同时启用了两者,您将在前往 auto 的途中循环通过 bypassPermissions启动时:将模式作为标志传递。
claude --permission-mode plan
作为默认设置:在设置中设置 defaultMode
{
  "permissions": {
    "defaultMode": "acceptEdits"
  }
}
相同的 --permission-mode 标志适用于 -p 非交互式运行

使用 acceptEdits mode 自动批准文件编辑

acceptEdits mode 让 Claude 在您的工作目录中创建和编辑文件而无需提示。状态栏显示 ⏵⏵ accept edits on 当此模式处于活动状态时。 除了文件编辑外,acceptEdits mode 自动批准常见的文件系统 Bash 命令:mkdirtouchrmrmdirmvcpsed。这些命令在以安全环境变量(如 LANG=CNO_COLOR=1)或进程包装器(如 timeoutnicenohup)为前缀时也会自动批准。与文件编辑一样,自动批准仅适用于您的工作目录或 additionalDirectories 内的路径。该范围外的路径、对受保护路径的写入和所有其他 Bash 命令仍然会提示。 当启用 PowerShell tool 时,acceptEdits mode 也会自动批准 Set-ContentAdd-ContentClear-ContentRemove-Item 在范围内的路径上,以及它们的常见别名。相同的范围和受保护路径规则适用。 当您想在编辑器中或通过 git diff 之后审查更改而不是逐个批准每个编辑时,使用 acceptEdits。从默认模式按 Shift+Tab 一次进入它,或直接启动它:
claude --permission-mode acceptEdits

使用 plan mode 在编辑前进行分析

Plan mode 告诉 Claude 研究并提议更改而不进行更改。Claude 读取文件、运行 shell 命令进行探索,并编写计划,但不编辑您的源代码。权限提示的应用方式与默认模式相同。 通过按 Shift+Tab 或在单个提示前加上 /plan 进入 plan mode。您也可以从 CLI 以 plan mode 启动:
claude --permission-mode plan
再次按 Shift+Tab 离开 plan mode 而不批准计划。

审查并批准计划

当计划准备好时,Claude 呈现它并询问如何继续。从该提示您可以:
  • 批准并在 auto mode 中启动
  • 批准并接受编辑
  • 批准并手动审查每个编辑
  • 继续规划并提供反馈
  • 使用 Ultraplan 进行基于浏览器的审查进行细化
批准计划会退出 plan mode 并将会话切换到每个批准选项描述的权限模式,因此 Claude 开始编辑。要再次规划,使用 Shift+Tab 循环回到 plan mode,或在下一个提示前加上 /plan Ctrl+G 在您的默认文本编辑器中打开提议的计划并在 Claude 继续之前直接编辑它。当启用 showClearContextOnPlanAccept 时,每个批准选项也提供首先清除规划上下文的选项。 接受计划也会根据计划内容自动命名会话,除非您已经使用 --name/rename 设置了名称。

将 plan mode 设置为默认值

要使 plan mode 成为项目的默认值,请在 .claude/settings.json 中设置 defaultMode
{
  "permissions": {
    "defaultMode": "plan"
  }
}

使用 auto mode 消除提示

Auto mode 需要 Claude Code v2.1.83 或更高版本。
Auto mode 让 Claude 执行而无需例行权限提示。一个单独的分类器模型在操作运行前审查操作,阻止任何超出您请求范围的操作、针对无法识别的基础设施的操作,或似乎由 Claude 读到的恶意内容驱动的操作。显式询问规则仍然会强制提示。 Auto mode 还指示 Claude 继续工作而无需停止以提出澄清问题,尽管当您的提示或技能明确依赖它时 Claude 仍然会提问。要在保持权限提示的同时获得更强的自主行为,请改为设置主动输出风格
Auto mode 是研究预览版。它减少提示但不保证安全。将其用于您信任一般方向的任务,而不是作为敏感操作审查的替代品。
Auto mode 仅在您的账户满足所有这些要求时可用:
  • 计划:所有计划。
  • 管理员:在 Team 和 Enterprise 上,管理员必须在 Claude Code 管理员设置中启用它,然后用户才能打开它。管理员也可以通过在托管设置中将 permissions.disableAutoMode 设置为 "disable" 来锁定它。
  • 模型:在 Anthropic API 上,Claude Opus 4.6 或更高版本,或 Sonnet 4.6。在 Amazon Bedrock、Google Cloud Vertex AI 和 Microsoft Foundry 上,仅支持 Claude Opus 4.7 和 Opus 4.8。不支持其他模型,包括 Sonnet 4.5、Opus 4.5、Haiku 和 claude-3 模型,在任何提供商上都不支持。
  • 提供商:在 Anthropic API 上默认可用。在 Amazon Bedrock、Google Cloud Vertex AI 和 Microsoft Foundry 上,auto mode 处于关闭状态,直到您设置 CLAUDE_CODE_ENABLE_AUTO_MODE
如果 Claude Code 报告 auto mode 不可用,其中一个要求未满足;这不是暂时中断。一个单独的消息命名一个模型并说 auto mode “cannot determine the safety” 的操作是暂时分类器中断;请参阅错误参考 如果您在设置中设置 defaultMode: "auto" 并且会话以 default 模式启动且没有错误,该设置可能在 .claude/settings.json.claude/settings.local.json 中。Claude Code v2.1.142 及更高版本忽略来自这些文件的 auto,因此仓库无法授予自己 auto mode。将其移动到 ~/.claude/settings.json

在 Bedrock、Vertex AI 或 Foundry 上启用 auto mode

Amazon BedrockGoogle Cloud Vertex AIMicrosoft Foundry 上,auto mode 不会出现在 Shift+Tab 循环中,直到 CLAUDE_CODE_ENABLE_AUTO_MODE 被设置为 1。该变量在 Claude Code v2.1.158 及更高版本中有效。仅在这些提供商上支持 Claude Opus 4.7 和 Opus 4.8。 要为一个开发者启用它,请将变量添加到 ~/.claude/settings.json 中的 env 块:
{
  "env": {
    "CLAUDE_CODE_ENABLE_AUTO_MODE": "1"
  }
}
要为您的组织启用它,请将相同的 env 块添加到托管设置 一旦设置了变量,auto mode 就会出现在每个会话的 Shift+Tab 循环中。要使其成为默认启动模式,还要在用户或托管设置中设置 "permissions": {"defaultMode": "auto"}。在这些提供商上,Claude Code 忽略 defaultMode: "auto",除非也设置了 CLAUDE_CODE_ENABLE_AUTO_MODE 要防止开发者启用 auto mode,请在托管设置中将 disableAutoMode 设置为 "disable"。这会覆盖启用变量。 如果您通过配置了 ANTHROPIC_BASE_URLLLM gateway 连接,auto mode 可能已经可以访问而无需启用变量,因为网关通过 Anthropic API 路由请求。disableAutoMode 设置在该配置中以相同方式应用。

分类器默认阻止的内容

分类器信任您的工作目录和您的仓库的配置的远程。其他所有内容都被视为外部,直到您配置受信任的基础设施 默认阻止
  • 下载和执行代码,如 curl | bash
  • 向外部端点发送敏感数据
  • 生产部署和迁移
  • 云存储上的大规模删除
  • 授予 IAM 或仓库权限
  • 修改共享基础设施
  • 不可逆地销毁会话开始前存在的文件
  • 强制推送或直接推送到 main
  • git reset --hardgit checkout -- .git restore .git clean -fdgit stash dropgit stash clear,分类器推测这些会丢弃未提交的更改
  • git commit --amend,当 HEAD 处的提交不是在此会话中创建的
  • terraform destroypulumi destroycdk destroyterragrunt destroy,以及应用会销毁资源的计划
默认允许
  • 工作目录中的本地文件操作
  • 安装在您的锁定文件或清单中声明的依赖项
  • 读取 .env 并向其匹配的 API 发送凭证
  • 只读 HTTP 请求
  • 推送到您启动的分支或 Claude 创建的分支
Sandbox 网络访问请求通过分类器路由而不是默认允许。运行 claude auto-mode defaults 以查看完整的规则列表。如果常规操作被阻止,管理员可以通过 autoMode.environment 设置添加受信任的仓库、桶和服务:请参阅配置 auto mode

您在对话中陈述的边界

分类器将您在对话中陈述的边界视为阻止信号。如果您告诉 Claude “don’t push” 或 “wait until I review before deploying”,分类器会阻止匹配的操作,即使默认规则会允许它们。边界保持有效,直到您在后续消息中解除它。Claude 自己的判断条件已满足不会解除它。 边界不存储为规则。分类器在每次检查时从记录中重新读取它们,因此如果上下文压缩删除陈述边界的消息,边界可能会丢失。为了硬保证,请改为添加拒绝规则

当 auto mode 回退时

每个被拒绝的操作显示通知并出现在 /permissions 下的”最近拒绝”选项卡中,您可以按 r 以手动批准重试它。 如果分类器在一行中阻止操作 3 次或总共 20 次,auto mode 暂停,Claude Code 恢复提示。批准提示的操作恢复 auto mode。这些阈值不可配置。任何允许的操作重置连续计数器,而总计数器在会话中持续,仅在其自己的限制触发回退时重置。 非交互式模式中使用 -p 标志,重复的阻止中止会话,因为没有用户可以提示。 重复的阻止通常意味着分类器缺少关于您的基础设施的上下文。使用 /feedback 报告误报,或让管理员配置受信任的基础设施
每个操作都经过固定的决策顺序。第一个匹配的步骤获胜:
  1. 与您的允许或拒绝规则匹配的操作立即解决,除了对受保护路径的写入,即使允许规则匹配也会路由到分类器
  2. 只读操作和工作目录中的文件编辑自动批准,除了对受保护路径的写入
  3. 其他所有内容都发送到分类器
  4. 如果分类器阻止,Claude 收到原因并尝试替代方案
进入 auto mode 时,授予任意代码执行的广泛允许规则被删除:
  • 全面 Bash(*)PowerShell(*)
  • 通配符解释器如 Bash(python*)
  • 包管理器运行命令
  • Agent 允许规则
诸如 Bash(npm test) 之类的狭隘规则会继续。删除的规则在您离开 auto mode 时恢复。分类器看到用户消息、工具调用和您的 CLAUDE.md 内容。工具结果被剥离,因此文件或网页中的恶意内容无法直接操纵它。一个单独的服务器端探针扫描传入的工具结果并在 Claude 读取前标记可疑内容。有关这些层如何协同工作的更多信息,请参阅 auto mode 公告工程深度探讨
分类器在三个点检查子代理工作:
  1. 在子代理启动前,委派的任务描述被评估,因此看起来危险的任务在生成时被阻止。
  2. 当子代理运行时,它的每个操作都通过分类器,使用与父会话相同的规则,子代理前言中的任何 permissionMode 都被忽略。
  3. 当子代理完成时,分类器审查其完整的操作历史;如果该返回检查标记了一个问题,安全警告被添加到子代理的结果前面。
第 1 步需要 Claude Code v2.1.178 或更高版本。早期版本在第 2 和 3 步应用分类器,但在子代理启动前没有评估任务描述。
分类器在独立于您的 /model 选择的服务器配置模型上运行,因此切换模型不会改变分类器可用性。分类器调用计入您的令牌使用。每次检查发送记录的一部分加上待处理操作,在执行前添加往返。受保护路径外的读取和工作目录编辑跳过分类器,因此开销主要来自 shell 命令和网络操作。

仅使用 dontAsk mode 允许预先批准的工具

dontAsk mode 自动拒绝每个会提示的工具调用。仅与您的 permissions.allow 规则和只读 Bash 命令匹配的操作可以执行;显式 ask 规则被拒绝而不是提示。这使模式完全非交互式,适合 CI 管道或受限环境,其中您预先定义 Claude 可能执行的确切操作。Claude Code on the web 上的云会话忽略 defaultMode: "dontAsk";有关详细信息,请参阅 bypassPermissions 在启动时使用标志设置它:
claude --permission-mode dontAsk

使用 bypassPermissions mode 跳过所有检查

bypassPermissions mode 禁用权限提示和安全检查,因此工具调用立即执行。从 v2.1.126 开始,这包括对受保护路径的写入,早期版本仍然会提示。显式询问规则仍然会在此模式下强制提示,针对文件系统根目录或主目录的删除操作,例如 rm -rf /rm -rf ~,仍然会提示作为防止模型错误的断路器。仅在隔离环境(如容器、VM 或没有互联网访问的 dev containers)中使用此模式,其中 Claude Code 无法对您的主机系统造成损害。 您无法从没有启用标志之一启动的会话进入 bypassPermissions;使用其中一个重新启动以启用它:
claude --permission-mode bypassPermissions
--dangerously-skip-permissions 标志等同。 在 Linux 和 macOS 上,当以 root 身份或在 sudo 下运行时,Claude Code 拒绝以此模式启动:
--dangerously-skip-permissions cannot be used with root/sudo privileges for security reasons
在识别的沙箱内自动跳过该检查。要在容器中自主运行,请使用 dev container 配置,该配置以非 root 用户身份运行 Claude Code。 Claude Code on the web 不遵守来自您的设置文件的 defaultMode: "bypassPermissions""dontAsk",因此存储库的签入设置无法在绕过权限模式下启动云会话。该设置被静默忽略,会话改为以模式下拉菜单中显示的模式启动。有关云会话提供的模式,请参阅切换权限模式
bypassPermissions 不提供针对提示注入或意外操作的保护。对于没有提示的后台安全检查,请改为使用 auto mode。管理员可以通过在托管设置中将 permissions.disableBypassPermissionsMode 设置为 "disable" 来阻止此模式。

受保护的路径

对一小组路径的写入在除了 bypassPermissions 之外的每种模式中都永远不会自动批准。这防止了仓库状态和 Claude 自己的配置的意外破坏。
模式受保护路径写入
defaultacceptEditsplan提示
auto路由到分类器
dontAsk拒绝
bypassPermissions允许
permissions.allow 设置文件中的规则不会预先批准受保护路径的写入。安全检查在 Claude Code 评估设置中的允许规则之前运行,因此 ~/.claude/settings.json.claude/settings.json 中的条目(如 Edit(.claude/**))不会改变上表中的每种模式的结果。在提示的模式中,对 .claude/ 写入的提示会提供是的,并允许 Claude 在此会话中编辑其自己的设置,这会在该会话中批准后续的 .claude/ 写入而无需再次提示。 受保护的目录:
  • .git
  • .config/git
  • .vscode
  • .idea
  • .husky
  • .cargo
  • .devcontainer
  • .yarn
  • .mvn
  • .claude,除了 .claude/worktrees,Claude 在其中存储其自己的 git worktrees
受保护的文件:
  • .gitconfig.gitmodules
  • .bashrc.bash_profile.bash_login.bash_aliases.bash_logout.zshrc.zprofile.zshenv.zlogin.zlogout.profile.envrc
  • .npmrc.yarnrc.yarnrc.yml.pnp.cjs.pnp.loader.mjs.pnpmfile.cjsbunfig.toml.bunfig.toml
  • .bazelrc.bazelversion.bazeliskrc
  • .pre-commit-config.yamllefthook.ymllefthook.yaml.lefthook.yml.lefthook.yaml
  • gradle-wrapper.propertiesmaven-wrapper.properties
  • .devcontainer.json
  • .ripgreprcpyrightconfig.json
  • .mcp.json.claude.json

另请参阅

  • 权限:允许、询问和拒绝规则;托管策略
  • 配置 auto mode:告诉分类器您的组织信任哪些基础设施
  • Hooks:通过 PreToolUsePermissionRequest hooks 的自定义权限逻辑
  • Ultraplan:在 Claude Code on the web 会话中运行 plan mode,带基于浏览器的审查
  • 安全:保障和最佳实践
  • 沙箱:Bash 命令的文件系统和网络隔离
  • 非交互式模式:使用 -p 标志运行 Claude Code