超越权限提示:通过沙箱技术让 Claude Code 更安全、更自主
原文链接: www.anthropic.com/engineering…
发布日期: 2025年10月20日
Claude Code 的新沙箱功能——bash 工具沙箱和 Claude Code 网页版——通过启用两道安全边界(文件系统隔离和网络隔离)来减少权限提示,同时提高用户安全性。
引言
在 Claude Code 中,Claude 与您并肩编写、测试和调试代码,它能够浏览您的代码库、编辑多个文件,并运行命令来验证其工作成果。给予 Claude 如此多的代码库和文件访问权限可能会带来风险,特别是在遭遇提示注入(prompt injection)攻击的情况下。
为了解决这个问题,我们在 Claude Code 中引入了两个基于沙箱技术构建的新功能,它们都旨在为开发者提供更安全的工作环境,同时让 Claude 能够更自主地运行,减少权限提示的数量。在我们的内部使用中,我们发现沙箱技术在保证安全的前提下减少了 84% 的权限提示。通过定义一组边界,Claude 可以在这些边界内自由工作,从而提高了安全性和自主能力。
💡 核心价值
| 方面 | 传统模式 | 沙箱模式 |
|---|---|---|
| 权限提示 | 频繁需要用户批准 | 减少 84% 的提示 |
| 安全性 | 依赖用户审核 | 操作系统级隔离 |
| 开发效率 | 频繁中断 | 更流畅的工作流 |
| 风险控制 | 人工判断 | 系统自动边界控制 |
确保 Claude Code 用户安全
Claude Code 采用基于权限的模型运行:默认情况下,它是只读的,这意味着在进行任何修改或运行任何命令之前,它都会请求权限。当然也有一些例外:我们会自动允许像 echo 或 cat 这样的安全命令,但大多数操作仍然需要明确的批准。
不断点击"批准"会减慢开发周期,还可能导致"批准疲劳"——用户可能不会仔细注意他们正在批准的内容,反而使开发变得不那么安全。
为了解决这个问题,我们为 Claude Code 推出了沙箱功能。
💡 批准疲劳问题
graph TD
A[用户启动 Claude Code] --> B[Claude 执行操作]
B --> C{需要权限?}
C -->|是| D[显示权限提示]
D --> E{用户审核}
E -->|仔细审核| F[批准/拒绝]
E -->|疲劳后| G[快速批准]
G --> H[潜在安全风险]
F --> B
H --> B
C -->|否| B
沙箱:更安全、更自主的方法
沙箱创建了预定义的边界,Claude 可以在这些边界内更自由地工作,而不是每个操作都请求权限。启用沙箱后,您将获得大幅减少的权限提示和更高的安全性。
我们的沙箱方法建立在操作系统级别的功能之上,以实现两道边界:
-
文件系统隔离,确保 Claude 只能访问或修改特定目录。这对于防止被注入提示的 Claude 修改敏感系统文件尤为重要。
-
网络隔离,确保 Claude 只能连接到已批准的服务器。这可以防止被注入提示的 Claude 泄露敏感信息或下载恶意软件。
值得注意的是,有效的沙箱同时需要文件系统隔离和网络隔离。如果没有网络隔离,被入侵的代理可能会窃取像 SSH 密钥这样的敏感文件;如果没有文件系统隔离,被入侵的代理可以轻易逃脱沙箱并获得网络访问权限。正是通过同时使用这两种技术,我们才能为 Claude Code 用户提供更安全、更快速的智能体体验。
💡 双重隔离的必要性
graph TD
subgraph 完整沙箱保护
A[沙箱环境] --> B[文件系统隔离]
A --> C[网络隔离]
B --> D[阻止访问敏感文件]
C --> E[阻止数据外泄]
end
subgraph 仅文件系统隔离
F[部分保护] --> G[文件受保护]
F --> H[网络开放]
H --> I[可通过网络逃逸]
end
subgraph 仅网络隔离
J[部分保护] --> K[网络受限]
J --> L[文件系统开放]
L --> M[可修改配置逃逸]
end
Claude Code 中的两个新沙箱功能
沙箱化 bash 工具:无需权限提示的安全 bash 执行
我们正在引入一个新的沙箱运行时,作为研究预览版提供测试,它允许您精确定义代理可以访问哪些目录和网络主机,而无需启动和管理容器的开销。这可用于对任意进程、代理和 MCP 服务器进行沙箱化。它也以开源研究预览版的形式提供。
在 Claude Code 中,我们使用这个运行时对 bash 工具进行沙箱化,允许 Claude 在您设定的限制范围内运行命令。在安全的沙箱内,Claude 可以更自主地安全执行命令,无需权限提示。如果 Claude 试图访问沙箱外部的内容,您将立即收到通知,并可以选择是否允许。
我们基于操作系统级原语构建了这个功能,例如 Linux bubblewrap 和 MacOS seatbelt,以在操作系统级别强制执行这些限制。它们不仅涵盖 Claude Code 的直接交互,还涵盖由命令产生的任何脚本、程序或子进程。
如上所述,这个沙箱强制执行以下两方面:
-
文件系统隔离,允许对当前工作目录的读写访问,但阻止对其外部任何文件的修改。
-
网络隔离,只允许通过连接到沙箱外部运行的代理服务器的 Unix 域套接字进行互联网访问。这个代理服务器强制限制进程可以连接的域,并处理对新请求域的用户确认。如果您想要进一步提高安全性,我们还支持自定义此代理以对出站流量强制执行任意规则。
这两个组件都是可配置的:您可以轻松选择允许或禁止特定的文件路径或域。
💡 沙箱技术栈
| 组件 | 平台 | 功能 |
|---|---|---|
| bubblewrap | Linux | 轻量级容器化,进程和文件系统隔离 |
| seatbelt | macOS | 应用程序沙箱框架,系统调用过滤 |
| Unix 域套接字 | 跨平台 | 安全的进程间通信 |
| 代理服务器 | 跨平台 | 网络请求过滤和用户确认 |
Claude Code 的沙箱架构通过文件系统和网络控制隔离代码执行,自动允许安全操作,阻止恶意操作,仅在需要时请求权限。
💡 沙箱工作流程
graph TD
A[Claude 发起操作] --> B{操作类型判断}
B -->|安全操作| C[自动允许]
B -->|文件操作| D{在工作目录内?}
B -->|网络操作| E{目标域已批准?}
D -->|是| C
D -->|否| F[阻止并通知用户]
E -->|是| C
E -->|否| G[通过代理请求确认]
G --> H{用户决定}
H -->|允许| I[添加到白名单]
H -->|拒绝| J[阻止请求]
I --> C
C --> K[执行操作]
F --> L[操作被阻止]
J --> L
沙箱确保即使成功的提示注入攻击也被完全隔离,不会影响整体用户安全。这样,被入侵的 Claude Code 无法窃取您的 SSH 密钥,也无法与攻击者的服务器通信。
要开始使用此功能,请在 Claude Code 中运行 /sandbox,并查看更多技术细节了解我们的安全模型。
为了让其他团队更容易构建更安全的代理,我们已经开源了这个功能。我们相信其他人应该考虑为他们自己的代理采用这项技术,以增强其代理的安全态势。
Claude Code 网页版:在云端安全运行 Claude Code
今天,我们还发布了 Claude Code 网页版,使用户能够在云端的隔离沙箱中运行 Claude Code。Claude Code 网页版在一个隔离的沙箱中执行每个 Claude Code 会话,在该沙箱中它对其服务器拥有完全访问权限,同时以安全的方式运行。我们设计了这个沙箱,以确保敏感凭证(如 git 凭证或签名密钥)永远不会与 Claude Code 一起存在于沙箱内部。这样,即使沙箱中运行的代码被入侵,用户也能免受进一步伤害。
Claude Code 网页版使用一个自定义代理服务来透明地处理所有 git 交互。在沙箱内部,git 客户端使用定制的范围凭证向此服务进行身份验证。代理验证此凭证和 git 交互的内容(例如,确保它只推送到配置的分支),然后在将请求发送到 GitHub 之前附加正确的身份验证令牌。
Claude Code 的 Git 集成通过安全代理路由命令,该代理验证身份验证令牌、分支名称和仓库目标——允许安全的版本控制工作流程,同时防止未经授权的推送。
💡 Git 代理安全机制
sequenceDiagram
participant C as Claude Code (沙箱内)
participant P as Git 代理服务
participant G as GitHub
C->>P: git push (携带范围凭证)
P->>P: 验证范围凭证
P->>P: 检查目标分支是否允许
P->>P: 验证仓库目标
alt 验证通过
P->>P: 附加真实 GitHub 令牌
P->>G: 转发请求
G-->>P: 响应
P-->>C: 返回结果
else 验证失败
P-->>C: 拒绝请求
end
💡 沙箱内外职责分离
| 位置 | 组件 | 访问权限 |
|---|---|---|
| 沙箱内部 | Claude Code | 完整代码执行能力 |
| 沙箱内部 | 范围凭证 | 仅限特定分支/仓库操作 |
| 沙箱外部 | Git 代理服务 | 真实 GitHub 令牌 |
| 沙箱外部 | 签名密钥 | 永不暴露给沙箱 |
开始使用
我们新的沙箱化 bash 工具和 Claude Code 网页版为使用 Claude 进行工程工作的开发者在安全性和生产力方面都提供了实质性的改进。
要开始使用这些工具:
-
在 Claude 中运行
/sandbox,并查看我们的文档了解如何配置此沙箱。 -
访问 claude.ai/code 试用 Claude Code 网页版。
或者,如果您正在构建自己的代理,请查看我们的开源沙箱代码,并考虑将其集成到您的工作中。我们期待看到您的构建成果。
要了解更多关于 Claude Code 网页版的信息,请查看我们的发布博客文章。
💡 快速开始指南
graph LR
A[选择使用方式] --> B[本地 Claude Code]
A --> C[Claude Code 网页版]
B --> D[运行 /sandbox]
D --> E[配置文件/网络规则]
E --> F[开始安全开发]
C --> G[访问 claude.ai/code]
G --> H[自动沙箱环境]
H --> F
subgraph 开发者自建
I[fork 开源代码]
I --> J[集成到您的代理]
J --> K[自定义安全策略]
end
致谢
文章由 David Dworken 和 Oliver Weller-Davies 撰写,Meaghan Choi、Catherine Wu、Molly Vorwerck、Alex Isken、Kier Bradwell 和 Kevin Garcia 做出了贡献。
📝 总结
核心要点
- 沙箱技术显著提升效率:在保证安全的前提下减少了 84% 的权限提示,大幅改善开发体验
- 双重隔离是关键:有效的沙箱必须同时具备文件系统隔离和网络隔离,缺一不可
- 操作系统级安全:基于 Linux bubblewrap 和 macOS seatbelt 等系统原语,提供底层安全保障
- 云端方案更安全:Claude Code 网页版通过代理服务隔离敏感凭证,即使代码被入侵也能保护用户
- 开源可扩展:沙箱运行时已开源,其他团队可以采用来增强自己代理的安全性
相关资源
| 资源 | 链接 |
|---|---|
| 沙箱文档 | docs.claude.com/en/docs/cla… |
| 开源代码 | github.com/anthropic-e… |
| Claude Code 网页版 | claude.ai/code |
| Linux bubblewrap | github.com/containers/… |
原文作者: David Dworken, Oliver Weller-Davies