AI 编码代理无法窃取秘密或合并自己的 PR。
你是一位负责任的工程师。你绝不会让AI在你的最敏感系统和代码库中随意横行。
这就是为什么你绝不会仅仅关闭像Claude Code这样的工具的安全保护。它会对每个危险操作询问许可!安全!
于是你等待。你回答。决策疲劳开始产生。然后那一刻发生了。
权限提示忽略了威胁模型中最薄弱的部分:疲惫的用户。如果我们能赋予代理权力同时限制其影响范围,从而将你的决策延迟到PR审查时,那会怎样?
那太好了!这就是 yolo-cage。
curl -fsSL https://github.com/borenstein/yolo-cage/releases/latest/download/yolo-cage -o yolo-cage
chmod +x yolo-cage && sudo mv yolo-cage /usr/local/bin/
yolo-cage build --interactive --up
然后创建一个沙盒并开始编码:
yolo-cage create feature-branch
yolo-cage attach feature-branch # 在 tmux 中附加到代理
前提条件: 安装 libvirt 的 Vagrant(Linux)或 QEMU(macOS,实验性),8GB 内存,4 个 CPU,GitHub PAT(repo 范围),Claude 账户。详情请参阅设置文档。
HTTP/HTTPS 中的秘密 - 出口代理扫描请求体、请求头、URL:
sk-ant-*, AKIA*, ghp_*, SSH 私钥, 通用凭证模式git remote, git clone, git config, git credentialGitHub CLI - 调度器阻止危险命令:
gh pr merge, gh repo delete, gh apiGitHub API - 代理在 HTTP 层阻止:
PUT /repos/*/pulls/*/merge, DELETE /repos/*, webhook 修改数据外泄站点:pastebin.com, file.io, transfer.sh 等。
完整威胁模型请参见架构。
┌──────────────────────────────────────────────────────────────────────────┐
│ 运行时 (Vagrant VM + MicroK8s) │
│ │
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ 沙盒 │ │
│ │ │ │
│ │ 代理 (YOLO 模式下的 Claude Code) │ │
│ │ │ │ │
│ │ ├── git/gh ──▶ 调度器 ──▶ GitHub │ │
│ │ │ • 分支隔离强制执行 │ │
│ │ │ • TruffleHog pre-push 扫描 │ │
│ │ │ │ │
│ │ └── HTTP/S ──▶ 出口代理 ──▶ 互联网 │ │
│ │ • 秘密扫描 (LLM-Guard) │ │
│ │ • 域名阻止列表 │ │
│ └────────────────────────────────────────────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────────────┘
每个分支一个沙盒。代理只能推送到它们的分配分支。所有出站流量都会被过滤。
访问沙盒内运行的 Web 应用:
yolo-cage port-forward feature-x 8080 # localhost:8080 → sandbox:8080
yolo-cage port-forward feature-x 9000:3000 # localhost:9000 → sandbox:3000
yolo-cage port-forward feature-x 8080 --bind 0.0.0.0 # LAN 可访问
关于代理绕过、钩子和资源限制,请参阅配置。
这降低了风险。但不能消除风险。
使用有作用域的凭证。不要使用外泄会导致灾难性后果的生产秘密。请参阅安全审计自行测试。
MIT。参见 LICENSE。
| 命令 | 描述 |
|---|
create <branch> | 创建沙盒 |
attach <branch> | 附加(tmux 中的 Claude) |
shell <branch> | 附加(bash) |
list | 列出沙盒 |
delete <branch> | 删除沙盒 |
port-forward <branch> <port> | 从沙盒转发端口 |
up / down | 启动/停止 VM |
upgrade [--rebuild] | 升级到最新版本 |
version | 显示版本 |