Claude Code 设计了一套非常细粒度的权限系统(Permission System),用来在
自动化开发效率和系统安全之间取得平衡。目前,它支持6 种权限模式。本文是 Claude Code 支持的权限模式总结。
Claude Code 权限模式总结表
| 模式名称 | 配置文件标识符 | 核心行为与逻辑 | 适用场景 |
|---|---|---|---|
| 默认模式 (Normal/Default) |
default |
最高安全标准:拦截并弹窗询问所有潜在的危险操作(包括文件修改、Bash 终端命令、网络请求、MCP 调用)。 | 日常开发、不熟悉的代码库、包含高风险操作的任务。 |
| 自动接受修改 (Auto-Accept Edits) |
acceptEdits |
效率优先:免弹窗自动通过所有的文件修改以及常规安全的系统命令(如 mkdir, touch, mv, rm)。对未知或复杂 Bash 命令仍会弹窗询问。 |
大型项目重构、执行已知实现计划、繁重但低风险的代码编写任务。 |
| 规划模式 (Plan Mode) |
plan |
只读状态:剥夺所有的写入和执行权限,强行限制模型只能执行文件读取(Read)和搜索(Grep/Glob)。 | 项目初期代码库探索、架构分析、需求梳理规划、代码审查(Code Review)。 |
| 智能自动模式 (Auto Mode) |
auto |
AI 安全分类器介入:没有任何弹窗。每次执行工具前,由背后的专属 AI 模型(分类器)瞬间判断该操作是否安全,常规操作放行,破坏性操作直接阻断并要求另寻他路。(注:通常需要 Team/API 账户支持) | 高级自动化开发、希望减少弹窗但又不敢完全放开所有权限的场景。 |
| 不询问模式 (Don’t Ask) |
dontAsk |
隐式拒绝:永远不会弹窗。除非你在细粒度配置中明确把某个工具加入了白名单(Allow),否则 Claude 的任何未经授权请求都会被静默拒绝。 | CI/CD 自动化流水线、极其严格的受限容器环境(无人类监管的场景)。 |
| 绕过权限模式 (Bypass Permissions) |
bypassPermissions |
终极放权:跳过所有的权限检查和确认(等同于启动时的 --dangerously-skip-permissions 标志)。模型可以随意增删文件和执行任意脚本。 |
纯隔离的 Docker 沙盒环境、一次性的实验性仓库(YOLO 模式)。 |
如何通过配置文件修改“默认权限模式”
Claude Code 的配置分为全局配置和项目级配置,后者优先级高于前者。你可以通过修改 settings.json 文件来永久更改默认的权限模式,避免每次打开都手动切换。
1. 找到对应的配置文件
- 全局生效(所有项目):
~/.claude/settings.json(Mac/Linux) 或%USERPROFILE%\.claude\settings.json(Windows) - 项目级生效(仅当前项目):
<你的项目根目录>/.claude/settings.json
2. 修改配置文件的内容
打开该 JSON 文件(如果没有则手动创建),在里面添加或修改 permissions 下的 defaultMode 字段:
{
"permissions": {
"defaultMode": "acceptEdits"
}
}提示:可以将 "acceptEdits" 替换为上表中“配置文件标识符”列的任何一个值(如 "plan", "default", "auto" 等)。
其他临时或快速切换模式的方法
如果你不想改死配置文件,也可以使用以下快捷方式:
-
命令行标志(单次启动): 在终端启动 Claude Code 时,直接通过
--permission-mode参数指定。 bash# 直接以规划模式进入 claude --permission-mode plan # 极客专属:直接以绕过权限模式进入(不推荐在宿主机使用) claude --dangerously-skip-permissions -
会话内热切换(快捷键): 当你在 Claude Code 的交互式终端里时,直接按下键盘的
Shift + Tab键,系统会在default–>acceptEdits–>plan这三种最常用的模式之间来回循环切换。状态栏底部会实时显示当前的模式。