超越权限提示:让 Claude Code 更安全、更自主
Claude Code 新推出的沙盒功能(bash 工具和 Claude Code Web 版)通过引入文件系统隔离和网络隔离这两道边界,减少了权限提示次数并提升了用户安全性。
在 Claude Code 中,Claude 会与你并肩编写、测试和调试代码,穿梭于代码库、编辑多个文件,并运行命令来验证其工作成果。让 Claude 拥有如此广泛的访问权限会带来风险,尤其是在遭遇提示注入时。
为了解决这一问题,我们在 Claude Code 中引入了两项基于沙盒的全新功能,它们旨在为开发者提供更安全的工作环境,同时让 Claude 能以更少的权限提示更自主地运行。在我们的内部使用中,沙盒功能已证明能够安全地将权限提示减少 84%。通过划定 Claude 可以自由操作的边界,我们既提高了安全性,也增强了其自主性。
在 Claude Code 中保障用户安全
Claude Code 采用基于权限的模式:默认情况下它是只读的,这意味着在修改内容或运行任何命令之前都会请求许可。也有一些例外:我们会自动放行诸如 echo 或 cat 这类安全命令,但大多数操作仍需要显式批准。
不断点击“批准”会拖慢开发流程,还可能导致“批准疲劳”,让用户无法认真核对所批准的操作,从而降低安全性。
为此,我们为 Claude Code 推出了沙盒功能。
沙盒:更安全也更自主的方案
沙盒会创建预先定义的边界,使 Claude 可以在其中更自由地工作,而不必为每一步操作都请求许可。启用沙盒后,权限提示大幅减少,安全性也显著提高。
我们的沙盒方案基于操作系统级别的特性,实现了两道边界:
- 文件系统隔离,确保 Claude 只能访问或修改特定目录。这对防止遭到提示注入的 Claude 篡改敏感系统文件尤为重要。
- 网络隔离,确保 Claude 只能连接到经批准的服务器。这样可以阻止遭到提示注入的 Claude 泄露敏感信息或下载恶意软件。
值得注意的是,有效的沙盒必须同时具备文件系统和网络隔离。缺少网络隔离时,遭到攻陷的代理可能会窃取 SSH 密钥等敏感文件;缺少文件系统隔离时,则可能轻易逃离沙盒并获取网络访问权限。只有结合这两项技术,我们才能为 Claude Code 用户提供更安全、更高效的智能体体验。
Claude Code 的两项全新沙盒功能
沙盒化 bash 工具:在无权限提示下安全执行 bash
我们推出了全新的沙盒运行时,目前以测试版研究预览的形式提供,它允许你准确指定代理可以访问的目录和网络主机,而无需耗费精力启动和管理容器。该运行时可用于沙盒化任意进程、代理和 MCP 服务器。同时我们也以开源研究预览的形式发布了它。
在 Claude Code 中,我们使用该运行时对 bash 工具进行沙盒化,让 Claude 能在你设定的限制范围内运行命令。在受保护的沙盒内,Claude 可以更自主地运行,并在无需权限提示的情况下安全执行命令。如果 Claude 尝试访问沙盒之外的内容,你会立刻收到通知,并可以自行决定是否放行。
我们基于诸如 Linux bubblewrap 和 MacOS seatbelt 等操作系统级原语来强制执行这些限制。它们不仅涵盖了 Claude Code 与系统的直接交互,也涵盖了命令所启动的脚本、程序或子进程。正如前文所述,该沙盒同时强制执行:
- 文件系统隔离,允许对当前工作目录进行读写,但阻止修改该目录之外的任何文件。
- 网络隔离,只允许通过连接到沙盒外部代理服务器的 Unix 域套接字访问互联网。该代理服务器会限制进程可连接的域名,并处理对新域名的用户确认。如果你需要更高的安全性,我们也支持自定义该代理以对出站流量施加任意规则。
这两个组件都可以配置:你可以轻松选择允许或拒绝特定的文件路径或域名。
 
  沙盒确保即便提示注入成功也会被完全隔离,无法影响整体用户安全。这样一来,被攻陷的 Claude Code 既无法窃取你的 SSH 密钥,也无法向攻击者的服务器回传信息。
要开始使用该功能,只需在 Claude Code 中运行 /sandbox,并查看我们关于安全模型的技术细节。
为了帮助更多团队打造更安全的代理,我们已经将这一功能开源。我们认为,其他团队也应考虑采用这项技术,以提升自家代理的安全防护能力。
Claude Code Web 版:在云端安全运行 Claude Code
今天,我们还发布了 Claude Code Web 版,让用户能够在云端的隔离沙盒中运行 Claude Code。Claude Code Web 版会在独立的沙盒中执行每一场 Claude Code 会话,使其能够在安全的前提下完整访问自身的服务器。我们设计了这个沙盒,以确保敏感凭据(如 git 凭据或签名密钥)永远不会与 Claude Code 一同置于沙盒内。如此一来,即便沙盒中的代码遭到攻陷,用户仍能免受进一步伤害。
Claude Code Web 版使用自定义代理服务透明地处理所有 git 交互。沙盒内的 git 客户端使用特制的 scoped 凭据与该服务进行认证。代理会验证这一凭据及 git 交互的内容(例如确保它只推送到配置的分支),然后附加正确的认证令牌,再将请求发送至 GitHub。
 
  入门指南
全新的沙盒化 bash 工具和 Claude Code Web 版为使用 Claude 开展工程工作的开发者带来了安全性和生产力的双重提升。
想要开始使用这些工具:
- 在 Claude 中运行 /sandbox,并查看我们的文档,了解如何配置该沙盒。
- 访问 claude.com/code,体验 Claude Code Web 版。
或者,如果你正在构建自己的代理,欢迎查阅我们开源的沙盒代码,并考虑将其集成到你的工作中。我们期待看到你构建的成果。
想进一步了解 Claude Code Web 版,请查看我们的发布博文。
致谢
本文由 David Dworken 和 Oliver Weller-Davies 撰写,Catherine Wu、Molly Vorwerck、Alex Isken、Kier Bradwell 和 Kevin Garcia 提供了重要贡献。
订阅开发者通讯
产品更新、操作指南、社区聚光灯等内容,每月发送至你的收件箱。
如果你希望收到我们的每月开发者通讯,请留下你的电子邮箱地址。你可以随时取消订阅。