主题
3.3 权限模式 — 从谨慎到放飞
学习目标
学完这节课,你将能够:
- 理解 Claude Code 的 6 种权限模式及其区别
- 根据自己的熟练程度选择合适的权限模式
- 配置
allowedTools实现精细化权限控制 - 在安全和效率之间找到最佳平衡点
为什么需要权限模式
Claude Code 能读写文件、执行命令、安装依赖——这些能力很强大,但也意味着风险。默认情况下,它每做一个操作都会问你"可以吗?",这很安全但很慢。
权限模式就是在"安全"和"效率"之间调节的旋钮。越往右拧,AI 越自主,你越省事,但风险也越大。
谨慎 ←————————————————————————→ 放飞
默认模式 全自动模式
(每步都问) (什么都不问)1
2
3
2
3
6 种权限模式对比
| 模式 | 文件读取 | 文件写入 | 执行命令 | 适合谁 |
|---|---|---|---|---|
| 默认模式 | 自动 | 需确认 | 需确认 | 所有人的起点 |
| acceptEdits | 自动 | 自动 | 需确认 | 信任 AI 的编辑能力 |
| acceptCommands | 自动 | 需确认 | 自动 | 信任 AI 执行的命令 |
| acceptEditsAndCommands | 自动 | 自动 | 自动 | 快节奏开发 |
| plan | 自动 | 禁止 | 禁止 | 只要方案不要执行 |
| bypassPermissions | 自动 | 自动 | 自动(含危险) | 完全自主 |
切换权限模式的方式:
bash
# 启动时指定
claude --permission-mode acceptEdits
# 交互中切换(按 Shift+Tab 切换模式)1
2
3
4
2
3
4
[截图: 按 Shift+Tab 后显示的权限模式选择菜单]
每种模式详解
默认模式 — 每步都要你确认
这是最安全的模式。Claude Code 每次要写文件或执行命令前,都会暂停并展示它打算做什么,等你按 y 确认后才执行。
Claude: 我要创建文件 src/utils/auth.ts
[内容预览...]
允许? (y/n/e)1
2
3
4
2
3
4
优点:完全可控,适合学习阶段 缺点:需要频繁确认,打断工作流
acceptEdits — 自动接受文件编辑
AI 可以自由读写文件,但执行命令(比如 npm install、git commit)仍需确认。
这是一个很好的平衡点——文件修改通过 Git 可以轻松回退,而命令执行(尤其是涉及网络、安装包的)有不可逆风险。
[截图: acceptEdits 模式下 AI 自动写入文件,但在执行 npm install 时暂停等待确认]
acceptCommands — 自动接受命令执行
和上一个相反:命令自动执行,但文件修改需要确认。适合那些更在意代码变更但信任 AI 执行的 shell 命令的用户。
acceptEditsAndCommands — 全自动(推荐进阶用户)
文件编辑和命令执行都自动进行。你只需要描述需求,然后看 AI 一路执行到底。
你:帮我给项目加上 ESLint,配置 Airbnb 规则,修复所有现有错误
AI:(自动安装 eslint → 创建配置文件 → 运行检查 → 自动修复 → 完成)1
2
3
2
3
[截图: AI 在 acceptEditsAndCommands 模式下一气呵成完成多步操作的终端输出]
建议:搭配 Git 使用。开始前确保工作区干净,如果结果不满意,git checkout . 一键回退。
plan 模式 — 只看方案不动手
AI 只做分析和规划,不会创建或修改任何文件。适合两种场景:
- 评估可行性:让 AI 分析一个需求需要改哪些文件、有什么风险
- 学习理解:让 AI 解释一个代码库的架构,而不用担心它误改什么
bypassPermissions — 完全放飞(谨慎使用)
取消所有限制,包括一些被默认模式标记为"危险"的操作(比如 rm -rf、修改系统文件)。
强烈建议:除非你非常清楚自己在做什么,否则不要使用这个模式。
精细化权限控制:allowedTools
不想用粗粒度的模式切换?可以在 settings.json 中精确配置哪些工具自动放行:
json
{
"allowedTools": [
"Read",
"Glob",
"Grep",
"Write(src/**)",
"Edit(src/**)",
"Bash(npm test)",
"Bash(npm run lint)",
"Bash(npx prettier --write *)"
]
}1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
这个配置的意思是:
- 读取、搜索文件:自动放行
- 写入和编辑
src/目录下的文件:自动放行 - 运行
npm test、npm run lint、prettier:自动放行 - 其他操作(比如删文件、执行其他命令):仍需确认
[截图: settings.json 中的 allowedTools 配置示例]
这比模式切换灵活得多。你可以精确到:
- 文件路径:只允许修改
src/而保护config/ - 具体命令:只允许
npm test而不允许npm install
不同阶段的推荐策略
新手期(前 1-2 周)
推荐:默认模式1
每次操作都看一眼,理解 AI 在做什么。这个阶段的目标是建立信任和理解。
熟练期(2 周 - 2 月)
推荐:acceptEdits + allowedTools 白名单1
文件编辑自动放行(反正有 Git),常用命令通过白名单放行,其他命令手动确认。
老手期(2 月以上)
推荐:acceptEditsAndCommands1
大部分操作全自动。搭配 Hooks 做安全检查(参见上一节),搭配 Git 做版本兜底。
小结
- 6 种权限模式:从"每步确认"到"完全自主",按需选择
- acceptEdits 是性价比最高的起步选择——文件修改自动放行,命令执行仍有把关
allowedTools提供精细化控制,比模式切换更灵活- 任何权限模式下,都建议搭配 Git 做安全网——出了问题随时回退
- 随着使用经验积累,逐步放开权限,而不是一步到位
安全提示:
bypassPermissions模式下 AI 可以执行任何命令,包括删除文件、修改系统配置。永远不要在包含重要数据且没有备份的环境中使用这个模式。个人项目可以大胆尝试,生产环境务必谨慎。