{/* TRANSLATED — 已翻译为中文 */}

> ## 文档索引
> 在此获取完整文档索引：https://code.claude.com/docs/llms.txt
> 使用此文件发现所有可用页面，然后再进一步探索。

# 选择沙箱环境

> 比较 Claude Code 沙箱选项：内置的沙箱化 Bash 工具、沙箱运行时、dev container、Docker 和 VM。为你的威胁模型选择合适的隔离方案。

隔离 Claude Code 可以限制会话在网络上读取、写和访问的内容。当你让 Claude 以更少的权限提示工作、无人值守运行或指向你不完全信任的代码时，这一点最为重要。

Claude Code 可以在多种隔离环境中运行，从轻量级的按命令沙箱到完全独立的虚拟机。本页面介绍如何：

* [比较](#比较沙箱方法)可用的隔离方法——它们隔离什么、需要什么以及需要多少设置工作
* [选择](#选择方法)适合你目标和威胁模型的方法
* [开始使用](#沙箱化-bash-工具)你选择的方法——从内置 Bash 沙箱到专用虚拟机
* [强制执行](#跨组织强制隔离)组织中每位开发者的隔离

<Info>
  有关更广泛的安全模型，请参阅[安全](/en/security)。有关 Agent SDK 部署，请参阅[安全部署](/en/agent-sdk/secure-deployment)。
</Info>

## 比较沙箱方法

下表中的前两种方法在主机操作系统上运行，不使用容器。其余方法将 Claude Code 放置在容器或虚拟机中。

| 方法                                               | 隔离内容                                                                    | 需要 Docker | 设置工作量                                  |
| :------------------------------------------------- | :-------------------------------------------------------------------------- | :---------- | :------------------------------------------ |
| [沙箱化 Bash 工具](#沙箱化-bash-工具)              | Bash 命令及其子进程                                                         | 否          | macOS 最低；Linux 和 WSL2 较低              |
| [沙箱运行时](#沙箱运行时)                          | 整个 Claude Code 进程，包括文件工具、MCP 服务器和钩子                       | 否          | 低                                          |
| [Dev container](#dev-container)                    | 完整开发环境                                                                | 是          | 中等                                        |
| [自定义容器](#自定义容器)                          | 完整开发环境                                                                | 是          | 中等到高                                    |
| [虚拟机](#虚拟机)                                  | 完整操作系统                                                                | 否          | 高                                          |
| [Web 上的 Claude Code](#web-上的-claude-code)      | 完整操作系统，由 Anthropic 托管                                              | 否          | 无；需要 Claude 订阅和 GitHub               |

[沙箱化 Bash 工具](/en/sandboxing)内置于 Claude Code 中，仅限制 Bash 命令。内置文件工具、MCP 服务器和钩子仍然直接在你的主机上运行。表中的其他方法都将整个 Claude Code 进程放在隔离边界内，因此文件工具、MCP 服务器和钩子也会受到限制。

<Warning>
  沙箱隔离减少了漏洞的影响，但不能消除风险。任何允许网络出口的方法仍然可以泄露智能体可以读取的数据，任何以可写方式挂载项目目录的方法仍然可以修改该代码。在依赖沙箱作为硬控制之前，请查看[安全限制](/en/sandboxing#security-limitations)。

  隔离也不会改变发送到模型的内容。无论是否有沙箱，你的提示和 Claude 读取的文件都会传输到 Anthropic API 或你配置的提供商。有关 Claude Code 发送的内容以及如何减少它，请参阅[数据使用](/en/data-usage)。
</Warning>

## 选择方法

将你的目标与下面的行匹配，然后阅读后续的详细部分。

| 你想要                                                                         | 从这里开始                                                                                                                                |
| :----------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------- |
| 在日常工作中减少你机器上的权限提示                                             | [沙箱化 Bash 工具](/en/sandboxing)，使用 `/sandbox` 启用                                                                                 |
| 让 Claude 使用 `--dangerously-skip-permissions` 或自动模式无人值守工作         | 预配置的 [dev container](/en/devcontainer)、任何容器或 VM，或[沙箱运行时](#沙箱运行时)                                                    |
| 隔离 MCP 服务器和钩子以及 Bash，无需 Docker                                    | 沙箱运行时                                                                                                                                |
| 处理不受信任的仓库                                                             | 专用虚拟机，或如果你有 Claude 订阅和已连接的 GitHub 账户则使用 [Web 上的 Claude Code](/en/claude-code-on-the-web)                         |
| 跨团队标准化沙箱化环境                                                         | 预配置的 [dev container](/en/devcontainer)，复制到你的仓库中                                                                              |
| 从没有本地设置的设备使用 Claude Code                                           | [Web 上的 Claude Code](/en/claude-code-on-the-web)，需要 Claude 订阅和已连接的 GitHub 账户                                               |
| 要求组织中每位开发者都使用隔离                                                 | [跨组织强制隔离](#跨组织强制隔离)                                                                                                         |
| 在原生 Windows 主机上工作                                                      | 容器或 VM，或在 WSL2 内运行 Bash 沙箱                                                                                                     |

### 隔离与权限模式的关系

[权限模式](/en/permission-modes)决定工具调用是否运行以及是否先提示你。隔离限制命令运行后可以访问的内容。两者协同工作：当权限模式允许操作无需询问你即可运行时，隔离边界限制这些操作可以触及的范围。

`--dangerously-skip-permissions` 完全移除了逐操作审查，因此隔离边界是限制 Claude 行为的唯一因素。始终在容器、VM 或[沙箱运行时](#沙箱运行时)内运行它，这样文件工具、MCP 服务器和钩子也在边界内。

[自动模式](/en/permission-modes#eliminate-prompts-with-auto-mode)用分类器替换提示，该分类器审查操作并阻止那些升级超出请求、目标未识别基础设施或看起来由 Claude 读取的敌意内容驱动的操作。分类器是逐操作控制，不是隔离边界，因此隔离边界仍然为无人值守运行增加纵深防御，而不像 `--dangerously-skip-permissions` 那样是必需的。

[沙箱化 Bash 工具](#沙箱化-bash-工具)本身仅约束 Bash，因此对于两种模式的完全无人值守运行都不够。你可以叠加方法：在容器或 VM 内运行沙箱化 Bash 工具，在外部环境边界之上给你操作系统级的命令限制。有关 Bash 沙箱本身如何与权限规则和模式交互，请参阅[沙箱化与权限和权限模式的关系](/en/sandboxing#how-sandboxing-relates-to-permissions-and-permission-modes)。

## 沙箱化 Bash 工具

<Note>
  此选项不支持原生 Windows。在 Windows 主机上，请使用 WSL2 或以下容器或 VM 方法之一。
</Note>

沙箱化 Bash 工具内置于 Claude Code 中。它使用操作系统原语来限制 Claude 运行的每个 Bash 命令的文件系统和网络访问：macOS 上的 Seatbelt（内置 macOS 沙箱）以及 Linux 和 WSL2 上的 [bubblewrap](https://github.com/containers/bubblewrap)。默认情况下，它允许写入工作目录，并在命令首次需要新网络域时提示。

使用 `/sandbox` 命令启用它。[沙箱化](/en/sandboxing)指南涵盖批准模式、默认边界以及如何扩大或缩小它。

按命令沙箱不覆盖会话中运行的所有内容：

* 其他[内置工具](/en/tools-reference)（如 Read、Edit 和 WebFetch）在 Claude Code 进程内运行，不会生成任意代码。[权限规则](/en/permissions)通过路径或域来控制它们。
* [MCP](/en/mcp) 服务器和钩子是在主机上不受约束运行的独立进程。

要将内置工具、MCP 服务器和钩子全部放在一个操作系统边界后面，请在[沙箱运行时](#沙箱运行时)、[dev container](#dev-container)或[自定义容器](#自定义容器)内运行整个 Claude Code 进程。

## 沙箱运行时

[`@anthropic-ai/sandbox-runtime`](https://github.com/anthropic-experimental/sandbox-runtime) 包将整个进程包装在与内置 Bash 沙箱相同的 Seatbelt 或 bubblewrap 隔离中。通过它运行 Claude Code 可以约束会话中的每个工具、钩子和 MCP 服务器，而不仅仅是 Bash。该运行时是测试版研究预览，其配置格式可能随包的演进而变化。

该运行时默认拒绝所有写入和网络访问，因此在通过它启动 Claude Code 之前需要配置。在 `~/.srt-settings.json` 中，或你通过 `--settings` 传递的文件中，至少允许对你的项目目录和 Claude Code 的配置路径 `~/.claude` 和 `~/.claude.json` 的写入访问。允许你的会话需要的网络域，包括 `api.anthropic.com` 或你配置的提供商端点。有关完整配置架构，请参阅包的 [README](https://github.com/anthropic-experimental/sandbox-runtime)。

设置文件就位后，使用 `npx` 启动 Claude Code 并将 `claude` 作为要包装的命令传递：

```bash theme={null}
npx @anthropic-ai/sandbox-runtime claude
```

Claude Code 在沙箱中启动，带有你配置的文件系统和网络边界。同样的命令也适用于沙箱化独立的 MCP 服务器或其他辅助进程。

## Dev container

Dev container 在 VS Code 或兼容编辑器管理的 Docker 容器中运行 Claude Code，你的项目被挂载在其中。你可以在仓库中使用 `.devcontainer/` 目录定义自己的。

claude-code 仓库发布了一个[示例 dev container](/en/devcontainer)，带有默认拒绝的 iptables 防火墙作为起点。将其复制到你的仓库中，并调整防火墙允许列表、基础镜像和固定的 Claude Code 版本以适应你的环境。因为防火墙阻止未批准的出口，这样的配置支持使用 `--dangerously-skip-permissions` 进行无人值守工作。

## 自定义容器

你可以在任何 Docker 或 OCI 容器镜像中运行 Claude Code，使用你自己的网络策略、挂载卷和 seccomp 配置文件。这是拥有现有容器基础设施或 CI 运行器的组织最常见的路径。

几个托管沙箱和远程执行服务可以为你托管容器。与你操作的任何容器相同的检查清单适用：审查哪些内容以可写方式挂载、哪些凭据和令牌在容器内可访问，以及网络出口策略允许什么。

你可以在容器内叠加内置 Bash 沙箱以实现按命令限制。非特权容器需要[沙箱化故障排除](/en/sandboxing#troubleshooting)中描述的嵌套沙箱设置。

## 虚拟机

专用虚拟机提供最强的隔离，拥有自己的内核，在云或微 VM 部署中拥有自己的虚拟化硬件。选项包括云实例、本地虚拟机管理程序和 Firecracker 等微 VM。

当你评估不受信任的代码时、当你的安全策略要求智能体和主机之间有内核级隔离时，或当没有主机级方法满足你的合规要求时，请使用此方法。Docker Desktop 的[沙箱功能](https://docs.docker.com/ai/sandboxes/)提供一个拥有自己的 Docker 守护进程和工作区同步的微 VM，可以在已有 Docker Desktop 的主机上运行 Claude Code。

## Web 上的 Claude Code

[Web 上的 Claude Code](/en/claude-code-on-the-web) 在 Anthropic 管理的隔离虚拟机中运行每个会话。网络代理强制执行默认允许列表，单独的代理在沙箱外持有你的 GitHub 令牌，同时在沙箱内发放用于仓库访问的范围凭据。

当你想要完全 VM 隔离而无需自己配置基础设施时，或当你从没有本地开发环境的设备委派任务时，请使用此方法。它需要 Claude 订阅和已连接的 GitHub 账户，会话从 GitHub 克隆你的仓库。有关计划可用性和 GitHub 认证选项，请参阅 [Web 上的 Claude Code](/en/claude-code-on-the-web)。

## 跨组织强制隔离

个人开发者可以选择上述任何方法。组织可以强制执行什么以及使用哪些工具，取决于该方法：

* **内置 Bash 沙箱**：Claude Code 自身强制执行的唯一方法。通过[托管设置](/en/settings#settings-files)交付 `sandbox` 设置键，可以是 MDM 管理的文件，也可以通过 Claude.ai 上的[服务器托管设置](/en/server-managed-settings)。有关要部署的键以及如何防止开发者扩大策略，请参阅[使用托管设置强制沙箱化](/en/sandboxing#enforce-sandboxing-with-managed-settings)。
* **Dev container**：将[示例 dev container](/en/devcontainer) 提交到你的仓库以跨团队标准化环境。这是一种约定而非强制边界，因为 Claude Code 不要求容器。如果开发者不应在其外部运行 Claude Code，请使用组织的设备管理或软件允许列表工具强制执行。
* **自定义容器和 VM**：通过批准的镜像分发 Claude Code，并使用组织的设备管理或软件允许列表工具防止在其外部安装。

## 另请参阅

这些页面涵盖上述方法的配置和策略详情。

* [沙箱化](/en/sandboxing)：配置内置的沙箱化 Bash 工具
* [Dev container](/en/devcontainer)：预配置的 Docker 开发容器
* [安全](/en/security)：完整的 Claude Code 安全模型
* [安全部署](/en/agent-sdk/secure-deployment)：Agent SDK 应用的隔离指导
* [设置](/en/settings#sandbox-settings)：所有沙箱配置键，包括托管设置交付
