你敢让 AI Agent 在你电脑上随便跑吗?
大部分人不敢。因为 LLM 是概率模型,1% 的灾难概率意味着「不是会不会出事,而是什么时候出事」。
想象一下:你让 Claude 帮你清理项目文件,结果它理解错了,直接 rm -rf ~。你的 SSH 密钥、AWS 凭证、所有代码仓库——全没了。
这不是科幻,这是现实风险。Agent 继承你的完整用户权限,一个误判就能毁掉一切。
Agent Safehouse:macOS 原生沙箱
有个叫 Agent Safehouse 的工具,专门解决这个问题。它的思路很简单:默认拒绝一切,只开放你明确允许的。
不是「Agent 可以访问所有东西,除非你禁止」,而是「Agent 什么都访问不了,除非你授权」。
怎么用?
下载一个 shell 脚本,给它执行权限,然后用它包裹你的 Agent 命令:
# 1. 下载(单个脚本,无依赖)
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. 在沙箱里运行 Agent
cd ~/projects/my-app
safehouse claude --dangerously-skip-permissionsSafehouse 会自动给当前项目目录读写权限,给你的开发工具链读权限。但你的 SSH 密钥、其他代码仓库、个人文件?内核直接拒绝访问。
证明它真的有效
试试让 Agent 读你的 SSH 私钥:
safehouse cat ~/.ssh/id_ed25519
# cat: /Users/you/.ssh/id_ed25519: Operation not permitted内核在进程看到数据之前就拦住了。不是 Agent 自己「决定不读」,而是物理上读不到。
试试访问其他项目:
safehouse ls ~/other-project
# ls: /Users/you/other-project: Operation not permitted但当前项目完全正常:
safehouse ls .
# README.md src/ package.json ...默认安全:Shell 函数包装
更聪明的做法是把 Safehouse 设为默认。在你的 .zshrc 或 .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 "$@"; }之后你直接输入 claude,就自动在沙箱里运行了。想临时绕过?用 command claude。
为什么现在才有这个?
因为 Agent 时代才刚开始。
以前的 AI 只是「回答问题」,现在的 Agent 是「执行命令」。权限模型完全不一样。
Docker 容器?太重,而且 Agent 需要访问你的本地开发环境。虚拟机?更重,而且隔离太彻底,Agent 没法帮你干活。
Safehouse 用的是 macOS 原生的 sandbox-exec,轻量、精确、不影响开发体验。
这不是多余的paranoia
LLM 会犯错。不是「可能」,是「一定会」。
你可以选择:
- 每次都小心翼翼,祈祷 Agent 别搞砸
- 或者用沙箱,让 Agent 放飞自我,反正搞不坏
第二种明显更爽。
Agent Safehouse 让你可以 --yolo 模式跑 Agent,因为它真的搞不坏东西。
项目地址: https://agent-safehouse.dev/
适用平台: macOS(利用原生 sandbox-exec)
安装方式: 单个 shell 脚本,无依赖