本页目录13
要点速览
- 沙箱 Bash 工具(`/sandbox`)只隔离 Bash 命令,文件工具、MCP 服务器和钩子仍在宿主机运行;其余五种方案将整个 Claude Code 进程放入隔离边界。
- 使用 `--dangerously-skip-permissions` 时必须配合容器、虚拟机或沙箱运行时,隔离是唯一的行为约束手段。
- 沙箱运行时(`@anthropic-ai/sandbox-runtime`)默认拒绝所有写入和网络访问,需在 `~/.srt-settings.json` 中显式放行项目目录、`~/.claude`、`~/.claude.json` 及所需网络域。
- 网页版 Claude Code 由 Anthropic 托管隔离虚拟机,GitHub Token 在沙箱外独立保管并向沙箱内发放范围限定凭证,无需自行配置基础设施。
- 组织级强制隔离:内置 Bash 沙箱可通过托管设置(MDM 或 server-managed settings)下发 `sandbox` 配置键;容器/虚拟机方案须借助设备管理或软件白名单工具强制执行。
- 沙箱隔离减轻违规影响,但不消除风险:允许网络出站仍可泄露数据,挂载可写项目目录仍可修改代码;内容传输至 Anthropic API 不受沙箱影响。
本文是对官方参考页 Choose a sandbox environment 的中文整理,完整与最新内容以原文为准。
各沙箱方案对比
前两种方案在宿主机操作系统上运行(无需容器),其余方案将 Claude Code 置于容器或虚拟机内。
| 方案 | 隔离范围 | 需要 Docker | 配置复杂度 |
|---|---|---|---|
| 沙箱 Bash 工具(Sandboxed Bash tool) | Bash 命令及其子进程 | 否 | macOS 极低;Linux/WSL2 低 |
| 沙箱运行时(Sandbox runtime) | 整个 Claude Code 进程,含文件工具、MCP 服务器、钩子 | 否 | 低 |
| Dev container | 完整开发环境 | 是 | 中 |
| 自定义容器(Custom container) | 完整开发环境 | 是 | 中到高 |
| 虚拟机(Virtual machine) | 完整操作系统 | 否 | 高 |
| 网页版 Claude Code | 完整操作系统(由 Anthropic 托管) | 否 | 无需配置;需 Claude 订阅和 GitHub 账号 |
注意:沙箱 Bash 工具仅限制 Bash 命令,内置文件工具、MCP 服务器和钩子仍在宿主机直接运行。其余所有方案将整个 Claude Code 进程置于隔离边界内。
按目标选择方案
| 目标 | 推荐方案 |
|---|---|
| 减少日常工作中的权限提示 | 沙箱 Bash 工具,用 /sandbox 启用 |
以 --dangerously-skip-permissions 或 auto 模式无人值守运行 | 预配置 dev container、任意容器或虚拟机,或沙箱运行时 |
| 不使用 Docker 的情况下同时隔离 MCP 服务器和钩子 | 沙箱运行时 |
| 处理不受信任的代码仓库 | 专用虚拟机,或网页版 Claude Code(需 Claude 订阅 + GitHub) |
| 团队统一沙箱环境 | 预配置 dev container(复制到仓库) |
| 无本地环境的设备上使用 Claude Code | 网页版 Claude Code(需 Claude 订阅 + GitHub) |
| 强制组织内所有开发者使用隔离 | 见「组织级强制隔离」章节 |
| 在原生 Windows 主机上使用 | 容器或虚拟机,或在 WSL2 内使用沙箱 Bash 工具 |
隔离与权限模式的关系
- 权限模式(Permission modes):决定工具调用是否执行、是否先询问用户。
- 隔离:限制命令运行后能访问的资源范围。
- 两者协同:当权限模式允许动作无需询问时,隔离边界限制这些动作的可达范围。
| 权限模式 | 与隔离的关系 |
|---|---|
--dangerously-skip-permissions | 必须在容器、虚拟机或沙箱运行时内使用;隔离是唯一的行为约束手段 |
auto 模式 | 分类器逐动作审查,建议配合隔离作为纵深防御,非强制要求 |
| 沙箱 Bash 工具(单独使用) | 仅约束 Bash,不足以覆盖完整的无人值守场景 |
沙箱 Bash 工具
- 平台支持:macOS(使用 Seatbelt)、Linux 和 WSL2(使用 bubblewrap);不支持原生 Windows。
- 启用命令:
/sandbox - 默认行为:允许对工作目录写入;首次访问新网络域时提示确认。
- 覆盖范围:仅限 Bash 命令及子进程;不覆盖 Read、Edit、WebFetch 等内置工具,也不覆盖 MCP 服务器和钩子。
- 详细配置:见官方 Sandboxing 文档(审批模式、默认边界、扩大/收窄方法)。
沙箱运行时(Sandbox runtime)
- 包名:
@anthropic-ai/sandbox-runtime(Beta,配置格式可能随版本变动) - 隔离范围:整个 Claude Code 进程内所有工具、钩子、MCP 服务器。
- 默认策略:拒绝所有写入和网络访问。
必须配置的项目
配置文件路径:~/.srt-settings.json,或通过 --settings 指定文件。
| 配置类型 | 至少需要包含的内容 |
|---|---|
| 写入权限 | 项目目录、~/.claude、~/.claude.json |
| 网络域 | api.anthropic.com 或所配置提供商的端点 |
启动命令
npx @anthropic-ai/sandbox-runtime claude
同一命令也可用于沙箱化独立 MCP 服务器或其他辅助进程。完整配置 schema 见包的 README。
Dev Container
- 在 Docker 容器内运行 Claude Code,由 VS Code 或兼容编辑器管理,项目目录挂载其中。
- 配置方式:在仓库中创建
.devcontainer/目录。 - claude-code 仓库提供预配置示例 dev container,含默认拒绝的 iptables 防火墙。
- 可按需调整:防火墙允许列表、基础镜像、固定的 Claude Code 版本。
- 防火墙阻止未批准出站流量,支持以
--dangerously-skip-permissions进行无人值守运行。
自定义容器(Custom Container)
- 支持任意 Docker 或 OCI 容器镜像,可自定义网络策略、挂载卷、seccomp 配置。
- 可托管于托管沙箱或远程执行服务。
- 可在容器内叠加使用沙箱 Bash 工具(提供逐命令限制)。
- 非特权容器需配置嵌套沙箱设置,详见 Sandboxing troubleshooting 文档。
运行容器时安全检查清单:
| 检查项 | 说明 |
|---|---|
| 挂载可写目录 | 确认哪些目录以可写方式挂载 |
| 凭证与 Token | 确认容器内可访问哪些凭证和 token |
| 网络出站策略 | 确认网络出站策略允许的范围 |
虚拟机(Virtual Machine)
- 提供最强隔离:独立内核;云或 microVM 部署中还有独立虚拟硬件。
- 适用场景:
- 评估不受信任的代码
- 安全策略要求 agent 与宿主机之间内核级别隔离
- 无任何宿主机方案满足合规要求
- 可选方案:Docker Desktop 的 Sandboxes 功能(microVM,含独立 Docker daemon 和工作区同步)。
网页版 Claude Code
- 每个会话运行在由 Anthropic 管理的隔离虚拟机中。
- 网络代理强制执行默认允许列表。
- GitHub Token 由独立代理在沙箱外持有,向沙箱内发放范围限定凭证。
- 前提条件:Claude 订阅 + 已关联的 GitHub 账号;会话从 GitHub 克隆仓库。
- 适用场景:无需自行配置基础设施的完整 VM 隔离;或从无本地开发环境的设备委托任务。
组织级强制隔离
| 方案 | 强制机制 | 备注 |
|---|---|---|
| 内置 Bash 沙箱 | 通过托管设置下发 sandbox 配置键(MDM 管理文件或 server-managed settings) | 详见 Enforce sandboxing with managed settings |
| Dev container | 将示例 dev container 提交到仓库 | 约定而非强制边界;如需强制须借助设备管理或软件白名单工具 |
| 自定义容器/虚拟机 | 通过审批镜像分发 Claude Code | 用设备管理或软件白名单工具防止在镜像外安装 |
相关参考文档
| 文档页 | 内容摘要 |
|---|---|
| Sandboxing | 配置内置沙箱 Bash 工具(审批模式、边界调整、托管设置下发) |
| Dev container | 预配置 Docker 开发容器详细说明 |
| Security | Claude Code 完整安全模型 |
| Secure deployment | Agent SDK 应用隔离指南 |
| Settings#sandbox-settings | 所有沙箱配置键(含托管设置下发方式) |