Skip to content

3.3 权限模式 — 从谨慎到放飞

学习目标

学完这节课,你将能够:

  • 理解 Claude Code 的 6 种权限模式及其区别
  • 根据自己的熟练程度选择合适的权限模式
  • 配置 allowedTools 实现精细化权限控制
  • 在安全和效率之间找到最佳平衡点

为什么需要权限模式

Claude Code 能读写文件、执行命令、安装依赖——这些能力很强大,但也意味着风险。默认情况下,它每做一个操作都会问你"可以吗?",这很安全但很慢。

权限模式就是在"安全"和"效率"之间调节的旋钮。越往右拧,AI 越自主,你越省事,但风险也越大。

谨慎 ←————————————————————————→ 放飞
默认模式                           全自动模式
(每步都问)                        (什么都不问)

6 种权限模式对比

模式文件读取文件写入执行命令适合谁
默认模式自动需确认需确认所有人的起点
acceptEdits自动自动需确认信任 AI 的编辑能力
acceptCommands自动需确认自动信任 AI 执行的命令
acceptEditsAndCommands自动自动自动快节奏开发
plan自动禁止禁止只要方案不要执行
bypassPermissions自动自动自动(含危险)完全自主

切换权限模式的方式:

bash
# 启动时指定
claude --permission-mode acceptEdits

# 交互中切换(按 Shift+Tab 切换模式)

[截图: 按 Shift+Tab 后显示的权限模式选择菜单]


每种模式详解

默认模式 — 每步都要你确认

这是最安全的模式。Claude Code 每次要写文件或执行命令前,都会暂停并展示它打算做什么,等你按 y 确认后才执行。

Claude: 我要创建文件 src/utils/auth.ts
        [内容预览...]
        
        允许? (y/n/e)

优点:完全可控,适合学习阶段 缺点:需要频繁确认,打断工作流

acceptEdits — 自动接受文件编辑

AI 可以自由读写文件,但执行命令(比如 npm installgit commit)仍需确认。

这是一个很好的平衡点——文件修改通过 Git 可以轻松回退,而命令执行(尤其是涉及网络、安装包的)有不可逆风险。

[截图: acceptEdits 模式下 AI 自动写入文件,但在执行 npm install 时暂停等待确认]

acceptCommands — 自动接受命令执行

和上一个相反:命令自动执行,但文件修改需要确认。适合那些更在意代码变更但信任 AI 执行的 shell 命令的用户。

acceptEditsAndCommands — 全自动(推荐进阶用户)

文件编辑和命令执行都自动进行。你只需要描述需求,然后看 AI 一路执行到底。

你:帮我给项目加上 ESLint,配置 Airbnb 规则,修复所有现有错误

AI:(自动安装 eslint → 创建配置文件 → 运行检查 → 自动修复 → 完成)

[截图: AI 在 acceptEditsAndCommands 模式下一气呵成完成多步操作的终端输出]

建议:搭配 Git 使用。开始前确保工作区干净,如果结果不满意,git checkout . 一键回退。

plan 模式 — 只看方案不动手

AI 只做分析和规划,不会创建或修改任何文件。适合两种场景:

  1. 评估可行性:让 AI 分析一个需求需要改哪些文件、有什么风险
  2. 学习理解:让 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 *)"
  ]
}

这个配置的意思是:

  • 读取、搜索文件:自动放行
  • 写入和编辑 src/ 目录下的文件:自动放行
  • 运行 npm testnpm run lintprettier:自动放行
  • 其他操作(比如删文件、执行其他命令):仍需确认

[截图: settings.json 中的 allowedTools 配置示例]

这比模式切换灵活得多。你可以精确到:

  • 文件路径:只允许修改 src/ 而保护 config/
  • 具体命令:只允许 npm test 而不允许 npm install

不同阶段的推荐策略

新手期(前 1-2 周)

推荐:默认模式

每次操作都看一眼,理解 AI 在做什么。这个阶段的目标是建立信任和理解。

熟练期(2 周 - 2 月)

推荐:acceptEdits + allowedTools 白名单

文件编辑自动放行(反正有 Git),常用命令通过白名单放行,其他命令手动确认。

老手期(2 月以上)

推荐:acceptEditsAndCommands

大部分操作全自动。搭配 Hooks 做安全检查(参见上一节),搭配 Git 做版本兜底。


小结

  • 6 种权限模式:从"每步确认"到"完全自主",按需选择
  • acceptEdits 是性价比最高的起步选择——文件修改自动放行,命令执行仍有把关
  • allowedTools 提供精细化控制,比模式切换更灵活
  • 任何权限模式下,都建议搭配 Git 做安全网——出了问题随时回退
  • 随着使用经验积累,逐步放开权限,而不是一步到位

安全提示bypassPermissions 模式下 AI 可以执行任何命令,包括删除文件、修改系统配置。永远不要在包含重要数据且没有备份的环境中使用这个模式。个人项目可以大胆尝试,生产环境务必谨慎。

用 Claude Code 构建,用 VitePress 驱动