文章

Claude Code 权限模式:四种模式怎么选、bypass 怎么解锁

Claude Code 权限模式:四种模式怎么选、bypass 怎么解锁

一、四种权限模式:四个档位

Claude Code 有四种权限模式,按 Shift+Tab 循环切换:

档位模式行为一句话
default每次工具调用都弹窗确认凡事都要问
acceptEdits文件编辑自动放行,Bash、网络仍要确认改代码不问,跑命令要问
plan只读操作放行,写操作需确认看可以,动要问
🔓bypassPermissions全部跳过,直接执行你办事,我放心

档位序号是 Shift+Tab 的实际循环顺序,不是信任度从低到高。plan 和 default 之间不是简单的”谁比谁高”——plan 读操作更松,但写操作和 default 一样严。bypass 默认不在循环中,除非启动时额外配置。

二、前三档覆盖大部分日常

一次典型的编码会话,plan 和 acceptEdits 基本够用:

探索讨论时用 plan。 读代码、看架构、讨论方案,只做读操作,思路不被打断。

开始写代码时切 acceptEdits。 编辑文件自动放行,跑命令前还是看一眼——大模型可能幻觉,rm -rf 不是闹着玩的。

到这里,大部分人、大部分时候不会觉得缺什么。

三、什么时候需要 bypass

bypass 和前三档有本质区别——不是”更信任一步”,而是把安全带解开了。大模型会犯错,bypass 模式下没有确认环节,错的会被直接执行。

所以切 bypass 是一个有意识的取舍,典型场景有三种:

  • 你在盯着。 方案已定,接下来是大量重复执行。你一直盯着屏幕,看到不对劲随时 Ctrl+C。每步弹窗确认反而多余——你人就是最后一道安全网。
  • 你要离开。 有事要忙,想让 agent 继续跑一段。你知道有风险,但比起卡在弹窗上等你回来点确认,跑偏了起码还有东西可以回滚。
  • 沙盒环境。 Docker 容器、云开发环境,系统本身是隔离的,搞不坏。bypass 的风险几乎为零。

三种场景的共同点:你知道自己在干什么,也清楚后果。

场景想清楚了,自然想切过去。按 Shift+Tab 一试——循环里根本没有。这是刻意设计的。

四、bypass 为什么要加门禁

bypass 解开了所有安全检查,如果允许随时切过去,等于安全带能在你走神时自己解开。

还有一个容易被忽略的风险:第三方 API 代理。如果你用的不是官方 API 直连,中间人可以在模型响应里注入恶意指令。正常情况下弹窗确认是一道人为审核关,你能在确认时发现异常。但 bypass 模式下,注入的指令会直接被执行,没有人拦。

换句话说,bypass 不只是”信任 agent”,而是”信任整条链路”。模型提供商、API 代理、网络传输——每一个环节都得信得过。

所以 Claude Code 给 bypass 加了一道门禁:只有启动时带 --allow-dangerously-skip-permissions 参数,bypass 才会出现在 Shift+Tab 循环里。没带,整个会话期间都是锁着的。

护栏在出发前决定要不要,不能在行驶中随便卸。

但问题也在这里:你必须提前预判”这趟会话后面会不会用到 bypass”。

预判不了的话,流程就变成酱紫:你跟 agent 聊了半小时,方案敲定,准备放手跑。一按 Shift+Tab,切不过去。只能关终端、重启、加 flag,从头来过。前面的上下文和确认过的方案,全部归零。

五、两步搞定:解锁 + 设默认

理想状态是:默认不进 bypass,但保留随时切过去的能力;起步模式别太烦人。

第一步:CLI 解锁 bypass

1
claude --allow-dangerously-skip-permissions

每次手动打比较烦,~/.zshrc 里加个别名:

1
alias cc="claude --allow-dangerously-skip-permissions"

这条命令只是让 bypass 出现在 Shift+Tab 循环里,不会自动切过去。起步还是默认模式,安全基线不变。

第二步:修改默认模式

两种方式,选其一即可。

方式一:CLI 参数(推荐,和别名一起用)

1
alias cc="claude --allow-dangerously-skip-permissions --permission-mode acceptEdits"

--permission-mode 直接指定起步模式,跟第一步的别名合并,一行搞定。

方式二:settings.json

1
2
3
4
5
{
  "permissions": {
    "defaultMode": "acceptEdits"
  }
}

放项目级(.claude/settings.json,提交到仓库团队共享)或用户级(~/.claude/settings.json,只影响自己)都行。

六、配好之后的节奏

  1. 启动 — 默认 acceptEdits,编辑文件自动放行,跑命令要确认。日常够用
  2. 探索讨论 — 切 plan,读操作不打断
  3. 开始写代码 — 切回 acceptEdits
  4. 需要放手时 — 切 bypass,明确知道风险、愿意承担
  5. 完事 — 切回 acceptEdits,恢复安全基线

四个模式全部可用,起步适中,按需换挡。

七、总结

四种权限模式是四个档位:前三档覆盖日常,bypass 是主动承担风险的选择。它默认被锁住是合理的安全设计——弹窗确认不只是防 agent,也是在防整条链路。

--allow-dangerously-skip-permissions 解锁切换能力,配合 defaultMode: "acceptEdits" 设好起步档位,bypass 就成了一个需要清醒确认的工具,而不是默认状态。

本文由作者按照 CC BY 4.0 进行授权