English ← MyDocs

文档索引

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

选择沙箱环境

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

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

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

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

有关更广泛的安全模型,请参阅安全。有关 Agent SDK 部署,请参阅安全部署

比较沙箱方法

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

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

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

Warning

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

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

选择方法

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

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

隔离与权限模式的关系

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

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

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

沙箱化 Bash 工具本身仅约束 Bash,因此对于两种模式的完全无人值守运行都不够。你可以叠加方法:在容器或 VM 内运行沙箱化 Bash 工具,在外部环境边界之上给你操作系统级的命令限制。有关 Bash 沙箱本身如何与权限规则和模式交互,请参阅沙箱化与权限和权限模式的关系

沙箱化 Bash 工具

Note

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

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

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

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

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

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

沙箱运行时

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

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

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

npx @anthropic-ai/sandbox-runtime claude

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

Dev container

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

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

自定义容器

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

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

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

虚拟机

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

当你评估不受信任的代码时、当你的安全策略要求智能体和主机之间有内核级隔离时,或当没有主机级方法满足你的合规要求时,请使用此方法。Docker Desktop 的沙箱功能提供一个拥有自己的 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 自身强制执行的唯一方法。通过托管设置交付 sandbox 设置键,可以是 MDM 管理的文件,也可以通过 Claude.ai 上的服务器托管设置。有关要部署的键以及如何防止开发者扩大策略,请参阅使用托管设置强制沙箱化
  • Dev container:将示例 dev container 提交到你的仓库以跨团队标准化环境。这是一种约定而非强制边界,因为 Claude Code 不要求容器。如果开发者不应在其外部运行 Claude Code,请使用组织的设备管理或软件允许列表工具强制执行。
  • 自定义容器和 VM:通过批准的镜像分发 Claude Code,并使用组织的设备管理或软件允许列表工具防止在其外部安装。

另请参阅

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

  • 沙箱化:配置内置的沙箱化 Bash 工具
  • Dev container:预配置的 Docker 开发容器
  • 安全:完整的 Claude Code 安全模型
  • 安全部署:Agent SDK 应用的隔离指导
  • 设置:所有沙箱配置键,包括托管设置交付