⚠️ 源单薄性声明 本条目主体来源是 Anthropic 官方 sandboxing.md(330 行)。没有第三方安全审计、没有真实被绕过的事故。 已讲清楚:sandbox 是什么、macOS/Linux 怎么启、文件+网络双隔离原则 还没听到:sandbox 被绕过的实例、企业真实配置、Windows/WSL1 相关坑 这是起步级安全认知,不是安全工程指南。

一句话

Sandboxing = 用操作系统级的隔离(macOS Seatbelt / Linux bubblewrap),给 Claude 的 bash 工具划一个”只能在这里面动”的笼子。

为什么会有这东西

来源:sandboxing.md 的 “Why sandboxing matters” 段。

传统的权限模式(见 Plan Mode 起手法 里的 5 种权限模式)问每一条 bash——官方原话三个坏处:

  • Approval fatigue:一直点 approve 最后开始不看内容就点
  • Reduced productivity:反复被打断
  • Limited autonomy:Claude 不能自主干活

Sandbox 换了思路:不一条条问,而是上来定好边界——

  1. Define clear boundaries:指定 Claude 能访问哪些目录、哪些网络域名
  2. Reducing permission prompts:边界内的安全命令不用再问
  3. Maintaining security:越界立即通知
  4. Enabling autonomy:边界内 Claude 可以更自由干活

两道隔离(都要有才算数)

sandboxing.md 明确警告:

Effective sandboxing requires both filesystem and network isolation. 只有文件隔离没网络 → 泄 SSH key;只有网络隔离没文件 → 系统文件被改。

文件系统隔离

  • 默认写:当前工作目录及其子目录
  • 默认读:除少数 denied 目录外整台机器
  • 越界:阻止或要权限
  • 可扩展:sandbox.filesystem.allowWrite 加白名单

底层实现macOS 用 Seatbelt / Linux + WSL2 用 bubblewrap(WSL1 不支持,因为缺内核特性)。

这些是 OS 级的,所有子进程自动继承——包括 kubectl / terraform / npm 这些 Claude 的 bash 工具起的进程。

网络隔离

  • 通过沙盒外的代理服务器控制
  • 只有允许的域名能访问
  • 新域名触发确认弹窗(开 allowManagedDomainsOnly 则直接拒)
  • 支持自定义代理规则

怎么起步

macOS(开箱即用)

macOS 上 Seatbelt 是系统自带的,不用装东西。

Linux / WSL2(要装 bubblewrap)

# Debian/Ubuntu
sudo apt install bubblewrap
 
# Fedora/RHEL
sudo dnf install bubblewrap

启用(所有平台)

settings.json 里加 sandbox 段,具体字段看 sandboxing.md 的”Getting started”部分——官方 doc 是权威配置参考,这里不复述(随版本变)。

Sandbox vs. 权限模式 vs. deny 列表

三件事不要混:

工具做什么关系
Permission mode控制 Claude 问不问 你(default/acceptEdits/plan/auto/dontAsk/bypassPermissions)每条命令的交互策略
allow/deny 列表在 settings.json 里明确列”不用问”和”永远不做”的命令命令级白/黑名单
SandboxOS 级强制——越界命令根本执行不了最终防线

Sandbox 是最硬的——前两种都是 Claude 选择要不要做(好 Claude 会守规矩,被越狱的就未必),sandbox 是物理上做不了

陈彬视角

对好朋友社群来说:

  • Mac 用户:起手就可以打开 sandbox,无成本。把 ~/.ssh/~/.aws/ 加进 deny 路径,防 Claude 误读 key。
  • 个人项目:用 acceptEdits + 基本 sandbox 配置就够。
  • 接触企业代码:一定开 sandbox,配置 allowManagedDomainsOnly 防泄露。

一个不那么显眼的价值API Key 的安全管理 里说”Claude 能用 Bash(cat .env) 绕开 deny Read”——sandbox 开了之后绕不开,因为 bash 本身受 OS 级限制,cat 读不到沙盒外的东西。

别把 sandbox 当成万能——沙盒是降低风险的一层,不是”开了就安全”。真的处理敏感数据还是得走专门的隔离环境(VM / 容器 / 专用机)。

关联

needs_sources(明确待补)

  • 被绕过的事故/报告
  • Linux/WSL2 下的 bubblewrap 实战坑
  • 企业级配置实例