概述
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 表示该模式已激活。
除了文件编辑外,此模式还自动批准以下常用文件系统命令:mkdir、touch、rm、rmdir、mv、cp 和 sed。这些命令即使前缀了安全环境变量(如 LANG=C、NO_COLOR=1)或进程包装器(如 timeout、nice、nohup)也会被自动批准。
需要注意的是,自动批准仅适用于工作目录或 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.allow 和 permissions.deny 规则来微调配特定工具的审批行为,实现精细化的权限管控。
总结
Claude Code 的 6 种权限模式构建了一个从严格到宽松的完整光谱:从 default 的逐一手动批准,到 acceptEdits 的文件编辑信任,到 plan 的分析优先工作流,到 auto 的智能安全分类器,到 dontAsk 的白名单管控,再到 bypassPermissions 的完全自由。
理解每种模式的边界条件和适用场景,能够帮助你在安全与效率之间找到最佳平衡点。对于大多数开发者,推荐在日常开发中使用 acceptEdits 模式,在复杂任务前先用 plan 模式做分析,仅在隔离环境下使用 bypassPermissions。
标签:Claude Code, AI编程, 权限管理, 开发工具, Anthropic, 2026
