Agent Safehouse – macOS 原生沙箱用于本地代理

发布: (2026年3月9日 GMT+8 04:30)
3 分钟阅读

Source: Hacker News

针对主流代理的测试

所有代理在各自的沙箱中都能完美运行,但无法影响沙箱之外的任何内容。

拒绝优先访问模型

代理会继承您完整的用户权限。Safehouse 颠倒这一点——除非明确授予,否则一切均不可访问。

~/my-project/read/write
~/shared-lib/read-only
~/.ssh/denied
~/.aws/denied
~/other-repos/denied

入门指南

下载一个单文件脚本,赋予可执行权限,然后在其中运行您的代理。无需构建步骤,也不需要额外依赖——只需 Bash 和 macOS。

# 1. 下载 Safehouse(单个自包含脚本)
mkdir -p ~/.local/bin
curl -fsSL https://raw.githubusercontent.com/eugene1g/agent-safehouse/main/dist/safehouse.sh \
  -o ~/.local/bin/safehouse
chmod +x ~/.local/bin/safehouse

# 2. 在 Safehouse 中运行任意代理
cd ~/projects/my-app
safehouse claude --dangerously-skip-permissions

Safehouse 会自动授予所选工作目录(默认是 git 根目录)的读写权限,以及对已安装工具链的读取权限。您大部分的主目录——SSH 密钥、其他仓库、个人文件——都会被内核拒绝访问。

看到失败——证明沙箱有效

尝试在 Safehouse 中读取敏感内容。内核会在进程看到数据之前阻止它。

# 尝试读取您的 SSH 私钥——被内核拒绝
safehouse cat ~/.ssh/id_ed25519
# cat: /Users/you/.ssh/id_ed25519: Operation not permitted

# 尝试列出另一个仓库——不可见
safehouse ls ~/other-project
# ls: /Users/you/other-project: Operation not permitted

# 但当前项目可以正常工作
safehouse ls .
# README.md  src/  package.json  ...

默认安全的 shell 函数

将以下内容添加到您的 shell 配置文件中,所有代理都会自动在 Safehouse 中运行——您无需记住额外操作。若想在不使用沙箱的情况下运行,可使用 command claude 绕过函数。

# ~/.zshrc or ~/.bashrc
safe() { safehouse --add-dirs-ro=~/mywork "$@"; }

# 沙箱模式——默认。直接输入命令名即可。
claude() { safe claude --dangerously-skip-permissions "$@"; }
codex()  { safe codex --dangerously-bypass-approvals-and-sandbox "$@"; }
amp()    { safe amp --dangerously-allow-all "$@"; }
gemini() { NO_BROWSER=true safe gemini --yolo "$@"; }

# 非沙箱模式——使用 `command` 绕过函数
# command claude   # 普通交互会话
0 浏览
Back to Blog

相关文章

阅读更多 »

介绍 Attune.js

封面图片:Introducing Attune.js https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads....