Appearance
根据隔离需求选择方案:日常开发降低权限提示用内置Bash沙箱(/sandbox);无人值守运行必须隔离整个进程,最少使用沙箱运行时、开发容器或虚拟机。非信任代码或最高隔离要求,使用虚拟机或Claude Code Web版。注意:沙箱不能消除网络外泄风险,也不改变数据发送到API的事实。
Claude Code沙箱环境怎么选?内置Bash沙箱、容器与虚拟机区别
隔离Claude Code可以限制会话能读写访问的网络资源。当你让Claude少弹权限提示、无人值守运行,或指向你不完全信任的代码时,这点特别重要。
Claude Code支持从轻量级单命令沙箱到完整虚拟机的多种隔离环境。本文涵盖以下内容:
沙箱隔离方案对比表与适用场景
下表前两种方案运行在宿主机操作系统上(无容器),其余将Claude Code放入容器或虚拟机。
| 方案 | 隔离范围 | 需要Docker | 配置工作量 |
|---|---|---|---|
| 内置Bash沙箱 | Bash命令及其子进程 | 否 | macOS极小;Linux/WSL2低 |
| 沙箱运行时 | 整个Claude Code进程(文件工具、MCP服务器、钩子) | 否 | 低 |
| 开发容器 | 完整开发环境 | 是 | 中等 |
| 自定义容器 | 完整开发环境 | 是 | 中到高 |
| 虚拟机 | 完整操作系统 | 否 | 高 |
| Web版Claude Code | 完整操作系统(Anthropic托管) | 否 | 零;需要Claude订阅和GitHub账号 |
内置Bash沙箱只限制Bash命令。内置的文件工具、MCP服务器和钩子仍在宿主机上直接运行。表中其他方案将整个Claude Code进程放入隔离边界,因此文件工具、MCP服务器和钩子也受限制。
沙箱隔离能降低攻击的影响,但不能消除风险。任何允许网络出口的方案仍可能泄漏代理可读取的数据;任何以可写方式挂载项目目录的方案仍可能修改代码。在依赖沙箱作为硬性控制之前,请阅读安全限制。
隔离也不改变发送给模型的内容。无论是否有沙箱,你的提示词和Claude读取的文件都会传输到Anthropic API或你配置的提供商。详见数据使用。
根据需求选择沙箱方案:对照表
将你的目标与下表匹配,然后阅读对应章节的详细说明。
| 你想 | 推荐方案 |
|---|---|
| 在自己机器上日常开发时减少权限提示 | 内置Bash沙箱,用/sandbox启用 |
让Claude无人值守运行(--dangerously-skip-permissions或自动模式) | 预配置的开发容器、任意容器/VM,或沙箱运行时 |
| 不仅隔离Bash,还要隔离MCP服务器和钩子,且不用Docker | 沙箱运行时 |
| 处理不受信任的仓库 | 专用虚拟机,或Web版Claude Code(需Claude订阅和关联的GitHub账号) |
| 在团队内标准化沙箱环境 | 预配置的开发容器,复制到仓库中 |
| 无需本地配置即可使用Claude Code | Web版Claude Code(需Claude订阅和关联的GitHub账号) |
| 要求组织内每个开发者都使用隔离 | 企业强制隔离 |
| 在原生Windows主机上工作 | 容器/VM,或在内置WSL2中使用Bash沙箱 |
隔离与权限模式的关系
权限模式决定工具调用是否执行以及是否先询问你。隔离限制命令运行后能访问什么。两者配合:当权限模式允许操作自动执行时,隔离边界限制操作能够触及的范围。
--dangerously-skip-permissions完全跳过每次操作审查,此时隔离边界是唯一限制Claude行动的手段。务必在容器、VM或沙箱运行时内使用,确保文件工具、MCP服务器和钩子也在边界内。
自动模式用分类器替代提示,分类器审查操作并阻止超出请求范围、针对未识别基础设施或由Claude读取的恶意内容驱动的操作。分类器是逐操作控制,不是隔离边界,因此隔离边界仍能为无人值守运行增加纵深防御,但不作为--dangerously-skip-permissions那样的硬性要求。
单独使用内置Bash沙箱只限制Bash,不足以实现完全无人值守运行(无论哪种模式)。可以分层:在容器或VM内运行内置Bash沙箱,在外部环境边界之上叠加OS级的命令限制。关于Bash沙箱与权限规则和模式的具体交互,参见沙箱如何与权限和权限模式关联。
内置Bash沙箱怎么启用与限制
该选项不支持原生Windows。在Windows主机上,使用WSL2或下面的容器/VM方案。
内置Bash沙箱是Claude Code自带的。它利用操作系统原语限制Claude运行的每条Bash命令的文件系统和网络访问:macOS使用Seatbelt(内置沙箱),Linux和WSL2使用bubblewrap。默认允许写入工作目录,首次需要新网络域时会提示。
用/sandbox命令启用。详细的批准模式、默认边界以及如何扩缩参见沙箱指南。
单命令沙箱不覆盖会话中所有操作:
要将内置工具、MCP服务器和钩子全部放入一个操作系统边界,需要将整个Claude Code进程放入沙箱运行时、开发容器或自定义容器中。
沙箱运行时怎么隔离整个Claude Code进程
@anthropic-ai/sandbox-runtime 包将整个进程包装在与内置Bash沙箱相同的Seatbelt或bubblewrap隔离中。通过它运行Claude Code会约束会话中的每一个工具、钩子和MCP服务器,而不仅仅是Bash。该运行时是beta研究预览版,配置格式可能随包更新而变化。
运行时默认拒绝所有写入和网络访问,因此在使用前必须配置。在~/.srt-settings.json或通过--settings传递的文件中,至少允许写入项目目录和Claude Code的配置路径~/.claude、~/.claude.json。允许会话需要的网络域,包括api.anthropic.com或你配置的提供商的端点。完整配置模式参见包的README。
配置文件就绪后,用npx启动Claude Code,并以claude作为要包装的命令:
bash
npx @anthropic-ai/sandbox-runtime claudeClaude Code在你配置的文件系统和网络边界内启动。同样的命令也适用于沙箱化独立的MCP服务器或其他辅助进程。
开发容器怎么配置Docker沙箱
开发容器会在VS Code或兼容编辑器管理的Docker容器内运行Claude Code,项目目录被挂载到容器内。你可以在仓库的.devcontainer/目录中定义自己的配置。
Claude Code仓库发布了一个示例开发容器,包含默认拒绝的iptables防火墙作为起点。将目录复制到你的仓库中,根据需要调整防火墙放行列表、基础镜像和固定的Claude Code版本。由于防火墙阻止未批准的出站流量,这类配置支持使用--dangerously-skip-permissions进行无人值守运行。
自定义容器怎么部署Claude Code
你可以在任意Docker或OCI容器镜像中运行Claude Code,使用自己的网络策略、挂载卷和seccomp配置文件。对于已有容器基础设施或CI运行器的组织来说,这是最常见的路径。
多个托管沙箱和远程执行服务可以为你托管容器。与你自己运行的容器一样需要检查的清单:哪些挂载点写入权限、内部可访问的凭据和令牌、网络出口策略允许什么。
你可以在容器内叠加内置Bash沙箱以实现逐命令限制。无特权容器需要沙箱故障排除中描述的嵌套沙箱设置。
虚拟机最高隔离级别怎么用
专用虚拟机提供最强的隔离,拥有独立的内核,在云或微VM部署中还有独立的虚拟硬件。可选方案包括云实例、本地Hypervisor和Firecracker等微VM。
当你评估不受信任的代码、安全策略要求代理与宿主机之间内核级隔离、或没有宿主机级方案满足合规要求时,使用此方案。Docker Desktop的sandboxes 功能提供带独立Docker守护进程和工作空间的微VM,可以在已安装Docker Desktop的主机上运行Claude Code。
Web版Claude Code:无需本地配置的隔离方案
Web版Claude Code在Anthropic托管的隔离虚拟机中运行每个会话。网络代理强制实行默认放行列表,另一个代理使你的GitHub令牌保留在沙箱外,同时在内部为仓库访问签发限域凭证。
当你希望获得完整的VM隔离但又不想自己配置基础设施,或从没有本地开发环境的设备委派任务时,使用此方案。它需要Claude订阅和关联的GitHub账号,会话从GitHub克隆你的仓库。套餐可用性和GitHub认证选项参见Web版Claude Code。
怎么在企业内强制实施沙箱隔离
单个开发者可以选用上述任意方案。组织能强制实施什么以及用什么工具,取决于方案:
- 内置Bash沙箱:唯一由Claude Code自身强制实施的方案。通过托管设置(MDM管理的文件或Claude.ai上的服务器托管设置)下发
sandbox配置键。需要部署的键以及如何防止开发者放宽策略,参见通过托管设置强制沙箱。 - 开发容器:将示例开发容器提交到仓库以在团队内标准化环境。这是一种约定而非强制边界,因为Claude Code不强制使用容器。如果希望开发者不能在外面运行,需通过组织的设备管理或软件白名单工具来强制。
- 自定义容器和VM:通过批准的镜像分发Claude Code,并使用设备管理或软件白名单工具阻止在镜像外安装。
参考文档
以下页面涵盖上述方案的配置和策略细节。
常见问题
Claude Code沙箱能完全阻止数据外泄吗?
不能。沙箱隔离能降低攻击影响,但允许网络出口的方案仍可能泄漏代理能读取的数据。沙箱也不改变发送给API的数据——提示词和Claude读取的文件仍然传输到Anthropic API或你配置的提供商。
Windows怎么使用Claude Code沙箱?
内置Bash沙箱不支持原生Windows。在Windows上,使用WSL2运行Bash沙箱,或者使用Docker容器/虚拟机方案(开发容器、自定义容器、虚拟机)。
如何强制要求团队所有开发者都用沙箱?
内置Bash沙箱可以通过托管设置(MDM或服务器托管设置)强制下发。开发容器通过提交到仓库来标准化,但需配合设备管理工具禁止容器外运行。自定义容器和VM则通过批准镜像分发并阻止外部安装。