Agent Safehouse实战:如何把Claude Code、Codex关进沙箱还保持高效编码
【免费下载链接】agent-safehouseSandbox your local AI agents so they can read/write only what they need项目地址: https://gitcode.com/gh_mirrors/ag/agent-safehouse
Agent Safehouse是一款 macOS 原生 AI 编码代理沙箱工具,用一条命令就能把 Claude Code、Codex 等 AI 编程助手关进"安全屋":默认拒绝一切,只放行它真正需要的文件和目录,让 AI 智能体在沙箱中高效编码的同时,保护你的 SSH 密钥、云凭证和个人文件不受提示注入攻击波及。
为什么需要给 AI 代理上沙箱 🔒
LLM 编码代理(Coding Agent)会在你的终端里以你的用户权限执行 shell 命令。一次提示注入、一条误判的命令,就可能让它碰到:
~/.ssh下的 SSH 私钥- 云厂商凭证(AWS、GCP 等)
- 无关的代码仓库和个人文件
Agent Safehouse 基于 macOS 自带的sandbox-exec(Seatbelt)构建,采用**可组合的策略配置文件 + 默认拒绝(deny-first)**模型,用极小的性能开销显著缩小"爆炸半径"。它不是虚拟机,而是实用的加固层——详见 isolation-models.md 中 VM / 容器 / Safehouse 的隔离模型对比。
每条策略规则只回答一个问题:
代理需要它才能完成工作吗?
一键安装步骤
两种安装方式,任选其一:
方式一:Homebrew 安装(推荐)
brew install eugene1g/safehouse/agent-safehouse方式二:独立脚本安装
mkdir -p ~/.local/bin curl -fsSL https://github.com/eugene1g/agent-safehouse/releases/latest/download/safehouse.sh \ -o ~/.local/bin/safehouse chmod +x ~/.local/bin/safehouse纯 Bash 实现、零依赖,安装后即可使用。
最快上手:把 Claude Code 关进沙箱
进入你的项目目录,一条命令即可启动沙箱化的 Claude Code:
cd ~/projects/my-app safehouse claude --dangerously-skip-permissionsCodex 同理:
safehouse codex --dangerously-bypass-approvals-and-sandboxSafehouse 会自动为当前目录授予读写权限,并为 Claude、Codex 等 14+ 主流智能体(Aider、Cline、Gemini CLI、Goose、OpenCode 等)自动匹配内置代理档案,档案文件位于 profiles/60-agents/ 目录,例如 claude-code.sb 和 codex.sb。
高效配置技巧:shell 函数让日常使用无感
官方推荐的用法是在 shell 配置中定义包装函数,之后打claude就等于在沙箱里运行,同时只透传必要的 API Key 环境变量(避免把GITHUB_TOKEN等全部密钥泄露进沙箱):
# ~/.bashrc 或 ~/.zshrc safe() { safehouse --add-dirs-ro=~/mywork "$@"; } safekeys() { safe --env-pass=OPENAI_API_KEY,ANTHROPIC_API_KEY,GEMINI_API_KEY "$@"; } claude() { safe claude --dangerously-skip-permissions "$@"; } codex() { safe codex --dangerously-bypass-approvals-and-sandbox "$@"; }完整配置参见 getting-started.md。
精确控制读写范围
| 场景 | 参数 |
|---|---|
| 额外授予读写目录 | --add-dirs=/tmp/scratch:/data/shared |
| 授予只读参考库 | --add-dirs-ro=/repos/shared-lib |
| 只读单个文件 | --add-dirs-ro=~/.gitignore |
| 追加自定义策略(最后加载) | --append-profile=./local-overrides.sb |
| 覆盖工作目录 | --workdir=/tmp/scratch |
常用命令示例:
# 授予只读参考库后运行 Aider safehouse --add-dirs-ro=/repos/shared-lib -- aider # 信任并加载 <workdir>/.safehouse 项目级配置 safehouse --trust-workdir-config aider沙箱里 AI 到底能做什么、不能做什么
默认放行(保证高效编码)⚡
- 当前工作目录的读写权限
- Shell、编译器、包管理器所需的系统/工具链路径(
git、make、clang等) - 进程执行与 fork(正常开发子进程树)
- 网络访问(注册表、API、远端、MCP 服务器)
默认拒绝(保护敏感资产)🛡️
~/.ssh下的 SSH 私钥- 递归读取整个
$HOME(stat ~能成功,但ls ~和cat ~/secret.txt会失败) - Shell 启动文件(除非
--enable=shell-init) - 浏览器 Cookie、登录数据等敏感数据
- 剪贴板、Docker、kubectl 等集成(均需显式
--enable开启)
需要 Docker / 浏览器等集成?用 --enable 按需开启
所有敏感能力都是显式 opt-in:
# Docker socket 访问 safehouse --enable=docker -- docker ps # Playwright 驱动的 Chrome 测试 safehouse --enable=playwright-chrome -- codex # GPG 提交签名(先在沙箱外启动 gpg-agent) safehouse --enable=gpg -- git commit -S -m "feat: signed"完整的可选特性清单见 options.md。
进阶:用策略文件做最终否决
--append-profile追加的策略最后加载,可以用 deny 规则收窄前面的默认授权。例如让工作目录虽可写,但.env文件始终不可读:
;; ~/.config/agent-safehouse/local-overrides.sb (deny file-read* file-write* (workdir-literal "/.env"))策略语法完全可组合,基础层、工具链层、集成层的档案分别位于 profiles/00-base.sb、profiles/30-toolchains/、profiles/50-integrations-core/ 目录。
常见问题:沙箱和 VM、容器有什么区别?
简短结论:Safehouse 是主机级策略加固层,不是 VM 替代品。
| 模型 | 隔离强度 | 工作流摩擦 | 适合场景 |
|---|---|---|---|
| 虚拟机 | 最强(独立内核) | 高(需同步、重复装工具) | 对抗性威胁防御 |
| 容器 | 中等(共享内核) | 中 | 可复现的应用运行环境 |
| Safehouse | 实用级(路径/服务最小授权) | 极低(原生 macOS 工具链不动) | 日常本地编码代理的风险收敛 |
若需要更强隔离,可以在 VM 内部再套一层 Safehouse,兼得边界隔离与细粒度策略。详细对比见 isolation-models.md。
如何验证沙箱策略是否符合预期
内置两个调试开关,随时查看"最终生效"的策略:
# 打印生成的完整策略 safehouse --stdout # 解释生效的 workdir / 授权 / 档案选择 safehouse --explain --stdout对每个受支持代理的完整沙箱行为分析报告(文件系统访问模式、网络行为等)收录在 agent-investigations/ 目录,例如 claude-code.md、codex.md。
小结
Agent Safehouse 的核心价值就三点:
- 一条命令沙箱化:
safehouse claude/safehouse codex即刻生效 - 默认拒绝 + 最小授权:SSH 密钥、
~/.env、个人文件天然隔离 - 工作流几乎零改动:原生 macOS 工具链、网络、Git 全部照常工作
配合 shell 函数包装后,你几乎感觉不到它的存在——直到某天 AI 试图cat ~/.ssh/id_rsa被沙箱挡下时,你会庆幸多这道防线。🏠
【免费下载链接】agent-safehouseSandbox your local AI agents so they can read/write only what they need项目地址: https://gitcode.com/gh_mirrors/ag/agent-safehouse
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考