第十二章 · Coding Agent 的内建沙箱 vs 独立沙箱平台
这章为谁设计
你想理解「Codex/Claude Code/Cursor 自己的安全机制和 CubeSandbox/E2B 有什么区别」。
一句话定位
同一个问题——「AI 生成的不可信代码该怎么安全执行」——不同产品给出了不同答案。Codex 用 OS 沙箱、Claude Code 用权限分类器、Cursor 用用户确认、E2B/CubeSandbox 用 microVM。本章从隔离层级、启动成本、多实例密度三个维度做系统对照。
全维度对比
| 维度 | Codex | Claude Code | Cursor | E2B | CubeSandbox |
|---|---|---|---|---|---|
| 隔离层 | L2 OS | L0 应用 | L0 应用 | L4 云端 | L4 自托管 |
| 隔离机制 | bwrap+seccomp | Permission classifier | 用户确认框 | Firecracker KVM | RustVMM KVM |
| 冷启动 | <10ms | <10ms | <10ms | ~150ms | 60ms |
| 单实例内存 | ~0 | ~0 | ~0 | 未公开 | <5MB |
| 并行规模 | 数十个 | 百级 | 低 | 云弹性 | 千级 |
| 自托管 | 是 | 是 | 否 | 复杂 | 是 |
| 攻击面 | 中(共享内核) | 弱(无内核隔离) | 弱 | 小(独立 VM) | 小(独立 VM) |
核心问题:何时 OS sandbox 够用,何时必须 microVM?
OS sandbox 够用的条件(Codex 路线)
Codex 的设计思路是「OS 进程级隔离 + 策略控制」:
- macOS 用 Seatbelt 做文件系统白名单 + 网络控制
- Linux 用 bwrap + seccomp-BPF + Landlock
够用的条件:代码在单一信任域内执行(同一个用户的代码)、不需要多租户隔离。Codex 的典型场景是「开发者自己的代码在自己的机器上跑」——攻击者和受害者是同一个人。
必须 microVM 的条件
满足以下任一条件时,OS sandbox 不够:
- 多租户:不同用户的代码在同一台机器上执行
- 不可信代码源:代码来自外部(用户上传、AI 生成后未经审查直接执行)
- 合规要求:金融/医疗行业要求 VM 级隔离
- 内核 exploit 防护:共享内核意味着持续的逃逸风险
Claude Code 有独立 microVM 吗?
结论:没有。
Claude Code 的安全模型是四层纵深防御:
- System Prompt 层(指令约束)
- Permission Rules 层(settings.json 配置)
- Tool 层(每个工具声明是否需要权限)
- 用户确认层(危险操作弹框确认)
这四层全部在应用层运行——没有 KVM、没有 namespace、没有 seccomp。Claude Code 执行 Bash 命令时,命令直接在用户的 shell 环境里跑。
策略差异:
- Claude Code:「信任但验证」——通过 classifier 过滤危险操作
- CubeSandbox:「默认不信任」——所有代码在隔离 VM 里跑
两种策略适用于不同场景,不是简单的优劣关系。
并行密度:CubeSandbox 的决定性优势
Agent 的并行场景越来越常见:Dynamic Workflow 可以编排百级 subagent,每个 subagent 执行独立任务。如果每个都需要独立沙箱:
| 方案 | 单实例内存 | 100 个并行需要 | 1000 个并行需要 |
|---|---|---|---|
| CubeSandbox | <5MB | <500MB | <5GB |
| Kata | 10-30MB | 1-3GB | 10-30GB |
| Docker(弱隔离) | ~10MB | ~1GB | ~10GB |
| OS sandbox | ~0 | ~0 | ~0(但隔离弱) |
CubeSandbox 的 <5MB/实例让千级并行在单机上可行——这是唯一能同时做到「强隔离 + 高密度」的方案。
启动成本在实际场景中的影响
| 场景 | Codex OS sandbox (<10ms) | CubeSandbox (60ms) | 感知差异 |
|---|---|---|---|
| 单次交互命令 | 用户无感 | 用户无感 | 无 |
| 连续 100 次命令 | 1 秒 | 6 秒 | 可接受 |
| 连续 1000 次命令 | 10 秒 | 60 秒 | 有差异 |
实际 Agent 使用中,大部分是单次或少量命令,60ms 和 <10ms 的差异用户感知不到。
读完这章你应该能回答
- Codex 和 CubeSandbox 的本质区别是什么?(L2 OS 级 vs L4 硬件级)
- Claude Code 为什么没有 microVM?(设计哲学是「信任但验证」,面向单用户自用)
- 什么时候 OS sandbox 够用?(单用户、单信任域)
- CubeSandbox 的密度优势体现在哪?(<5MB/实例让千级并行可行)
导读目录:README.md 上一章:第十一章 · 威胁模型——AI Agent 代码执行的安全地图 下一章:第十三章 · 技术挑战——这个领域为什么难做