Claude Code 权限模式完全指南(2026 最新版):6 种模式与配置详解

一、前言

Claude Code 每次编辑文件、执行命令或发起网络请求时,都会暂停并请求你批准。权限模式决定了这个暂停发生的频率——默认模式让你逐一审查每个操作,而宽松模式让 Claude 以更长的不间断工作段运行,完成后汇报结果。

最新版 Claude Code(v2.1.158)新增了 Auto Mode(AI 自动安全审查)和多项 Plan Mode 增强功能。本文基于官方最新文档,全面介绍所有权限模式。

参考来源:Claude Code Permission Modes 官方文档

二、6 种权限模式总览

模式 免确认操作 适用场景
Default(默认) 仅读取操作 新手、敏感项目
Accept Edits 读取 + 文件编辑 + 常用文件系统命令 日常开发
Plan Mode 仅读取(禁止编辑) 代码审查、方案分析
Auto Mode 所有操作(AI 安全审查) 长任务、减少弹窗疲劳
Don’t Ask 仅预批准的工具 CI/CD、受限环境
Bypass Permissions 所有操作(无安全检查) 隔离容器/VM

重要:除 Bypass 外,所有模式对受保护路径(.git、.claude、.env 等)的写入都不会自动批准。

三、模式切换方式

3.1 CLI 会话中切换

按 Shift+Tab 循环切换:default → acceptEdits → plan

可选模式扩展:

  • bypassPermissions:需要启动时加 --permission-mode bypassPermissions 才会出现在循环中
  • auto:满足账号要求后出现在循环中
  • dontAsk:不在循环中,只能通过命令行启动

3.2 启动时指定

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 指定模式启动
claude --permission-mode plan
claude --permission-mode acceptEdits
claude --permission-mode auto
claude --permission-mode dontAsk
claude --permission-mode bypassPermissions

# --dangerously-skip-permissions 等价于 bypassPermissions
claude --dangerously-skip-permissions

# --allow-dangerously-skip-permissions:将 bypass 加入循环但不激活
claude --allow-dangerously-skip-permissions

# 恢复会话 + 跳过权限
claude --resume <会话ID> --permission-mode bypassPermissions

# 非交互模式(-p)+ 指定模式
claude --permission-mode acceptEdits -p "重构 auth 模块"

3.3 设置默认模式

在 ~/.claude/settings.json 中:

1
2
3
4
5
{
"permissions": {
"defaultMode": "acceptEdits"
}
}

可选值:"default" / "acceptEdits" / "plan" / "auto" / "dontAsk" / "bypassPermissions"

注意:Claude Code v2.1.142+ 忽略项目级 .claude/settings.json 中的 defaultMode: "auto",防止仓库自己给自己授权 Auto Mode。必须在用户级 ~/.claude/settings.json 中设置。

3.4 各界面切换

界面 切换方式
CLI Shift+Tab 循环 / --permission-mode 启动参数
VS Code 底部模式指示器点击 / claudeCode.initialPermissionMode 设置
JetBrains 同 CLI(Shift+Tab / 启动参数)
Desktop 发送按钮旁的模式选择器
Web/Mobile 模式下拉菜单

四、各模式详解

4.1 Default 模式

最基本的模式,每个操作都需要确认。

  • 读取操作(Read):自动批准
  • 文件编辑、Shell 命令、MCP 工具:每次弹窗

适合初次使用或处理敏感项目时。

4.2 Accept Edits 模式

自动批准文件编辑,Shell 命令仍需确认。

状态栏显示 ⏵⏵ accept edits。

自动批准的操作:

  • 文件创建、编辑
  • 常用文件系统命令:mkdir、touch、rm、rmdir、mv、cp、sed
  • 带安全环境变量前缀的命令(如 LANG=C、NO_COLOR=1)
  • PowerShell:Set-Content、Add-Content、Clear-Content、Remove-Item 及其别名

仍需确认:

  • 工作目录外的路径
  • 受保护路径的写入
  • 其他所有 Bash 命令

适合日常开发——事后通过编辑器或 git diff 审查变更。

4.3 Plan Mode

Claude 只做研究和提出方案,不修改源代码。权限提示与 Default 模式相同。

增强功能(新版):

  • 批准后切换模式:批准计划时可选择:
    • 以 Auto Mode 开始执行
    • 以 Accept Edits 开始执行
    • 逐一审查每个编辑
    • 继续规划并给出反馈
    • 使用 Ultraplan(浏览器端审查)
  • Ctrl+G:在默认编辑器中直接编辑计划
  • 自动命名会话:批准计划后自动从计划内容生成会话名称

设置为项目默认:

1
2
3
4
5
{
"permissions": {
"defaultMode": "plan"
}
}

4.4 Auto Mode(新增)

Auto Mode 让 Claude 无需权限提示即可执行。一个独立的分类器模型会在操作执行前审查,阻止超出请求范围的操作。

要求:

  • Claude Code v2.1.83+
  • 计划:所有计划均可
  • 模型:Anthropic API 需 Claude Opus 4.6+ 或 Sonnet 4.6;Bedrock/Vertex/Foundry 需 Opus 4.7 或 4.8
  • Team/Enterprise:管理员需在管理设置中启用

在 Bedrock/Vertex/Foundry 启用:

1
2
3
4
5
{
"env": {
"CLAUDE_CODE_ENABLE_AUTO_MODE": "1"
}
}

分类器默认阻止的操作:

  • 下载并执行代码(如 curl | bash)
  • 向外部端点发送敏感数据
  • 生产部署和迁移
  • 云存储批量删除
  • 授权 IAM 或仓库权限
  • 修改共享基础设施
  • 强制推送到 main

分类器默认允许的操作:

  • 工作目录内的本地文件操作
  • 安装 lockfile 中声明的依赖
  • 读取 .env 并发送凭证到对应的 API
  • 只读 HTTP 请求
  • 推送到当前分支或 Claude 创建的分支

对话中的边界声明:
如果你在对话中说”不要推送”或”等我审查后再部署”,分类器会将这些视为阻止信号。边界从对话记录中读取,上下文压缩可能丢失。

回退机制:

  • 连续 3 次被阻止或总计 20 次 → Auto Mode 暂停,恢复手动提示
  • 非交互模式(-p)中反复阻止会中止会话

4.5 Don’t Ask 模式

自动拒绝所有会弹窗的操作。只有匹配 allow 规则和只读 Bash 命令才能执行。ask 规则也被拒绝(不会弹窗)。

1
claude --permission-mode dontAsk

适合 CI/CD 流水线——预先精确定义 Claude 可以做什么。

4.6 Bypass Permissions 模式

禁用所有权限提示和安全检查,操作立即执行。v2.1.126+ 包括受保护路径的写入。

仍会弹窗:删除文件系统根目录或主目录(rm -rf /、rm -rf ~)

安全限制:

  • Linux/macOS 下以 root 或 sudo 运行时拒绝启动
  • 已识别的沙箱内自动跳过此检查
  • 管理员可通过 permissions.disableBypassPermissionsMode: "disable" 禁用
1
2
3
claude --permission-mode bypassPermissions
# 等价
claude --dangerously-skip-permissions

警告:Bypass 模式对提示注入和意外操作无任何防护。需要后台安全检查请用 Auto Mode。

五、受保护路径

在除 Bypass 外的所有模式中,对以下路径的写入永远不会自动批准:

受保护目录:
.git、.config/git、.vscode、.idea、.husky、.cargo、.devcontainer、.yarn、.mvn、.claude(除 .claude/worktrees)

受保护文件:
.gitconfig、.gitmodules、.bashrc、.bash_profile、.zshrc、.profile、.envrc、.npmrc、.yarnrc、.pre-commit-config.yaml、.mcp.json、.claude.json 等

模式 受保护路径写入
Default / Accept Edits / Plan 弹窗确认
Auto 路由到分类器
Don’t Ask 拒绝
Bypass 允许

六、settings.json 精细控制

6.1 三级规则

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"permissions": {
"allow": [
"Bash(git status)",
"Bash(git diff *)",
"Bash(npm run *)",
"Bash(python *)",
"Read",
"Edit(/src/**)"
],
"deny": [
"Bash(rm -rf *)",
"Bash(sudo *)",
"Read(./.env*)",
"Edit(./.env*)"
],
"ask": [
"Bash(git push *)",
"Bash(git commit *)",
"Edit(/package.json)"
]
}
}

优先级:deny > ask > allow

6.2 规则语法

1
<Tool>(<pattern>)
  • Tool:Bash、Read、Edit、Write、WebFetch、WebSearch、Grep、Glob 等
  • pattern:glob 通配符,支持 * 和 **
1
2
3
4
"Bash(*)"           // 所有 Bash 命令
"Bash(git *)" // git 开头的命令
"Edit(/src/**)" // src 目录下所有文件
"Read" // 所有读取操作

6.3 管理员控制选项

设置 作用
permissions.disableBypassPermissionsMode: "disable" 禁用 Bypass 模式
permissions.disableAutoMode: "disable" 禁用 Auto Mode
permissions.additionalDirectories 扩展工作目录范围

6.4 Auto Mode 配置

管理员可通过 autoMode 设置自定义分类器行为:

1
2
3
4
5
6
7
8
{
"autoMode": {
"allow": ["Bash(npm test)", "$defaults"],
"soft_deny": ["Bash(rm -rf *)", "$defaults"],
"hard_deny": ["Bash(sudo *)", "$defaults"],
"environment": ["trusted-repo.example.com", "$defaults"]
}
}

$defaults 表示继承内置规则。

七、最佳实践

7.1 日常开发推荐配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
"permissions": {
"defaultMode": "acceptEdits",
"allow": [
"Bash(git status)",
"Bash(git diff *)",
"Bash(git log *)",
"Bash(npm run *)",
"Bash(python *)",
"Read",
"Edit(/src/**)",
"Edit(/tests/**)"
],
"deny": [
"Bash(rm -rf *)",
"Bash(sudo *)",
"Read(./.env*)"
],
"ask": [
"Bash(git push *)",
"Bash(git commit *)",
"Edit(/package.json)"
]
}
}

7.2 场景选择

场景 推荐模式
初次使用 / 敏感项目 Default
日常编码 Accept Edits + allow 白名单
代码审查 / 方案分析 Plan Mode
长时间重构任务 Auto Mode
只读检查 Don’t Ask
CI/CD 自动化 Don’t Ask(预定义 allow)
Docker / VM 隔离环境 Bypass Permissions

7.3 模式选择决策树

1
2
3
4
5
6
7
需要 Claude 自主工作?
├── 是 → 环境是否隔离(容器/VM)?
│ ├── 是 → Bypass Permissions
│ └── 否 → Auto Mode(AI 安全审查)
├── 需要审查方案再执行? → Plan Mode
├── 只需自动编辑文件? → Accept Edits
└── 需要每步确认? → Default

八、命令速查

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 切换模式(会话中)
Shift+Tab # 循环 default → acceptEdits → plan

# 启动时指定模式
claude --permission-mode plan
claude --permission-mode auto
claude --permission-mode bypassPermissions
claude --dangerously-skip-permissions # 等价于 bypass
claude --allow-dangerously-skip-permissions # 加入循环但不激活

# 恢复会话 + 指定模式
claude --resume <ID> --permission-mode bypassPermissions

# 非交互模式
claude -p "任务描述" --permission-mode acceptEdits

# 查看 Auto Mode 默认规则
claude auto-mode defaults

九、总结

Claude Code 的权限系统从最初的 5 种模式进化到了 6 种,核心变化是 Auto Mode 的引入——它用 AI 分类器替代了人工弹窗,在安全和效率之间找到了新的平衡点。

选择建议:

  • 对安全要求高 → Default / Plan
  • 追求效率 → Auto Mode(有 AI 安全审查)
  • 完全信任环境 → Bypass(仅限容器/VM)
  • CI/CD → Don’t Ask(精确定义 allow 规则)

如果 settings.json 的 allow 规则能满足需求,优先用规则配置,而不是直接开 Bypass。


参考来源