超越权限提示:让 Claude Code 更安全、更自主
发布日期: 2025年10月20日
作者: David Dworken 和 Oliver Weller-Davies,Meaghan Choi、Catherine Wu、Molly Vorwerck、Alex Isken、Kier Bradwell 和 Kevin Garcia 参与贡献。
Claude Code 的新沙箱功能——bash 工具和 Claude Code 网页版——通过启用文件系统和网络隔离两个边界,减少了权限提示并提升了用户安全性。
在 Claude Code 中,Claude 与你一起编写、测试和调试代码,浏览你的代码库、编辑多个文件并运行命令来验证其工作。给予 Claude 对代码库和文件的这种广泛访问权限可能会引入风险,尤其是在 Prompt 注入的情况下。
为了解决这个问题,我们在 Claude Code 中推出了两个基于沙箱的新功能,旨在为开发者提供更安全的工作环境,同时允许 Claude 更自主地运行并减少权限提示。在我们的内部使用中,沙箱安全地减少了 84% 的权限提示。通过定义 Claude 可以自由工作的既定边界,它们提升了安全性和自主性。
在 Claude Code 中保障用户安全
Claude Code 基于权限模型运行:默认情况下是只读的,这意味着它在进行修改或运行任何命令之前都会请求许可。有一些例外:我们自动允许安全命令如 echo 或 cat,但大多数操作仍需明确批准。
不断点击"批准"会拖慢开发周期,并可能导致"审批疲劳"——用户可能不会仔细关注他们正在批准的内容,反而使开发变得更不安全。
为了解决这个问题,我们为 Claude Code 推出了沙箱功能。
沙箱:更安全、更自主的方式
沙箱创建了预定义的边界,Claude 可以在其中更自由地工作,而无需为每个操作请求许可。启用沙箱后,权限提示大幅减少,安全性显著提升。
我们的沙箱方案基于操作系统级别的功能,实现了两个边界:
- 文件系统隔离,确保 Claude 只能访问或修改特定目录。这对于防止被 Prompt 注入的 Claude 修改敏感系统文件尤为重要。
- 网络隔离,确保 Claude 只能连接到已批准的服务器。这可以防止被 Prompt 注入的 Claude 泄露敏感信息或下载恶意软件。
值得注意的是,有效的沙箱需要同时具备文件系统和网络隔离。没有网络隔离,被攻破的 Agent 可以窃取 SSH 密钥等敏感文件;没有文件系统隔离,被攻破的 Agent 可以轻松逃逸沙箱获得网络访问权限。正是通过同时使用这两种技术,我们才能为 Claude Code 用户提供更安全、更快速的 Agent 体验。
Claude Code 的两个新沙箱功能
沙箱化 bash 工具:无需权限提示的安全 bash 执行
我们引入了一个新的沙箱运行时,以研究预览版的形式提供 Beta 使用,它让你精确定义 Agent 可以访问哪些目录和网络主机,而无需承担启动和管理容器的开销。这可用于沙箱化任意进程、Agent 和 MCP 服务器。同时也作为开源研究预览版提供。
在 Claude Code 中,我们使用此运行时来沙箱化 bash 工具,允许 Claude 在你设定的限制范围内运行命令。在安全沙箱内,Claude 可以更自主地运行并安全执行命令,无需权限提示。如果 Claude 尝试访问沙箱之外的内容,你会立即收到通知,并可以选择是否允许。
我们在操作系统级别的原语之上构建了此功能,如 Linux 的 bubblewrap 和 macOS 的 seatbelt,以在操作系统层面强制执行这些限制。它们不仅覆盖 Claude Code 的直接交互,还覆盖命令生成的任何脚本、程序或子进程。如上所述,此沙箱同时强制执行:
- 文件系统隔离,允许对当前工作目录的读写访问,但阻止修改其外的任何文件。
- 网络隔离,仅允许通过连接到沙箱外运行的代理服务器的 Unix 域套接字访问互联网。此代理服务器强制执行进程可连接域的限制,并处理新请求域的用户确认。如果你需要更高的安全性,我们还支持自定义此代理以对出站流量执行任意规则。
两个组件都可配置:你可以轻松选择允许或禁止特定文件路径或域名。
沙箱确保即使 Prompt 注入成功也能被完全隔离,不会影响整体用户安全。这样,被攻破的 Claude Code 无法窃取你的 SSH 密钥,也无法向攻击者的服务器回传信息。
要开始使用此功能,在 Claude Code 中运行 /sandbox 并查看我们安全模型的更多技术细节。
为了帮助其他团队构建更安全的 Agent,我们将此功能开源。我们建议其他人考虑为其自身 Agent 采用此技术,以增强 Agent 的安全态势。
Claude Code 网页版:在云端安全运行 Claude Code
今天,我们还发布了 Claude Code 网页版,让用户可以在云端的隔离沙箱中运行 Claude Code。Claude Code 网页版在隔离沙箱中执行每个 Claude Code 会话,以安全的方式完全访问其服务器。我们设计此沙箱是为了确保敏感凭据(如 git 凭据或签名密钥)永远不会与 Claude Code 一起存在于沙箱中。这样,即使沙箱中运行的代码被攻破,用户也能免受进一步的伤害。
Claude Code 网页版使用自定义代理服务透明处理所有 git 交互。在沙箱内,git 客户端使用自定义的范围化凭据向此服务进行身份验证。代理验证此凭据和 git 交互的内容(例如确保只推送到配置的分支),然后在将请求发送到 GitHub 之前附加正确的身份验证令牌。
开始使用
我们新的沙箱化 bash 工具和 Claude Code 网页版为使用 Claude 进行工程工作的开发者在安全性和生产力方面提供了实质性改进。
要开始使用这些工具:
- 在 Claude 中运行
/sandbox并查看关于如何配置此沙箱的文档。 - 访问 claude.ai/code 试用 Claude Code 网页版。
或者,如果你正在构建自己的 Agent,请查看我们开源的沙箱代码,并考虑将其集成到你的工作中。我们期待看到你的成果。