Claude Code

Sandbox 与 Dev Container

比较 Claude Code 内置 Bash sandbox、Sandbox runtime、Dev Container、自定义容器和 VM,并说明持久化认证、网络出口、凭据保护和缓存边界。

当你让 Claude Code 少问确认、自动跑测试、处理第三方仓库或在 CI/远程环境里执行任务时,要先决定隔离边界。权限规则控制“能不能运行”,sandbox 和容器控制“运行后能碰到什么”。

任何 sandbox 都不会改变已经发送给模型的 prompt、文件内容和工具结果。它保护本机文件、网络和凭据,不是数据保留或训练策略边界。

#隔离方案对比

方案隔离范围需要 Docker适合
Sandboxed Bash toolBash 命令和子进程日常减少命令确认
Sandbox runtime整个 Claude Code 进程、MCP、Hooks不想用 Docker,但要隔离更多进程
Dev Container完整开发环境团队统一工具链、Codespaces、IDE container
自定义容器完整开发环境企业已有容器平台、CI、远程执行
VM完整操作系统不可信仓库、强隔离、合规
Claude Code on the webAnthropic 托管环境移动端委派、无需本地环境

内置 Bash sandbox 只约束 shell 命令。内置 Read/Edit、MCP server 和 hooks 不一定在同一个 OS 边界里。需要更强隔离时,用 Sandbox runtime、容器或 VM。

#Dev Container 基线

最小 .devcontainer/devcontainer.json:

.devcontainer/devcontainer.json
{
  "image": "mcr.microsoft.com/devcontainers/base:ubuntu",
  "features": {
    "ghcr.io/anthropics/devcontainer-features/claude-code:1.0": {}
  }
}

常见增强:

.devcontainer/devcontainer.json
{
  "mounts": [
    "source=claude-code-config-${devcontainerId},target=/home/node/.claude,type=volume"
  ],
  "containerEnv": {
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
    "DISABLE_AUTOUPDATER": "1"
  }
}

~/.claude 存放认证、用户 settings 和 session history。没有 volume 时,每次 rebuild 都要重新登录。用 ${devcontainerId} 可以按项目隔离认证状态。

#容器里的组织策略

在 Linux 容器中,Claude Code 会读取 /etc/claude-code/managed-settings.json:

Dockerfile
RUN mkdir -p /etc/claude-code
COPY managed-settings.json /etc/claude-code/managed-settings.json

这适合统一默认值,但它仍然在项目仓库里,有写权限的人可以改 Dockerfile。真正不可绕过的策略应通过 MDM、server-managed settings、系统文件或平台策略下发。

#网络出口

Dev Container 可以用防火墙脚本只允许必要域名。参考做法:

域名用途
passion8.ccPassion8 模型请求和控制台
api.anthropic.comAnthropic API、WebFetch 预检、server-managed settings
claude.ai官方账号登录和 Web 入口
downloads.claude.ai原生 binary、插件可执行文件、更新
raw.githubusercontent.comrelease notes、插件市场和参考配置

如果完全禁用非必要流量,设置:

export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1

但安装、插件、WebFetch、Chrome bridge 或 Artifacts 仍可能需要额外域名。企业应把“模型请求域名”和“客户端辅助流量域名”分开列。

#凭据保护

不要把宿主机长期凭据直接 mount 进容器,尤其是:

  • ~/.ssh
  • ~/.aws/credentials
  • ~/.config/gcloud
  • .env
  • npm、GitHub、云厂商长期 token

更稳的做法:

需求建议
Git 访问repo-scoped deploy key 或短期 token
云 providerworkload identity、Codespaces secret、OIDC
Passion8 API Key用户级 secret 或 token helper
npm/pnpm install只读 registry token,并限制域名

如果启用 Claude Code sandbox,还可以保护常见凭据:

.claude/settings.json
{
  "sandbox": {
    "enabled": true,
    "credentials": {
      "files": [
        { "path": "~/.aws/credentials", "mode": "deny" },
        { "path": "~/.ssh", "mode": "deny" }
      ],
      "envVars": [
        { "name": "GITHUB_TOKEN", "mode": "deny" },
        { "name": "NPM_TOKEN", "mode": "deny" }
      ]
    }
  }
}

#权限模式搭配

模式建议环境
default日常本机开发
plan高风险改动、先审方案
auto有 sandbox 或容器时减少确认
bypassPermissions只在可信 repo、非 root 容器、VM 或强 sandbox 中使用

--dangerously-skip-permissions 会移除逐项确认。容器能降低宿主机风险,但不能防止仓库内文件被修改,也不能防止容器内可访问凭据被使用或外传。

#缓存和成本

场景5m / 1h 解释
每次 rebuild 清空 ~/.claude会话、settings 和认证状态变化,缓存命中更差
持久化 .claude volume同项目连续会话前缀更稳定
容器固定 Claude Code 版本system prompt 和工具行为更稳定
每个 CI job 新容器多数情况下是冷前缀,5 分钟 TTL 帮助有限
网络/权限策略变更tools、settings、sandbox 提示变化会影响 cache key
Passion8 网关仍要看上游是否支持 1 小时 TTL 和 usage 字段透传

#官方参考

#相关页面

Support / 支持

Need help? / 需要帮助?

接入、计费与模型异常可邮件联系;服务可用性以状态页为准。For setup, billing, or model issues, email us. Check the status page for uptime.

也可使用右下角微信 / QQ 客服 · WeChat / QQ support is available at the bottom right