本页目录6
- Claude Code 新增沙箱能力,依靠文件系统隔离+网络隔离两层防护,官方称权限提示减少了 84%
- 文件系统隔离限制 Claude 只能读写指定目录,网络隔离限制只能连接已批准的服务器,两者缺一不可
- 沙箱化 Bash 工具基于 Linux 的 bubblewrap 与 macOS 的 seatbelt 等操作系统级原语实现,可通过 /sandbox 命令查看配置文档
- 该沙箱运行时已开源,仓库地址为 github.com/anthropic-experimental/sandbox-runtime
- Claude Code 的 Web 版本在隔离云沙箱中运行会话,敏感凭证(如 git 凭证、签名密钥)始终不进入沙箱内部
- Web 版本通过自定义「Git 安全代理」用作用域凭证验证并转发 Git 交互,例如仅允许推送到配置好的分支
本文是对 Anthropic 官方文章「Beyond permission prompts: making Claude Code more secure and autonomous」的中文要点摘要,完整内容以原文为准:https://www.anthropic.com/engineering/claude-code-sandboxing
背景:权限提示的两难
Claude Code 在执行命令、读写文件、访问网络时会频繁弹出权限确认提示,这是防止误操作和提示注入(prompt injection)攻击的重要防线,但也带来了「审批疲劳」(approval fatigue)——提示太多,用户容易不假思索地一路点「允许」,反而削弱了安全性。官方这篇文章介绍了用操作系统级沙箱替代部分人工确认的思路:与其每次都问用户,不如从系统层面限定 Claude 能触碰的范围,把很多原本需要确认的操作变成「本来就做不到越界的事」,从而在减少打扰的同时提升安全性。官方给出的数据是,引入沙箱后权限提示减少了 84%。
核心思路:两层隔离,缺一不可
文章强调完整的安全模型需要同时具备两层隔离:
- 文件系统隔离:确保 Claude 只能访问或修改指定目录,防止提示注入攻击篡改沙箱之外的敏感系统文件。
- 网络隔离:确保 Claude 只能连接到已批准的服务器,阻止敏感信息被外泄或恶意软件被下载。
两者必须同时存在:如果只做网络隔离,攻击者依然可能通过文件系统窃取 SSH 密钥等凭证;如果只做文件系统隔离,又无法阻止「沙箱逃逸」后向外部服务器「回传数据」(phone home)。单独任何一层都不足以构成可靠防线。
新功能一:沙箱化的 Bash 工具
Claude Code 为 Bash 工具增加了基于操作系统原语的沙箱执行环境:
- 技术基础:Linux 平台使用 bubblewrap,macOS 平台使用 seatbelt(本站注:即 sandbox-exec 的底层机制,原文未展开),都是成熟的操作系统级隔离原语,而非应用层的黑名单/白名单模拟。
- 文件访问控制:默认允许读写当前工作目录,阻止对目录之外文件的修改。
- 网络访问控制:命令通过一个 Unix 域套接字连接到本地代理服务器来发起网络请求;该代理服务器负责强制执行域名限制,遇到新域名时会触发确认流程,而不是放行任意出站连接。
- 开启方式:在 Claude Code 中运行
/sandbox命令即可查看具体配置和相关文档,按需开启和调整白名单规则。 - 开源:这套沙箱运行时已经开源,仓库地址为
github.com/anthropic-experimental/sandbox-runtime,官方将其定位为「研究预览版」,也支持开发者自定义代理规则来处理任意出站流量的限制策略。
新功能二:Claude Code Web 版本的隔离云沙箱
除了本地沙箱化的 Bash 工具,Claude Code 还推出了运行在隔离云沙箱中的 Web 版本(入口:claude.com/code):
- 每个会话运行在独立的云端沙箱环境中,与本地环境物理隔离。
- 凭证从不进入沙箱:git 凭证、代码签名密钥等敏感凭证「never inside the sandbox with Claude Code」——即便沙箱内代码被完全攻破,这些凭证本身也不会暴露。
- Git 安全代理:所有 Git 交互都通过一个自定义代理透明转发,该代理使用「作用域凭证」(scoped credentials)进行身份验证,并对 Git 操作的具体内容做校验(例如只允许推送到预先配置好的分支),在请求真正发往 GitHub 之前才附加上正确的认证令牌。这意味着沙箱内的 Claude 本身从不直接持有可用于任意操作的完整凭证。
安全收益小结
- 即便提示注入攻击在沙箱内部得逞,由于文件系统和网络都被限定在可控范围,攻击的影响也被隔离在沙箱内,「cannot impact overall user security」,不会波及用户的整体环境。
- 有效阻断了两类常见风险:窃取 SSH 密钥等本地凭证,以及向攻击者控制的服务器「回传」敏感数据。
- 从产品体验角度看,减少了不必要的权限提示,间接降低了因「审批疲劳」导致用户草率放行危险操作的概率。
对中文开发者的启示
- 如果你在本地使用 Claude Code 处理有一定风险的自动化任务(执行脚本、调用未知依赖等),可以尝试运行
/sandbox了解并开启沙箱化 Bash 工具,把文件写入范围和网络出站范围都限定清楚,而不是单纯依赖每次手动确认。 - 团队若需要更强隔离(例如跑第三方 issue/PR 触发的自动化任务),可以关注
claude.com/code的 Web 版本及其云沙箱 + 凭证代理机制,避免让长期有效的 git/签名凭证直接暴露给执行环境。 - 想自定义网络白名单或代理规则的团队,可以直接参考并基于开源的
sandbox-runtime项目做二次开发,而不必从零实现操作系统级沙箱逻辑。