原文: English original · Anthropic/OpenAI 官方

超越 permission prompts:让 Claude Code 更安全、更自主

发布于 2025 年 10 月 20 日

Claude Code 新推出的沙盒化功能,包括 sandboxed bash tool 和 Claude Code on the web,通过文件系统隔离与网络隔离这两道边界,减少 permission prompts,并提升用户安全性。

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

为帮助解决这个问题,我们在 Claude Code 中推出了两个基于沙盒化的新功能。二者都旨在为开发者提供一个更安全的工作环境,同时让 Claude 能够更自主地运行,并减少 permission prompts。在我们的内部使用中,我们发现沙盒化可以安全地将 permission prompts 减少 84%。通过定义 Claude 可以自由工作的既定边界,这些功能提升了安全性与自主性。

保障 Claude Code 上的用户安全

Claude Code 采用基于权限的模型:默认情况下,它是只读的,也就是说,在进行修改或运行任何命令之前,它会请求许可。这里有一些例外:我们会自动允许 echocat 这类安全命令,但大多数操作仍然需要明确批准。

不断点击“approve”会拖慢开发周期,并可能造成“批准疲劳”:用户可能不会认真留意自己正在批准什么,进而让开发过程变得不那么安全。

为了解决这一点,我们为 Claude Code 推出了沙盒化。

沙盒化:一种更安全、更自主的方法

沙盒化会创建预先定义的边界,让 Claude 可以在这些边界内更自由地工作,而不是每个动作都请求许可。启用沙盒化后,你会看到 permission prompts 大幅减少,同时安全性提升。

我们的沙盒化方法建立在操作系统级功能之上,用于启用两道边界:

  1. 文件系统隔离,确保 Claude 只能访问或修改特定目录。这对于防止遭到 prompt injection 的 Claude 修改敏感系统文件尤其重要。
  2. 网络隔离,确保 Claude 只能连接到已批准的服务器。这可以防止遭到 prompt injection 的 Claude 泄露敏感信息或下载恶意软件。

值得注意的是,有效的沙盒化需要同时具备文件系统隔离和网络隔离。没有网络隔离,被攻陷的 agent 可能会外泄 SSH 密钥等敏感文件;没有文件系统隔离,被攻陷的 agent 很容易逃出沙盒并获得网络访问能力。正是通过同时使用这两项技术,我们才能为 Claude Code 用户提供更安全、更快速的 agentic 体验。

Claude Code 中的两个新沙盒化功能

Sandboxed bash tool:无需 permission prompts 的安全 bash 执行

我们正在推出一种新的沙盒运行时,目前作为 research preview 以 beta 形式提供。它允许你精确定义你的 agent 可以访问哪些目录和网络主机,同时无需承担启动和管理容器的开销。它可用于对任意进程、agents 和 MCP servers 进行沙盒化。它也作为开源 research preview 提供。

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

我们基于操作系统级原语构建了这一功能,例如 Linux bubblewrap 和 macOS Seatbelt,以便在操作系统层面强制执行这些限制。它们覆盖的不只是 Claude Code 的直接交互,也包括由命令启动的任何脚本、程序或子进程。如上所述,这个沙盒会同时强制执行:

  1. 文件系统隔离:允许对当前工作目录进行读写访问,但阻止修改该目录之外的任何文件。
  2. 网络隔离:只允许通过 Unix domain socket 访问互联网,该 socket 连接到运行在沙盒之外的代理服务器。这个代理服务器会强制执行进程可连接域名的限制,并处理新请求域名的用户确认。如果你希望进一步提升安全性,我们也支持自定义这个代理,对出站流量强制执行任意规则。

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

图片:这张图展示了 Claude Code 中沙盒化的工作方式。

Claude Code 的沙盒化架构通过文件系统和网络控制来隔离代码执行,自动允许安全操作,阻止恶意操作,并且只在必要时请求许可。

沙盒化确保即使 prompt injection 成功,也会被完全隔离,无法影响用户整体安全。这样一来,被攻陷的 Claude Code 无法窃取你的 SSH 密钥,也无法回连攻击者的服务器。

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

为了让其他团队更容易构建更安全的 agents,我们已经将这个功能开源。我们相信,其他团队也应该考虑在自己的 agents 中采用这项技术,以增强这些 agents 的安全态势。

Claude Code on the web:在云端安全运行 Claude Code

今天,我们还发布了 Claude Code on the web,让用户能够在云端的隔离沙盒中运行 Claude Code。Claude Code on the web 会在隔离沙盒中执行每个 Claude Code session,并以安全可靠的方式拥有对所在服务器的完整访问权限。我们设计这个沙盒时,确保敏感凭据(例如 git 凭据或签名密钥)永远不会与 Claude Code 一起进入沙盒。

这样一来,即使沙盒中运行的代码被攻陷,用户也能免受进一步伤害。

Claude Code on the web 使用一个自定义代理服务,透明处理所有 git 交互。在沙盒内部,git 客户端会使用一个专门构建的 scoped credential 向该服务进行认证。代理会验证这个凭据以及 git 交互的内容(例如确保它只会推送到已配置的分支),然后在把请求发送到 GitHub 之前附加正确的 authentication token。

图片:这张图展示了 Claude Code on the web 如何使用自定义代理处理所有 git 交互。

Claude Code 的 Git 集成会通过安全代理路由命令,该代理会验证 authentication token、分支名称和仓库目标,从而在防止未授权 push 的同时,实现安全的版本控制 workflow。

开始使用

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

要开始使用这些工具:

  1. 在 Claude 中运行 /sandbox,并查看我们的文档,了解如何配置这个沙盒。
  2. 前往 claude.com/code 试用 Claude Code on the web。

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

若要进一步了解 Claude Code on the web,请查看我们的发布博客文章

致谢

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