据MarkTechPost 10月24日报道,Anthropic已将其Claude Code沙盒化bash工具背后的操作系统级沙盒sandbox-runtime(srt)开源。该工具在不启动容器的情况下,限制一个进程可访问的文件和可连接的主机;它并不绑定于Claude Code,用户自己的代理、本地MCP服务器和普通命令行程序都可运行在其中。
srt以npm包@anthropic-ai/sandbox-runtime发布,版本v0.0.81,解包后约11.4MB,采用Apache-2.0许可,要求Node.js 22.12+,可在macOS或Linux开发机和CI环境运行,Windows支持为alpha。其限制覆盖整个进程树,包括脚本和子进程。macOS使用sandbox-exec和动态生成的Seatbelt配置文件,仅需ripgrep;Linux使用移除网络命名空间的bubblewrap,并需要socat和ripgrep;Windows alpha版使用专用srt-sandbox账户、Windows Filtering Platform出站围栏和显式文件ACL。
网络流量只能通过宿主机上的HTTP和SOCKS5代理离开。Linux上,代理位于绑定挂载进沙盒的Unix套接字之后;macOS的Seatbelt配置文件只允许一个localhost端口。代理再执行域名允许列表和拒绝列表。srt的默认规则是:读取默认允许、除非被拒绝;写入默认拒绝、除非被允许;网络默认拒绝、除非域名被加入允许列表。Anthropic团队认为文件系统和网络隔离缺一不可:没有网络隔离,遭提示注入的代理可能外泄SSH密钥;没有文件系统隔离,代理可能逃出沙盒并获得网络访问。
在用法上,安装可通过npm install -g @anthropic-ai/sandbox-runtime完成,随后在命令前加srt。它同时提供CLI和TypeScript库。对MCP服务器,可将.mcp.json中的命令从npx改为srt,并把原命令作为参数传入;规则放在~/.srt-settings.json中,配置项包括network的allowedDomains和deniedDomains,以及filesystem的denyRead、allowWrite和denyWrite。例如可允许访问api.github.com和*.npmjs.org,拒绝读取~/.ssh,允许写入当前目录并拒绝写入.env。对自有代理,库提供SandboxManager,调用initialize(config)启动代理,再用wrapWithSandbox()返回可执行的包装命令字符串。
Anthropic称,在内部Claude Code使用中,沙盒化使权限提示减少84%。这一数字为自行报告,并非外部基准测试。其针对的是审批疲劳:开发者全天点击“批准”后往往不再阅读批准内容,而固定边界可让代理在边界内自由工作,只在触及边界时请求确认。srt目前仍是beta研究预览。