如何安全地使用 Claude Code 的 --dangerously-skip-permissions
让 Claude Code 不再询问权限,同时保护你的电脑:--dangerously-skip-permissions 跳过了什么,什么时候 auto 模式就够了,以及如何在容器中运行。
- CLI
- 0.2.17
- 预览 ref
- a2c45c8
简要回答
--dangerously-skip-permissions 会关闭 Claude Code 的权限提示,工具调用不再询问你就直接运行。在一个能限制其访问范围的边界内这样做没问题,但在存着你 SSH 密钥的笔记本上就有风险。
简短的决策清单:
- 你想在旁边看着时少些提示: 先试试 auto 模式或允许列表。它们保留了一道检查。
- 你想长时间无人值守运行: 在容器、虚拟机或 dev container 中,以非 root 用户、限制网络出站、不挂载主机机密的方式使用
--dangerously-skip-permissions。 - 你想离开但仍能被找到: 保留会提示的权限模式,用手机回答提示。
问题
一个熟悉的场景:你开始一次重构,走去厨房,回来发现终端已经在“Allow this command?”上等了二十分钟。第二次遇到时,你搜索怎样让 Claude Code 不再询问权限,找到了 --dangerously-skip-permissions。在使用之前,值得想想在一台装有 SSH 密钥、云凭据和浏览器配置文件的笔记本上,这意味着什么。
这个参数确实存在,也很有用。问题在于在哪里使用它是安全的,以及不安全时该用什么替代。
Claude Code 的 --dangerously-skip-permissions 做了什么
根据 Anthropic 的权限模式页面:
--dangerously-skip-permissions等同于--permission-mode bypassPermissions。工具调用会立即运行,包括对受保护路径的写入。- 少数操作仍会提示,例如明确的 ask 规则,以及被识别为对关键路径执行
rm和rmdir的删除。 - 在未启用它就启动的会话中,无法进入 bypass 模式。
- 在 Linux 和 macOS 上,以 root 身份使用该参数时 Claude Code 会拒绝启动。
- Anthropic 表示只应在容器、虚拟机或 dev container 等隔离环境中使用它。
他们的沙箱页面是这样说的:权限模式决定工具调用是否运行,隔离决定它运行后能访问什么。跳过前者,就只剩后者了。
方法 1:用 auto 模式或允许列表减少 Claude Code 的提示
在关闭提示之前,值得先试试介于两者之间的模式。
auto 模式。
claude --permission-mode auto由一个分类器审查每个操作,而不是询问你。Anthropic 把它描述为逐操作的控制,而不是隔离边界。它需要受支持的模型,组织也可以关闭它。
用于脚本运行的精确允许列表。
claude -p "run the test suite" --permission-mode dontAsk --allowedTools "Bash(npm test)" "Read"列表以外的操作会被直接拒绝,而不是提示。适合 CI 和其他形态固定的任务。
Bash 沙箱。 在手动模式的会话中,开启 auto-allow 的 /sandbox 会在 macOS、Linux 和 WSL2 上从操作系统层面限制 shell 命令。它只覆盖 shell 命令,所以单靠它不足以支撑无人值守运行。
方法 2:在容器或虚拟机中跳过 Claude Code 权限
当你确实想放手运行时,把整个会话放进一个可丢弃的环境中。
在 dev container 中运行 Claude Code
Anthropic 在 Claude Code 仓库中发布了一个参考 dev container,附带默认拒绝的防火墙脚本。他们的建议简要来说:
- 在容器中以非 root 用户运行 Claude Code(dev container 配置中的
remoteUser)。 - 把网络出站限制在 Claude Code 需要的域名。参考的
init-firewall.sh就是做这个的,需要NET_ADMIN和NET_RAW权能。 - 不要挂载
~/.ssh或云凭据文件等主机机密。优先使用短期、限定仓库范围的令牌。 - 用于可信仓库。恶意项目仍然可以读取容器内的任何内容,包括 Claude Code 自己的凭据。
然后:
claude --dangerously-skip-permissions使用一次性虚拟机或闲置服务器
一次性虚拟机或小型服务器可以提供同样的特性,边界还更硬。创建一个单独的用户,只克隆任务需要的仓库,不给该用户访问生产凭据的权限。
检查 bypass 会话仍能访问什么
- 挂载的工作区仍然是你的。 Claude 可以修改绑定挂载项目中的任何文件,这些修改会落到主机上。长时间运行前先 commit 或 stash,以便对比和回滚。
- 网络仍是一扇门。 出站规则允许的地方,会话都能访问。
- 事后审查。 合并前阅读 diff,就像对待别人的 pull request 一样。
方法 3:保留 Claude Code 权限提示,用手机回答
想用这个参数的原因,通常不是提示本身,而是提示出现时你不在键盘前。这个问题有另一种解决方式。
如果你希望权限提示能发到手机上,这样运行中的会话不会一直卡到你回来,同时还能继续使用更安全的模式,Happier 是一款开源应用,可以从手机、桌面或网页跨设备运行和编排 Claude Code、Codex 等代理。
代理运行在你自己的电脑上,手机、桌面或网页应用连接到它们。设置方法见如何在手机上使用 Happier。它在 GitHub 上开源,可以在这里下载,还有一个 Discord。
具体来说:
- 权限提示会显示在手机上,会话等待你时会有推送通知。在那里允许或拒绝。详见审批指南。
- 每个会话可以选择权限模式。 会话中的权限标签会列出代理支持的模式,Claude 有 默认(Default)、只读(Read Only)、自动(Auto)和 YOLO。各后端的默认值在 设置(Settings)→ 会话(Session)→ Permissions 中,应用权限更改(Apply permission changes)决定更改是立即生效还是从你的下一条消息开始生效。
- YOLO 以 bypass 模式运行 Claude Code。 对于 Claude,Happier 的 YOLO 就是
--dangerously-skip-permissions开启的那个 bypassPermissions 模式,所以请在你不介意清空的电脑上选择它。 - 派生的会话不会超过其父会话的权限模式。 当代理启动其他会话时,请求更高模式会被拒绝。设置(Settings)→ Actions → AI 会话创建策略(AI session spawn policy)中还有 权限上限(Permission ceiling),你可以让代理分派工作,同时它启动的一切都保持 Read-only。
一种好用的模式:在笔记本上开一个 默认 会话处理涉及真实凭据的工作,在一次性服务器上开一个 YOLO 会话处理长时间的机械性工作,两者都显示在同一个会话列表中。
坦白说的限制:Happier 转发的是提示和设置,隔离来自会话所运行的电脑或容器。
故障排除
Claude Code 拒绝以 --dangerously-skip-permissions 启动
在 Linux 和 macOS 上,Claude Code 会拒绝 root 身份使用该参数。在容器中检查 whoami。在容器或虚拟机中创建一个普通用户,用它来运行。
我的组织禁用了 bypass permissions 模式
管理员可以通过托管设置中的 permissions.disableBypassPermissionsMode 禁用 bypass 模式。这时可以改用 auto 模式或允许列表。
运行中的 Claude Code 会话无法切换到 bypass 模式
Anthropic 的文档说明,在未启用它就启动的会话中无法进入 bypass 模式。带上参数启动一个新会话。
Claude Code 的 plan 模式没有阻止编辑
Anthropic 表示,在可使用 bypass 的交互式终端会话中,plan 模式的阻止不会强制执行。Claude 仍会被要求先做计划,但它尝试的编辑可能会运行。依赖 plan 模式时,请关闭 bypass。
常见问题
--dangerously-skip-permissions 安全吗?
在隔离的非 root 环境中,网络访问受限且没有主机机密时,对可信仓库来说是合理的选择。在你日常使用的电脑上,代理能访问的范围和你一样。
auto 模式和跳过权限有什么区别?
auto 模式用审查每个操作的分类器替代提示。bypass 模式则去掉了检查。两者都不是隔离边界。
怎样让 Claude Code 不再对同一个命令反复询问?
在设置中为该命令添加允许规则,或者在脚本运行中使用 --allowedTools。其他操作仍会提示。
Happier 的 YOLO 对 Codex 也有效吗?
Happier 为 Codex 和其他后端也提供 YOLO,每个提供商按自己的策略应用。对于 Codex,它对应无需审批的完全访问,所以同样适用上面的隔离建议。