使用沙箱让 Claude Code 更安全、更自主
Making Claude Code more secure and autonomous with sandboxing
Anthropic 为 Claude Code 引入基于操作系统级原语(Linux bubblewrap、macOS seatbelt)的沙箱功能,通过文件系统与网络双重隔离定义 agent 可访问的目录和主机。内部测试显示沙箱将权限提示减少 84%,同时隔离提示注入风险。Claude Code on the web 在云端隔离沙箱中运行,使用自定义代理服务处理 git 交互,确保敏感凭据不与代码同处沙箱。该沙箱运行时已作为研究预览版开源。
在 Claude Code 中,Claude 与你并肩编写、测试和调试代码,浏览你的代码库、编辑多个文件,并运行命令来验证其工作。让 Claude 对你的代码库和文件拥有如此大的访问权限会带来风险,尤其是在提示注入(prompt injection)的情况下。
为了解决这个问题,我们在沙箱(sandboxing)的基础上为 Claude Code 引入了两项新功能,它们旨在为开发者提供一个更安全的工作环境,同时允许 Claude 更自主地运行,并减少权限提示。根据我们的内部使用情况,我们发现沙箱能够安全地将权限提示减少 84%。通过定义 Claude 可以自由工作的设定边界,它们提高了安全性和自主性。
Claude Code 基于权限模型运行:默认情况下,它是只读的,这意味着在进行修改或运行任何命令之前,它会请求许可。也有一些例外:我们自动允许像 echo 或 cat 这样的安全命令,但大多数操作仍然需要明确批准。
不断点击“批准”会拖慢开发周期,并可能导致“批准疲劳”,用户可能不会密切关注他们批准的内容,从而使开发的安全性降低。
为了解决这个问题,我们为 Claude Code 推出了沙箱功能。
沙箱创建了预定义的边界,Claude 可以在其中更自由地工作,而无需为每个操作请求许可。启用沙箱后,你会收到大幅减少的权限提示,同时安全性得到提升。
我们的沙箱方法建立在操作系统级功能之上,以实现两个边界:
值得注意的是,有效的沙箱需要同时具备文件系统和网络隔离。如果没有网络隔离,被攻破的 agent 可能会窃取 SSH 密钥等敏感文件;如果没有文件系统隔离,被攻破的 agent 很容易逃逸沙箱并获得网络访问权限。正是通过同时使用这两种技术,我们才能为 Claude Code 用户提供更安全、更快速的 agent 体验。
我们正在引入一个新的沙箱运行时,以研究预览版的形式提供 beta 测试,它允许你精确定义你的 agent 可以访问哪些目录和网络主机,而无需启动和管理容器的开销。这可用于对任意进程、agent 和 MCP 服务器进行沙箱化。它也可以作为开源研究预览版使用。
在 Claude Code 中,我们使用这个运行时来沙箱化 bash 工具,这允许 Claude 在你设定的限制范围内运行命令。在安全的沙箱内部,Claude 可以更自主地运行,并安全地执行命令,无需权限提示。如果 Claude 试图访问沙箱外部的任何内容,你会立即收到通知,并可以选择是否允许。
我们基于操作系统级原语(如 Linux 的 bubblewrap 和 macOS 的 seatbelt)构建了此功能,以在操作系统级别强制执行这些限制。它们不仅涵盖 Claude Code 的直接交互,还涵盖由命令生成的任何脚本、程序或子进程。如上所述,此沙箱强制执行以下两项:
这两个组件都是可配置的:你可以轻松选择允许或禁止特定的文件路径或域名。
沙箱确保即使是一次成功的提示注入也能被完全隔离,并且不会影响用户的整体安全。这样,被攻破的 Claude Code 就无法窃取你的 SSH 密钥,也无法向攻击者的服务器发送信息。
要开始使用此功能,请在 Claude Code 中运行 /sandbox,并查看我们安全模型的更多技术细节。
为了让其他团队更容易构建更安全的 agent,我们已将此功能开源。我们相信,其他人应该考虑为自己的 agent 采用这项技术,以增强其 agent 的安全态势。
今天,我们还发布了 Claude Code on the web,使用户能够在云端的隔离沙箱中运行 Claude Code。Claude Code on the web 在隔离的沙箱中执行每个 Claude Code 会话,该沙箱可以安全可靠地完全访问其服务器。我们设计此沙箱是为了确保敏感凭据(例如 git 凭据或签名密钥)永远不会与 Claude Code 一起位于沙箱内。这样,即使沙箱中运行的代码被攻破,用户也能免受进一步损害。
Claude Code on the web 使用一个自定义代理服务来透明地处理所有 git 交互。在沙箱内部,git 客户端使用一个自定义构建的范围凭据向此服务进行身份验证。代理验证此凭据以及 git 交互的内容(例如,确保它只推送到配置的分支),然后在将请求发送到 GitHub 之前附加正确的身份验证令牌。
我们新的沙箱化 bash 工具和 Claude Code on the web 为使用 Claude 进行工程工作的开发者提供了安全性和生产力方面的显著改进。
要开始使用这些工具:
或者,如果你正在构建自己的 agent,请查看我们开源的沙箱代码,并考虑将其集成到你的工作中。我们期待看到你的构建成果。
要了解有关 Claude Code on the web 的更多信息,请查看我们的发布博客文章。
本文由 David Dworken 和 Oliver Weller-Davies 撰写,Meaghan Choi、Catherine Wu、Molly Vorwerck、Alex Isken、Kier Bradwell 和 Kevin Garcia 亦有贡献。