Claude Code 六种权限模式详解:安全与效率平衡指南
首次使用 Claude Code 时,几乎所有人都会被“授权提示”反复打断。

不断弹出的对话框让人心烦,有时你以为任务已经在进行,其实它仍在等待你的许可。想关闭这些提示,又不清楚该如何关闭,或者担心权限设置不当会引发问题。
之前我也懒得深究,一直沿用 acceptEdits 模式。直到最近,我计划在 JClaude 与 JCode 中加入一个“全自动”模式,才专门花时间梳理了一遍。
下面就把我整理好的内容分享出来。
一、六种权限模式概览
不查不知道,原来 Claude Code 提供了多达六种权限模式。
根据官方文档,当前支持的六种模式及启动方式如下:
claude --permission-mode default
claude --permission-mode acceptEdits
claude --permission-mode plan
claude --permission-mode auto
claude --permission-mode dontAsk
claude --permission-mode bypassPermissions
在启动时通过命令行参数指定,会覆盖 settings 文件中的 defaultMode 配置。
二、各模式含义与使用场景
我整理成下面这个表格,可以快速对照着学习不同模式的定义、用途及风险。
| 模式 | 含义 | 适合场景 | 风险 |
|---|---|---|---|
default | 标准权限模式 | 日常开发,最稳妥 | 低 |
acceptEdits | 自动接受文件编辑 | 写代码、批量修改文件 | 中低 |
plan | 规划模式 | 大型重构、复杂任务,先看方案 | 低 |
auto | 自动模式 | 想减少确认,又不想完全放开 | 中 |
dontAsk | 不询问模式 | 非交互、自动化、CI、脚本环境 | 中 |
bypassPermissions | 跳过权限检查 | 容器、沙盒、临时测试环境 | 高 |
表格内容已经很清晰,如果需要也可以做成更直观的图示。
- 标准权限模式:Claude Code 按默认规则运行,遇到需要授权的编辑、命令以及工具调用时会主动询问。
- 自动接受文件编辑:修改文件时减少打断,但执行命令或有风险的操作仍可能需要确认。
- 规划模式:主要用于让模型先分析和制定计划,偏向只读,不直接改动代码。
- 自动模式:由权限分类器判断哪些工具调用可以自动通过,哪些需要拦截或继续询问。相比
bypassPermissions更安全,但比default更少打断。 - 不询问模式:对未经预先允许的操作不再弹窗询问,而是直接拒绝。
- 跳过权限检查:几乎等同于危险跳过模式,会尽可能不再请求授权。
三、重点模式详述
default 模式
最保守、最常用的模式。
claude --permission-mode default
它会按默认权限系统运行:需要询问时就会询问,且询问的频率较高,适合刚上手体验时使用。
acceptEdits 模式
自动接受编辑。
claude --permission-mode acceptEdits
这个模式主要减少了“是否允许修改文件”的确认次数。不过它并非完全开放权限,执行 Bash、访问敏感文件或运行危险命令时,仍然会受到权限规则的限制。适合让模型连续改代码、修 bug 或跨多个文件重构。
plan 模式
规划模式。
claude --permission-mode plan
它的特点更像“先别动手,先说说方案”。适合让 Claude Code 先阅读项目、理解结构,并提出修改计划,等确认之后再切换到其他模式去执行。
auto 模式
新的自动权限模式。
claude --permission-mode auto
可以把它看作智能模式。根据官方工程博客的介绍,auto 模式利用分类器自动处理一部分权限决策,以减轻审批疲劳,同时比直接跳过权限更安全。
简单理解:
default:经常提问
auto:能判断为安全的操作会自动放行,风险较高的操作则拦截或询问
bypassPermissions:尽量不问,直接放行
另外,官方 settings 文档中还特别说明:
从 Claude Code v2.1.142 起,如果 auto 模式写在项目级配置(.claude/settings.json 或 .claude/settings.local.json)里,将会被忽略,以防止某个仓库自行提升权限。要想默认启用 auto,应写入用户级配置 ~/.claude/settings.json。
dontAsk 模式
不再询问,未被允许的操作会遭到拒绝。
claude --permission-mode dontAsk
这个名称容易让人误解,它并不是“什么都同意”,而是“不要问我”。如果某个工具调用没有被预先允许,它就会直接失败或拒绝,而不会弹出确认窗口。适合非交互场景,例如:
claude -p "帮我检查项目问题" --permission-mode dontAsk
因为在非交互模式下,我们不希望流程卡在权限确认的地方。
bypassPermissions 模式
危险跳过模式。
claude --permission-mode bypassPermissions
它等同于常见的:
claude --dangerously-skip-permissions
即跳过权限提示。只建议在 Docker、临时目录、测试仓库、虚拟机等可丢弃的环境中使用。
四、永久设置默认模式
将配置写入:
~/.claude/settings.json
比如默认启用 auto:
{
"permissions": {
"defaultMode": "auto"
}
}
默认启用 acceptEdits:
{
"permissions": {
"defaultMode": "acceptEdits"
}
}
五、运行过程中切换模式
在 Claude Code 交互界面里,通常可以使用 Shift + Tab 循环切换权限模式。官方文档也指出,在 CLI 中可以通过 Shift+Tab 在不同模式间切换。
六、使用建议
日常开发:
claude --permission-mode auto
大型改动前:
claude --permission-mode plan
想减少编辑确认:
claude --permission-mode acceptEdits
自动化/非交互场景:
claude --permission-mode dontAsk
仅沙盒环境使用:
claude --permission-mode bypassPermissions
上面这些建议适合大多数普通用户,但对于经验丰富的“老司机”,或许直接启用最后一种——“bypassPermissions”才是最高效的选择,当然这也意味着最高的风险。
从我的实践经验来看,目前智能一些的模型很少会自动执行危险操作。而且很多人在面对授权询问时,也常常不假思索地点下“Yes”“All”或“Always”。可是,每次都要记住这一长串模式名称,确实有些难度。
因此,我会在 Claude Code 启动器 JCode 和桌面版 JClaude 中加入这些模式选项,重点也会添加 bypassPermissions,专门留给那些熟练的用户。
我还把这些内容制作成了非常直观的网页版:

网址: