一声棒喝,本不立文字
偏要著録,已是二义

Anthropic · 工程博客

用 sandboxing 让 Claude Code 更安全、更自主

Making Claude Code more secure and autonomous with sandboxing

二〇二六年五月八日 · 英文原文

Claude Code 引入 sandboxed bash tool 与 Claude Code on the web。前者基于 Linux bubblewrap、macOS seatbelt,实现 filesystem 与 network 隔离,内部测试将 permission prompt 减少 84%;后者在云端 sandbox 中运行 session,并用 proxy service 处理 git 凭证。文章作者为 David Dworken 和 Oliver Weller-Davies。

在 Claude Code 中,Claude 会与你一起编写、测试和调试代码,浏览你的 codebase,编辑多个文件,并运行命令来验证它的工作。让 Claude 对你的 codebase 和文件拥有如此多的访问权限可能带来风险,尤其是在 prompt injection 的情况下。

为帮助解决这一问题,我们在 Claude Code 中引入了两个基于 sandboxing 的新功能,二者都旨在为开发者提供更安全的工作环境,同时也允许 Claude 更自主地运行,并减少 permission prompt。在内部使用中,我们发现 sandboxing 可安全地将 permission prompt 减少 84%。通过定义 Claude 可以自由工作的固定边界,它们提升了安全性与自主性。

Claude Code 运行在基于权限的模型上:默认情况下,它是只读的,这意味着它在进行修改或运行任何命令之前会请求权限。对此有一些例外:我们会自动允许 echo 或 cat 等安全命令,但大多数操作仍需要明确批准。

不断点击“approve”会拖慢开发周期,并可能导致“approval fatigue”,用户可能不会认真关注自己批准的内容,从而使开发变得不那么安全。

为解决这一问题,我们为 Claude Code 推出了 sandboxing。

Sandboxing 会创建预定义边界,Claude 可以在其中更自由地工作,而不是对每个动作都请求权限。启用 sandboxing 后,你会收到显著更少的 permission prompt,安全性也会提高。

我们的 sandboxing 方法建立在操作系统级功能之上,以启用两个边界:

值得注意的是,有效的 sandboxing 需要同时具备 filesystem 和 network 隔离。没有 network 隔离,受攻击的 agent 可能会外传 SSH key 等敏感文件;没有 filesystem 隔离,受攻击的 agent 可能轻易逃逸 sandbox 并获得网络访问。正是通过同时使用这两种技术,我们才能为 Claude Code 用户提供更安全、更快速的 agentic 体验。

我们正在引入一个新的 sandbox runtime,目前以 research preview 的形式提供 beta 版本。它允许你精确定义 agent 可以访问哪些目录和 network host,而无需启动和管理 container 所带来的开销。它可用于对任意 process、agent 和 MCP server 进行 sandboxing。它也作为开源 research preview 提供。

在 Claude Code 中,我们使用这个 runtime 对 bash tool 进行 sandboxing,使 Claude 能够在你设定的限制内运行命令。在安全的 sandbox 内,Claude 可以更自主地运行,并在没有 permission prompt 的情况下安全执行命令。如果 Claude 尝试访问 sandbox 之外的内容,你会立即收到通知,并可选择是否允许。

我们基于 Linux bubblewrap 和 MacOS seatbelt 等 OS 级 primitive 构建了这一能力,以便在 OS 级别强制执行这些限制。它们不仅覆盖 Claude Code 的直接交互,也覆盖由命令生成的任何 script、program 或 subprocess。如上所述,这个 sandbox 会同时强制执行:

这两个组件都是可配置的:你可以轻松选择允许或禁止特定文件路径或 domain。

Sandboxing 确保即使 prompt injection 成功,也会被完全隔离,无法影响用户的整体安全。这样,受攻击的 Claude Code 无法窃取你的 SSH key,也无法向攻击者的 server 回传信息。

要开始使用此功能,请在 Claude Code 中运行 /sandbox,并查看有关我们安全模型的更多技术细节。

为了让其他团队更容易构建更安全的 agent,我们已将此功能开源。我们认为,其他人应考虑为自己的 agent 采用这项技术,以增强其 agent 的安全态势。

今天,我们还发布了 Claude Code on the web,使用户能够在云端的隔离 sandbox 中运行 Claude Code。Claude Code on the web 会在隔离的 sandbox 中执行每个 Claude Code session,在安全可靠的方式下让它完全访问其 server。我们设计此 sandbox 的目标是确保敏感凭证(例如 git credentials 或 signing key)永远不会与 Claude Code 一起出现在 sandbox 内。这样,即使 sandbox 中运行的代码被攻破,用户也能避免进一步伤害。

Claude Code on the web 使用自定义 proxy service,透明处理所有 git 交互。在 sandbox 内,git client 使用自定义构建的 scoped credential 向该服务进行认证。proxy 会验证此 credential 以及 git 交互的内容(例如确保它只 push 到配置的 branch),然后在将请求发送到 GitHub 前附加正确的 authentication token。

我们新的 sandboxed bash tool 和 Claude Code on the web 为使用 Claude 进行工程工作的开发者在安全性和生产力方面都带来了显著改进。

要开始使用这些工具:

或者,如果你正在构建自己的 agent,请查看我们开源的 sandboxing 代码,并考虑将其集成到你的工作中。我们期待看到你构建的成果。

要了解更多关于 Claude Code on the web 的信息,请查看我们的发布 blog post。

本文由 David Dworken 和 Oliver Weller-Davies 撰写,Meaghan Choi、Catherine Wu、Molly Vorwerck、Alex Isken、Kier Bradwell 和 Kevin Garcia 亦有贡献。

译自 Anthropic · 工程博客 · 录于 二〇二六年五月八日