Skip to content

权限模式

来源:本文翻译自 Anthropic 官方文档 Choose a permission mode

控制 Claude 在编辑文件或运行命令前是否需要询问你。在 CLI 中使用 Shift+Tab 切换模式,在 VS Code、Desktop 和 claude.ai 中使用模式选择器。

当 Claude 想要编辑文件、运行 shell 命令或发起网络请求时,它会暂停并等待你批准操作。权限模式控制这种暂停发生的频率。你选择的模式决定了会话的流程:手动模式让你逐一审查每个操作,而更宽松的模式让 Claude 在更长的不间断时间段内工作,完成后汇报。对于敏感工作选择更多监督,当你信任方向时减少中断。

目录

  1. 可用模式
  2. 切换权限模式
  3. acceptEdits 模式
  4. Plan 模式
  5. Auto 模式
  6. dontAsk 模式
  7. bypassPermissions 模式
  8. 受保护路径

可用模式

每种模式在便利性和监督之间做出不同的权衡。下表显示了每种模式下 Claude 可以无需权限提示就执行的操作。

模式 无需询问即可执行的操作 最适合
default 仅读取。在 CLI 和 IDE 扩展中标记为 Manual 入门、敏感工作
acceptEdits 读取、文件编辑和常见文件系统命令(mkdirtouchmvcp 等) 迭代你正在审查的代码
plan 仅读取 在更改前探索代码库
auto 所有操作,带后台安全检查 长任务、减少提示疲劳
dontAsk 仅预批准的工具 锁定的 CI 和脚本
bypassPermissions 所有操作 仅限隔离容器和虚拟机

审查每个操作的模式在 CLI、claude --help、VS Code 和 JetBrains 扩展中名为 Manual。其配置值为 default,这是 hooks 和 SDK 集成使用的值。CLI 在你输入值的任何地方都接受 manual 作为别名,例如 claude --permission-mode manual"defaultMode": "manual"。Manual 标签和 manual 别名需要 Claude Code v2.1.200 或更高版本。

在除 bypassPermissions 之外的所有模式中,对受保护路径的写入永远不会被自动批准,以保护仓库状态和 Claude 自身的配置免受意外损坏。

模式设置基线。在之上叠加权限规则来预批准或阻止特定工具。拒绝规则和显式询问规则在每种模式下都适用,包括 bypassPermissions。允许规则在该模式下无效,因为其他所有内容都已被批准。


切换权限模式

你可以在会话中、启动时或作为持久默认值切换模式。模式通过这些控件设置,而不是在聊天中告诉 Claude。

CLI

会话中:按 Shift+Tab 循环 defaultacceptEditsplan。当前模式显示在状态栏中。并非所有模式都在默认循环中:

  • 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 用于非交互式运行

VS Code

会话中:点击提示框底部的模式指示器。

作为默认值:在 VS Code 设置中设置 claudeCode.initialPermissionMode,或使用 Claude Code 扩展设置面板。

模式指示器显示这些标签,映射到它们应用的模式:

UI 标签 模式
Manual default
Edit automatically acceptEdits
Plan mode plan
Auto mode auto
Bypass permissions bypassPermissions

Desktop

使用发送按钮旁边的模式选择器。Auto 和 Bypass permissions 仅在你启用 Desktop 设置后出现。

Web 和 Mobile

claude.ai/code 或移动应用中使用提示框旁边的模式下拉菜单。


acceptEdits 模式:自动批准文件编辑

acceptEdits 模式让 Claude 无需提示即可在工作目录中创建和编辑文件。状态栏在激活此模式时显示 ⏵⏵ accept edits on

除了文件编辑外,acceptEdits 模式还会自动批准常见的文件系统 Bash 命令:mkdirtouchrmrmdirmvcpsed。这些命令在以安全环境变量(如 LANG=CNO_COLOR=1)或进程包装器(如 timeoutnicenohup)为前缀时也会被自动批准。与文件编辑一样,自动批准仅适用于工作目录或 additionalDirectories 内的路径。超出该范围的路径、对受保护路径的写入以及其他所有 Bash 命令仍会提示。

当你想在编辑器中或通过 git diff 事后审查更改,而不是逐一内联批准每个编辑时,使用 acceptEdits

从 Manual 模式按一次 Shift+Tab 进入,或直接启动:

claude --permission-mode acceptEdits

Plan 模式:编辑前分析

Plan 模式告诉 Claude 研究并提出更改,而不实际执行。Claude 读取文件、运行 shell 命令进行探索并编写计划,但不编辑你的源代码。权限提示仍然像 Manual 模式一样适用。

Shift+Tab 或在单个提示前加上 /plan 进入 plan 模式。你也可以从 CLI 启动:

claude --permission-mode plan

再次按 Shift+Tab 可在不批准计划的情况下退出 plan 模式。

审查和批准计划

计划准备好后,Claude 会呈现它并询问如何继续。从该提示中你可以:

  • 批准并在 auto 模式下开始
  • 批准并接受编辑
  • 批准并手动审查每个编辑
  • 带反馈继续规划
  • 使用 Ultraplan 在浏览器中审查

批准计划会退出 plan 模式并将会话切换到每个批准选项描述的权限模式,Claude 开始编辑。要再次规划,用 Shift+Tab 循环回 plan 模式,或在下一个提示前加上 /plan

Ctrl+G 在默认文本编辑器中打开建议的计划,并在 Claude 继续之前直接编辑它。

设置 plan 模式为默认值

要将 plan 模式设为项目的默认值,在 .claude/settings.json 中设置 defaultMode

{
  "permissions": {
    "defaultMode": "plan"
  }
}

Auto 模式:消除权限提示

注意:Auto 模式需要 Claude Code v2.1.83 或更高版本。

Auto 模式让 Claude 无需常规权限提示即可执行。一个单独的分类器模型在操作运行前审查操作,阻止超出你请求范围、针对未识别基础设施或看起来由 Claude 读取的恶意内容驱动的任何操作。显式询问规则仍然强制提示。

警告:Auto 模式是研究预览。它减少权限提示但不保证安全。将其用于你信任大致方向的任务,而不是作为敏感操作审查的替代品。

要求

Auto 模式仅在你的帐户满足以下所有要求时可用:

要求 说明
套餐 所有套餐
所有者 在 Team 和 Enterprise 上,所有者必须先在 Claude Code 管理设置中启用它
模型 Anthropic API:Claude Opus 4.6 或更高,或 Sonnet 4.6 或更高。Bedrock/Agent Platform/Foundry:仅 Claude Sonnet 5、Opus 4.7 和 Opus 4.8
提供商 默认在 Anthropic API 上可用。在其他平台上需要设置 CLAUDE_CODE_ENABLE_AUTO_MODE=1

在 Bedrock、Agent Platform 或 Foundry 上启用

在这些平台上,auto 模式在设置 CLAUDE_CODE_ENABLE_AUTO_MODE1 之前不会出现在 Shift+Tab 循环中。

{
  "env": {
    "CLAUDE_CODE_ENABLE_AUTO_MODE": "1"
  }
}

分类器默认阻止的操作

默认阻止

  • 下载并执行代码,如 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 创建的分支

分类器如何评估操作

每个操作经过固定的决策顺序。第一个匹配的步骤获胜:

  1. 匹配你的允许或拒绝规则的操作立即解析,除非是对受保护路径的写入
  2. 工作目录中的只读操作和文件编辑被自动批准,除非是对受保护路径的写入
  3. 其他所有操作都交给分类器
  4. 如果分类器阻止,Claude 收到原因并尝试替代方案

Auto 模式的回退行为

如果分类器连续阻止操作 3 次或总计 20 次,auto 模式暂停,Claude Code 恢复提示。批准提示的操作会恢复 auto 模式。这些阈值不可配置。


dontAsk 模式:仅允许预批准工具

dontAsk 模式自动拒绝所有本来会提示的工具调用。状态栏在激活此模式时显示 ⏵⏵ don't ask on。只有匹配你的 permissions.allow 规则和只读 Bash 命令的操作可以执行;显式ask 规则被拒绝而不是提示。

在启动时设置:

claude --permission-mode dontAsk

bypassPermissions 模式:跳过所有检查

bypassPermissions 模式禁用权限提示和安全检查,使工具调用立即执行。显式询问规则在此模式下仍然强制提示,针对文件系统根目录或主目录的删除(如 rm -rf /rm -rf ~)仍然作为模型错误的断路器提示。

仅在隔离环境(如容器、虚拟机或没有互联网访问的 dev 容器)中使用此模式。

claude --permission-mode bypassPermissions

警告bypassPermissions 不提供对提示注入或意外操作的保护。对于背景安全检查且权限提示少得多的场景,请改用 auto 模式


受保护路径

对一小部分路径的写入在除 bypassPermissions 之外的所有模式中都不会被自动批准。这防止了仓库状态和 Claude 自身配置的意外损坏。

模式 受保护路径写入
defaultacceptEditsplan 提示
auto 交给分类器
dontAsk 拒绝
bypassPermissions 允许

受保护目录

  • .git
  • .config/git
  • .vscode
  • .idea
  • .husky
  • .cargo
  • .devcontainer
  • .yarn
  • .mvn
  • .claude.claude/worktrees 除外)

受保护文件

  • .gitconfig.gitmodules
  • .bashrc.bash_profile.bash_login.bash_aliases.bash_logout.zshrc.zprofile.zshenv.zlogin.zlogout.profile.envrc
  • .npmrc.yarnrc.yarnrc.yml
  • .pre-commit-config.yamllefthook.yml
  • .devcontainer.json
  • .mcp.json.claude.json

相关资源

  • 权限规则 - 允许、询问和拒绝规则;受管策略
  • 配置 Auto 模式 - 告诉分类器你的组织信任哪些基础设施
  • Hooks - 通过 PreToolUsePermissionRequest hooks 实现自定义权限逻辑
  • 沙盒 - Bash 命令的文件系统和网络隔离
  • 非交互模式 - 使用 -p 标志运行 Claude Code

最后更新:2026 年 7 月 Claude Code 版本:2.1.138 来源:https://code.claude.com/docs/en/permission-modes