为什么你应该懂权限模式
第一次用 Claude Code 的人几乎都会被「授权提示」弹窗劝退: 弹窗一直跳,很烦;你以为它已经开始干活了,结果它还在等你点 Yes。
想关掉吧——不知道怎么关;
想完全放开吧——又怕权限失控搞出事。
于是很多人就一直用 acceptEdits「凑合活着」。
把 Claude Code 官方目前的 六种权限模式讲清楚: 它们各自含义、适合场景、风险高低,以及怎么 启动时指定、永久默认、 运行中一键切换。看完你就能根据场景挑最合适的那一档,不再无脑点 Yes。
六种权限模式概览
不查不知道,一查吓一跳——Claude Code 现在已经内置了 六种权限模式。
全都通过 --permission-mode 参数在启动时传入:
claude --permission-mode default
claude --permission-mode acceptEdits
claude --permission-mode plan
claude --permission-mode auto
claude --permission-mode dontAsk
claude --permission-mode bypassPermissions
启动时通过 --permission-mode 传入的参数,
会 覆盖 settings.json 里写好的 defaultMode。
一眼看完六张卡片
对比速览表
下面这张表把六种模式的含义、适合场景、风险横向铺开,方便你快速对号入座。
| 模式 | 含义 | 适合场景 | 风险 |
|---|---|---|---|
default |
标准权限模式 | 日常开发、最稳妥 | 低 |
acceptEdits |
自动接受文件编辑 | 写代码、批量改文件 | 中低 |
plan |
规划模式(只读出方案) | 大重构、复杂任务、先看方案 | 低 |
auto |
自动模式(分类器判断) | 想减少确认,又不想完全放开 | 中 |
dontAsk |
不询问,没允许就拒绝 | 非交互、自动化、CI、脚本环境 | 中 |
bypassPermissions |
跳过所有权限检查 | 容器、沙盒、临时测试环境 | 高 |
从左到右记一个梯度——
default → acceptEdits → auto → dontAsk → bypassPermissions,
问得越来越少、自由度越来越高、风险也越来越大。
plan 是个特例:只读不动手,风险最低但产能也最低。
六种模式逐个详解
default
最保守、最常用claude --permission-mode default
按默认权限系统运行:该问你的时候问你,问的还挺多。 适合刚上手的时候用——慢点没关系,先把「Claude Code 会主动做什么」摸清楚。
acceptEdits
自动接受编辑——「写代码档」claude --permission-mode acceptEdits
这个模式主要 减少「是否允许修改文件」 的确认弹窗。 但它 不是完全放开:执行 Bash、访问敏感文件、运行危险命令时, 仍然可能受到权限规则限制。
让它连续改代码、修 bug、重构多个文件。是大多数人「日常省心档」的首选。
plan
先别动手,先说方案claude --permission-mode plan
规划模式默认 偏只读,不直接改代码。 适合让 Claude Code 先阅读项目、理解结构、提出修改计划——你确认后再切换到其他模式去执行。
大重构、跨文件改动、不确定影响面的任务,先 plan,再 acceptEdits/auto,把风险扼杀在动手之前。
auto
智能自动模式 · 官方推荐的「平衡档」claude --permission-mode auto
官方工程博客的描述是:auto 用 分类器 自动处理一部分权限决策,
减少审批疲劳,同时 比直接跳过权限更安全。简单理解:
default # 经常问你
auto # 安全的自动放行,风险高的拦截或询问
bypassPermissions # 尽量不问,直接放行
从 Claude Code v2.1.142 开始:
把 auto 写在项目级 .claude/settings.json
或 .claude/settings.local.json 里会被忽略
——避免某个仓库自己给自己开启 auto。
要默认启用 auto,必须写到用户级 ~/.claude/settings.json。
dontAsk
不要问我,没允许就拒claude --permission-mode dontAsk
这个名字最容易误解。它 不是「什么都同意」, 而是「不要问我」。所以如果某个工具调用没有被你的权限规则预先允许, 它会 直接失败 / 拒绝,而不是弹窗让你点同意。
适合非交互场景,比如:
claude -p "帮我检查项目问题" --permission-mode dontAsk
因为非交互模式下,你不希望它卡在权限确认那里。
bypassPermissions
危险跳过 · 仅限沙盒claude --permission-mode bypassPermissions
等价于常见的:
claude --dangerously-skip-permissions
Docker 容器、临时目录、测试仓库、虚拟机——可丢弃的环境。 不要在自己的主开发机、生产仓库直接用。
永久设置默认模式
不想每次启动都加 --permission-mode?写到设置文件里就好。
修改这个文件:
~/.claude/settings.json
例:默认启用 auto
{
"permissions": {
"defaultMode": "auto"
}
}
例:默认启用 acceptEdits
{
"permissions": {
"defaultMode": "acceptEdits"
}
}
auto 只能写在 用户级 ~/.claude/settings.json,
写在项目级 .claude/settings.json 会被忽略。其他模式没有这个限制。
运行中切换模式
已经在 Claude Code 交互界面里了,想临时换个模式?
在 CLI 里按 Shift + Tab 即可循环切换权限模式。
官方权限模式文档也是这么写的。
这样一来你完全可以:
-
启动用
plan,先让 Claude 看完代码、出方案。 -
按
Shift + Tab切到acceptEdits,让它放手改代码。 -
遇到不放心的环节,再切回
default,让每一步都问你。
场景化使用建议
每次记一长串名字其实有点难。下面是按场景给的速选——直接照抄就行:
智能放行 + 危险拦截,最平衡。
claude --permission-mode auto
先看完整方案再动手,最稳。
claude --permission-mode plan
连续改代码不打断,最顺。
claude --permission-mode acceptEdits
脚本、CI 场景,不要卡在弹窗。
claude -p "..." --permission-mode dontAsk
容器/虚机里彻底放飞。
claude --permission-mode bypassPermissions
上面是对一般人的建议。非一般的人,直接上 bypassPermissions。
实践下来,目前的智能模型很少会主动做危险操作;而大部分人在面对授权询问的时候,
也都是无脑选 Yes / All / Always——既然总归要点同意,不如一开始就放飞。
前提:你清楚自己在做什么,且改动可回滚(Git worktree 是天然的兜底)。
我会在 Claude Code 启动器 Jcode 和桌面版 JClaude 中
把这六个选项都加进去——特别是 bypassPermissions,
给老司机一键飞起。
知识测验
dontAsk 模式的真实行为是?auto 模式成为默认,应该写到哪个文件?速查表
claude --permission-mode default
claude --permission-mode acceptEdits
claude --permission-mode plan
claude --permission-mode auto
claude --permission-mode dontAsk
claude --permission-mode bypassPermissions
claude --dangerously-skip-permissions
bypassPermissions 的等价写法Shift + Tab
~/.claude/settings.json
defaultMode 持久化(auto 必须写这里)权限模式不是「设了就一劳永逸」。 在生产仓库 / 主开发机用保守档,在沙盒/可丢弃环境才放飞—— 搭配 Git worktree 给 AI 一个独立工作目录,是最稳的玩法。