帖子说了什么
@rickyrates 提醒:很多人以为 --dangerously-skip-permissions 只是省掉「能不能改这个文件」的确认,其实它把一层安全检查也一起关掉了。他引用 Claude Code 官方文档的表格:默认模式下,写 .zshrc、.bashrc、.gitconfig、.npmrc、.git、.vscode、.claude 这类路径都会先问你;到了跳过权限模式,表格里只有一个词:Allowed。
他还指出两个容易忽略的细节:仍然会问你的删除检查只认 rm 和 rmdir,像 find ... -delete 这种命令不在其中;以及官方原话说这个模式对提示注入和意外操作没有保护。
对照官方文档
我们核对了 Claude Code 的 permission modes 文档,要点如下:
- 受保护路径:在
default、acceptEdits模式下会弹确认,auto模式交给分类器判断,dontAsk直接拒绝,bypassPermissions一律放行。清单包括.git、.claude、.vscode、.husky、.gitconfig,以及.bashrc、.zshrc、.profile、.envrc、.npmrc等 shell 和包管理配置。 - 关键路径删除:对根目录、顶层目录、家目录、工作目录的
rm/rmdir在任何模式下都不会自动放行。但文档同时写明这个检查只覆盖rm和rmdir,其他被批准的命令同样可能删掉关键路径,所以它不能代替沙箱这类系统级限制。 - deny 规则在所有模式下都生效,包括跳过权限模式;allow 规则在这个模式下没有意义。
- 官方警告:只在容器、虚拟机或不联网的 dev container 这类隔离环境里使用。在 Linux 和 macOS 上,以 root 身份或提权运行时 Claude Code 会拒绝进入这个模式。
为什么和账号安全有关
shell 启动文件和 git 配置被改,影响的不只是这一次会话。别人在 .zshrc 里加一行,下次你打开终端就会执行;改了 .gitconfig 或 .git/hooks,下次提交时也会跑。这些位置一旦被网页或文档里的注入内容利用,你本机存着的 Claude 登录凭证、API Key、云服务密钥都在可读范围内,后果是异常调用、账单和账号风险一起来。
落地做法
- 跳过权限只在隔离环境里开。 容器或虚拟机,最好不联网、非 root 用户。
- 嫌弹窗多,在真机上用 auto 模式。 它保留后台安全检查,受保护路径写入会交给分类器而不是直接放行。
- 写 deny 规则兜底。 把
.zshrc、.gitconfig、.git/hooks、.claude设置文件、密钥目录列进 deny,跳过权限模式下也会拦。 - 团队统一关掉。 管理员可以在组织统一下发的 managed settings 里把
permissions.disableBypassPermissionsMode设为"disable"。 - 跑完检查一遍。 长时间无人值守之后,用
git diff和查看 shell 配置文件修改时间,确认没被动过。
小结
跳过权限模式省掉的不只是点击,还有保护你配置文件的那道闸。真要用,就把它关进容器里。
来源
- @rickyrates:--dangerously-skip-permissions 会放行哪些写入
- 官方文档:Claude Code permission modes(Protected paths、Critical paths 章节)
