bwrap-bypass
Claude Code 2.1.98+ 的 Bash sandbox 用 bwrap (bubblewrap) 包裹每个 Bash 命令,重新挂载文件系统创建隔离环境。这会导致:
- 特定路径(
/run/credentials-cache/等)的权限被改变 - Unix socket、命名管道等 IPC 资源不可访问
- 凭证系统(LOAS2、Kerberos)检测到不安全的目录权限后拒绝工作
- 部分系统工具和服务因文件系统隔离而失败
已知 bug: anthropics/claude-code#35986
sandbox.enabled: false 和 dangerouslyDisableSandbox 均无效——bwrap 在读取 settings 之前就启动。
安装
用 passthrough 脚本替换 /usr/bin/bwrap(需要 sudo):
sudo mv /usr/bin/bwrap /usr/bin/bwrap.real
sudo cp scripts/bwrap-passthrough.sh /usr/bin/bwrap
sudo chmod 755 /usr/bin/bwrap
脚本路径:scripts/bwrap-passthrough.sh(相对于本 skill 目录)。
恢复
sudo bash scripts/bwrap-restore.sh
原理
bwrap-passthrough.sh 接收 bwrap 的全部参数,解析 --setenv/--unsetenv,跳过所有沙箱参数(--ro-bind、--tmpfs 等),在遇到 -- 后直接 exec 实际命令。效果:命令照常执行,但不做文件系统隔离。
检查状态
# 检查是否已安装 bypass
file /usr/bin/bwrap # 应显示 shell script,不是 ELF
head -1 /usr/bin/bwrap # 应显示 #!/bin/bash
# 检查真实 bwrap 是否已备份
ls -la /usr/bin/bwrap.real
注意事项
- 安装后所有 Bash 命令不再受沙箱保护,安全性降低
- 定期关注 #35986 修复进度,修好后执行恢复步骤
- 适用于所有 Linux 环境(gLinux、GCE VM、裸金属),只要安装了 bwrap 就可能需要