Claude Code 六种权限模式详解:从全手动审批到完全自主执行

概述

Claude Code 作为当前最流行的 AI 编程助手之一,其权限管理系统是其最核心的设计之一。当 Claude 想要编辑文件、运行 Shell 命令或发起网络请求时,它会暂停并请求你的批准。权限模式(Permission Mode)控制着这种暂停发生的频率。

Claude Code 提供了 6 种权限模式,每种模式在便捷性与安全性之间做出了不同的取舍。本文将从官方文档出发,逐一详解每种模式的功能、适用场景、操作命令以及最佳实践建议,帮助开发者在日常工作中做出最合适的选择。

权限模式总览

Claude Code 目前支持以下 6 种权限模式,按权限开放程度从低到高排列:

模式无需审批即可执行最佳场景
default(默认)仅读取操作初次使用、敏感项目
acceptEdits(自动修改)读取、文件编辑、常用文件系统命令迭代已有代码
plan(计划模式)仅读取探索代码库,先分析后修改
auto(自动模式)全部操作(后台安全检查)长时间任务、减少审批疲劳
dontAsk(不询问模式)仅预审批的工具锁定 CI 和脚本环境
bypassPermissions(绕过权限)全部操作仅在隔离容器或虚拟机中使用

在所有模式下(除 bypassPermissions 外),向受保护路径的写入操作永远不会被自动批准,这保证了仓库状态和 Claude 自身配置的安全。

一、Default 模式(默认模式)

功能说明

Default 是 Claude Code 启动时的默认模式,也是权限控制的基线。在此模式下,Claude 只能执行读取操作而无需审批——包括读取文件、搜索代码库、分析代码结构等。任何修改状态的操作——编辑文件、执行 Shell 命令、发起网络请求——都会暂停并请求你的明确批准。

适用场景

  • 初次使用 Claude Code,需要熟悉工具行为
  • 处理敏感或高风险的代码仓库
  • 需要对每一步操作保持完全掌控

操作命令

# 默认启动(default 模式)
claude

# 在会话中切换模式(Shift+Tab 循环切换)
# 循环顺序: default → acceptEdits → plan

最佳实践

Default 模式是安全的起点。如果你发现每次需要批准大量操作导致效率低下,可以考虑升级到 acceptEdits 模式以减少审批频次。但如果是处理生产环境或敏感数据,建议坚持使用 default 模式。

二、AcceptEdits 模式(自动修改模式)

功能说明

AcceptEdits 模式是 default 模式松绑一级的权限设置。它允许 Claude 在工作目录内创建和编辑文件而无需逐一审批。状态栏会显示 ⏵⏵ accept edits on 表示该模式已激活。

除了文件编辑外,此模式还自动批准以下常用文件系统命令:mkdirtouchrmrmdirmvcpsed。这些命令即使前缀了安全环境变量(如 LANG=CNO_COLOR=1)或进程包装器(如 timeoutnicenohup)也会被自动批准。

需要注意的是,自动批准仅适用于工作目录或 additionalDirectories 范围内的路径。范围外的路径写入、受保护路径写入以及其他所有 Shell 命令仍然需要审批。

适用场景

  • 你在 review 已有代码并需要进行迭代修改
  • 你更倾向于通过 git diff 或编辑器事后审查变更内容
  • 日常开发中的代码重构、功能实现

操作命令

# 以 acceptEdits 模式启动
claude --permission-mode acceptEdits

# 在会话中通过 Shift+Tab 切换至此模式
# 设置为默认模式
# .claude/settings.json
{
  "permissions": {
    "defaultMode": "acceptEdits"
  }
}

最佳实践

这是大多数开发者的日常推荐模式。你不需要为每个文件编辑点击"确认",但关键操作(网络请求、数据库写入、部署命令)仍然需要你的审批。如果你使用 VS Code 扩展,可以在设置中将 claudeCode.initialPermissionMode 设置为 acceptEdits。

三、Plan 模式(计划模式)

功能说明

Plan 模式将 Claude Code 切换为"只研究不修改"的工作流。在此模式下,Claude 可以读取文件、运行 Shell 命令进行探索,并生成一份详细计划,但不会对源码做任何修改。权限审批规则与 default 模式一致。

审批计划流程

当计划生成完毕后,Claude 会呈现计划并询问后续操作。你可以选择:

  • 批准后进入 auto 模式自动执行
  • 批准后进入 acceptEdits 模式自动修改
  • 批准后逐一手动审查每项修改
  • 继续提供反馈优化计划
  • 使用 Ultraplan 在浏览器中审查

你还可以按 Ctrl+G 在默认文本编辑器中打开计划,直接编辑后再让 Claude 执行。

适用场景

  • 探索不熟悉的代码库结构
  • 在做出修改前需要 AI 先给出方案
  • 代码审查或安全审计场景

操作命令

# 以 plan 模式启动
claude --permission-mode plan

# 单次 prompt 使用计划模式
/plan 分析这个模块的性能瓶颈

# 在会话中通过 Shift+Tab 切换
# 设置为项目默认模式
{
  "permissions": {
    "defaultMode": "plan"
  }
}

最佳实践

在处理不熟悉的代码库或进行大型重构前,先用 plan 模式让 Claude 生成方案。特别是处理遗留系统时,这可以避免 AI 在不完全理解代码结构的情况下做出错误的修改。

四、Auto 模式(自动模式)

功能说明

Auto 模式是 Claude Code v2.1.83 推出的高级权限模式。在此模式下,Claude 可以在没有权限提示的情况下自由执行操作。一个独立的分类器模型会在操作执行前对其进行检查,阻止任何超范围、针对未识别基础设施或受恶意内容驱动的行为。

注意:Auto 模式目前是研究预览版(Research Preview)。它能减少审批提示,但不保证绝对安全。适用于你信任大致方向的任务,不应替代敏感操作的审查机制。

使用条件

Auto 模式并非对所有用户开放,需要满足以下条件:

  • 订阅计划:Max、Team、Enterprise 或 API 计划(Pro 不可用)
  • 管理员开启:Team 和 Enterprise 需管理员在 Claude Code 管理设置中启用
  • 模型支持:Claude Sonnet 4.6、Opus 4.6、Opus 4.7
  • API 提供商:仅限 Anthropic API(Bedrock、Vertex、Foundry 不可用)

分类器默认行为

分类器信任你的工作目录和仓库的 Git Remote 配置。除此之外的所有内容都被视为外部资源:

默认阻止:

  • 下载并执行代码(如 curl | bash
  • 向外部端点发送敏感数据
  • 生产环境部署和数据库迁移
  • 云存储上的批量删除
  • 授予 IAM 或仓库权限
  • 修改共享基础设施
  • 不可逆地销毁会话前已存在的文件
  • 强制推送或直接推送到 main 分支

默认允许:

  • 工作目录内的本地文件操作
  • 安装锁文件或清单中声明的依赖
  • 读取 .env 并向匹配的 API 发送凭据
  • 只读 HTTP 请求
  • 推送到你开始的分支或 Claude 创建的分支

操作命令

# Shift+Tab 循环中进入 auto 模式
# 查看默认的 auto 模式规则
claude auto-mode defaults

安全限流机制

如果分类器连续 3 次或累计 20 次阻止操作,auto 模式会自动暂停并恢复提示模式。手动批准被阻止的操作后可恢复 auto 模式。这些阈值不可配置。

最佳实践

Auto 模式适合长期运行的自动化任务(如批量代码重构、大规模测试生成)。建议配合管理员配置的 trusted infrastructure 使用,进一步缩小安全边界。

五、DontAsk 模式(不询问模式)

功能说明

DontAsk 模式与 auto 模式看似"都减少提示",但工作逻辑完全不同。它默认拒绝所有未明确预审批的工具调用,只有通过 permissions.allow 规则或 /permissions 命令显式批准的特定操作才能执行。这是一个"白名单"模型——先拒绝一切,然后逐个开启。

适用场景

  • CI/CD 管道中的自动化脚本
  • 受严格管控的生产环境
  • 需要精确控制 AI 可执行操作集合的场景

操作命令

# 启动 dontAsk 模式
claude --permission-mode dontAsk

# 注意:dontAsk 模式不在 Shift+Tab 循环中
# 必须在启动时通过 --permission-mode 标志设置

配置预审批规则示例

{
  "permissions": {
    "defaultMode": "dontAsk",
    "allow": [
      "Read",
      "Bash(cat *)",
      "Edit(./src/**)"
    ],
    "deny": [
      "Bash(curl http://*)",
      "Bash(rm -rf /)"
    ]
  }
}

最佳实践

DontAsk 是 CI/CD 和自动化脚本场景的首选模式。通过精细的 allow/deny 规则,可以构建一个完全可预测的 AI 行为环境。配合受保护路径机制,确保仓库和配置的完整性。

六、BypassPermissions 模式(绕过权限)

功能说明

BypassPermissions 是权限控制等级最高的模式。它绕过整个权限系统,允许 Claude 执行任何操作而无需任何审批。注意:此模式名称中的 "bypassPermissions" 与标志名 "--dangerously-skip-permissions" 明确暗示了其风险。

安全警告:此模式会跳过所有权限检查,包括受保护路径的写入保护。仅在隔离容器或虚拟机中使用。

启用方式

不能通过 Shift+Tab 进入此模式。需要通过启动标志显式授权:

# 直接启用(立即生效)
claude --permission-mode bypassPermissions
# 或
claude --dangerously-skip-permissions

# 添加到 Shift+Tab 循环但不激活
claude --allow-dangerously-skip-permissions

设置后,bypassPermissions 会出现在 Shift+Tab 循环中的 plan 之后、auto 之前。VS Code 扩展中也需要在设置中开启 "Allow dangerously skip permissions" 切换后才会显示。

适用场景

  • Docker 容器或不包含重要数据的隔离虚拟机
  • 临时沙箱环境中进行大规模实验
  • 自动化测试场景(CI 中配合 dontAsk 效果更可控)

最佳实践

规则非常简单:永远不要在主机开发环境中使用 bypassPermissions。如果确实需要免审批体验,优先考虑 auto 模式或配置完善的 dontAsk 模式。将 bypassPermissions 视为最后手段,仅在具有回滚快照的隔离环境中使用。

受保护路径机制

在所有模式(除 bypassPermissions 外),Claude Code 保护以下路径免受自动写入:

  • .claude/ 目录——Claude 的配置和状态文件
  • .git/ 目录——Git 仓库元数据
  • .env 文件——环境变量配置
  • 会话启动时已存在的未被跟踪文件

这些保护确保了即使在高权限模式下,Claude 也不会意外破坏你的仓库基础设施或配置。

模式选择决策指南

选择哪种模式取决于你的工作场景、信任程度和安全要求。以下是一个快速决策流程:

  • 初次接触 Claude Code → 使用 default 模式,了解其审批流程
  • 日常编码迭代 → 使用 acceptEdits 模式,免去文件编辑的逐一确认
  • 分析不熟悉的代码库 → 使用 plan 模式,先出方案再操作
  • 长时间批量任务 → 使用 auto 模式,配合后台安全检查
  • CI/CD 自动化 → 使用 dontAsk 模式,配置严格的 allow 规则
  • 隔离沙箱环境 → 使用 bypassPermissions 模式,但做好回滚准备

此外,你还可以在任意模式下通过 .claude/settings.json 中的 permissions.allowpermissions.deny 规则来微调配特定工具的审批行为,实现精细化的权限管控。

总结

Claude Code 的 6 种权限模式构建了一个从严格到宽松的完整光谱:从 default 的逐一手动批准,到 acceptEdits 的文件编辑信任,到 plan 的分析优先工作流,到 auto 的智能安全分类器,到 dontAsk 的白名单管控,再到 bypassPermissions 的完全自由。

理解每种模式的边界条件和适用场景,能够帮助你在安全与效率之间找到最佳平衡点。对于大多数开发者,推荐在日常开发中使用 acceptEdits 模式,在复杂任务前先用 plan 模式做分析,仅在隔离环境下使用 bypassPermissions。

标签:Claude Code, AI编程, 权限管理, 开发工具, Anthropic, 2026

滚动至顶部