权限模式
来源:本文翻译自 Anthropic 官方文档 Choose a permission mode。
控制 Claude 在编辑文件或运行命令前是否需要询问你。在 CLI 中使用 Shift+Tab 切换模式,在 VS Code、Desktop 和 claude.ai 中使用模式选择器。
当 Claude 想要编辑文件、运行 shell 命令或发起网络请求时,它会暂停并等待你批准操作。权限模式控制这种暂停发生的频率。你选择的模式决定了会话的流程:手动模式让你逐一审查每个操作,而更宽松的模式让 Claude 在更长的不间断时间段内工作,完成后汇报。对于敏感工作选择更多监督,当你信任方向时减少中断。
目录
可用模式
每种模式在便利性和监督之间做出不同的权衡。下表显示了每种模式下 Claude 可以无需权限提示就执行的操作。
| 模式 | 无需询问即可执行的操作 | 最适合 |
|---|---|---|
default |
仅读取。在 CLI 和 IDE 扩展中标记为 Manual | 入门、敏感工作 |
acceptEdits |
读取、文件编辑和常见文件系统命令(mkdir、touch、mv、cp 等) |
迭代你正在审查的代码 |
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 循环 default → acceptEdits → plan。当前模式显示在状态栏中。并非所有模式都在默认循环中:
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 命令:mkdir、touch、rm、rmdir、mv、cp 和 sed。这些命令在以安全环境变量(如 LANG=C 或 NO_COLOR=1)或进程包装器(如 timeout、nice 或 nohup)为前缀时也会被自动批准。与文件编辑一样,自动批准仅适用于工作目录或 additionalDirectories 内的路径。超出该范围的路径、对受保护路径的写入以及其他所有 Bash 命令仍会提示。
当你想在编辑器中或通过 git diff 事后审查更改,而不是逐一内联批准每个编辑时,使用 acceptEdits。
从 Manual 模式按一次 Shift+Tab 进入,或直接启动:
claude --permission-mode acceptEditsPlan 模式:编辑前分析
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_MODE 为 1 之前不会出现在 Shift+Tab 循环中。
{
"env": {
"CLAUDE_CODE_ENABLE_AUTO_MODE": "1"
}
}分类器默认阻止的操作
默认阻止:
- 下载并执行代码,如
curl | bash - 向外部端点发送敏感数据
- 生产部署和迁移
- 云存储上的批量删除
- 授予 IAM 或仓库权限
- 修改共享基础设施
- 不可逆地销毁会话前存在的文件
- 强制推送,或直接推送到
main git reset --hard、git checkout -- .、git restore .、git clean -fd、git stash drop或git stash cleargit commit --amend(当 HEAD 的提交不在本次会话中创建时)terraform destroy、pulumi destroy、cdk destroy或terragrunt destroy
默认允许:
- 工作目录中的本地文件操作
- 安装锁文件或清单中声明的依赖项
- 读取
.env并将凭据发送到匹配的 API - 只读 HTTP 请求
- 推送到你开始的分支或 Claude 创建的分支
分类器如何评估操作
每个操作经过固定的决策顺序。第一个匹配的步骤获胜:
- 匹配你的允许或拒绝规则的操作立即解析,除非是对受保护路径的写入
- 工作目录中的只读操作和文件编辑被自动批准,除非是对受保护路径的写入
- 其他所有操作都交给分类器
- 如果分类器阻止,Claude 收到原因并尝试替代方案
Auto 模式的回退行为
如果分类器连续阻止操作 3 次或总计 20 次,auto 模式暂停,Claude Code 恢复提示。批准提示的操作会恢复 auto 模式。这些阈值不可配置。
dontAsk 模式:仅允许预批准工具
dontAsk 模式自动拒绝所有本来会提示的工具调用。状态栏在激活此模式时显示 ⏵⏵ don't ask on。只有匹配你的 permissions.allow 规则和只读 Bash 命令的操作可以执行;显式ask 规则被拒绝而不是提示。
在启动时设置:
claude --permission-mode dontAskbypassPermissions 模式:跳过所有检查
bypassPermissions 模式禁用权限提示和安全检查,使工具调用立即执行。显式询问规则在此模式下仍然强制提示,针对文件系统根目录或主目录的删除(如 rm -rf / 和 rm -rf ~)仍然作为模型错误的断路器提示。
仅在隔离环境(如容器、虚拟机或没有互联网访问的 dev 容器)中使用此模式。
claude --permission-mode bypassPermissions警告:
bypassPermissions不提供对提示注入或意外操作的保护。对于背景安全检查且权限提示少得多的场景,请改用 auto 模式。
受保护路径
对一小部分路径的写入在除 bypassPermissions 之外的所有模式中都不会被自动批准。这防止了仓库状态和 Claude 自身配置的意外损坏。
| 模式 | 受保护路径写入 |
|---|---|
default、acceptEdits、plan |
提示 |
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.yaml、lefthook.yml.devcontainer.json.mcp.json、.claude.json
相关资源
- 权限规则 - 允许、询问和拒绝规则;受管策略
- 配置 Auto 模式 - 告诉分类器你的组织信任哪些基础设施
- Hooks - 通过
PreToolUse和PermissionRequesthooks 实现自定义权限逻辑 - 沙盒 - Bash 命令的文件系统和网络隔离
- 非交互模式 - 使用
-p标志运行 Claude Code
最后更新:2026 年 7 月 Claude Code 版本:2.1.138 来源:https://code.claude.com/docs/en/permission-modes