犀牛鸟 2026 · 开源研究笔记

Coding Agent 沙箱对照:从沙箱赛道视角看生产 Agent

调研时间:2026-06-22 | 环境:macOS arm64,无 KVM 本篇从沙箱隔离技术视角对照生产 Coding Agent,补 A 线盲区(密度、microVM 需求、隔离层级差异)


一句话定位

同一个问题——「AI 生成的不可信代码该怎么安全执行」——Codex 用 OS 沙箱、Claude Code 用权限分类器、Cursor 用用户确认、E2B/CubeSandbox 用 microVM。本篇从隔离层级、启动成本、多实例密度三个维度做系统对照。

Harness 内沙箱调用见 Codex 沙箱精读 / Claude Code 工具与权限 CubeSandbox 架构概览见 精读: cubesandbox(已有)


日常类比

想象你是一个快递站站长,每天收到大量来路不明的包裹(Agent 生成的代码),需要拆包检查(执行)。不同的安全策略对应不同的成本和安全等级:

类比边界:真实的代码执行比拆包裹复杂得多——代码可以创建文件、发网络请求、spawn 子进程,每个动作都需要独立的安全判定。


全维度对比表

维度 Codex Claude Code Cursor E2B CubeSandbox
隔离层 L2 OS 进程沙箱 L0-L2 应用层权限+OS级 L0 应用层 L4 云端 microVM L4 自托管 microVM
隔离机制 Seatbelt(Mac)/bwrap+seccomp(Linux) Permission classifier+hook+Bash限制 终端命令确认框 Firecracker KVM RustVMM KVM
默认网络 三模式可控(disabled/enabled/proxy) 策略+PreToolUse hook 用户确认 隔离(云端VPC) CubeEgress eBPF
冷启动 <10ms(进程fork) <10ms(进程内) <10ms(进程内) ~150ms(云端VM) 60ms(CoW预池)
单实例内存 ~0(共享进程) ~0(共享进程) ~0(共享进程) 未公开(云端) <5MB
并行规模 subagent(单机数十个) Swarm/Workflow(百级) 低(单会话) 云弹性扩展 高密度本机(千级)
文件快照 git worktree git 无 云端快照 CubeCoW(毫秒级)
自托管 是(CLI) 是(CLI) 否(商业产品) 复杂(Terraform) 是(一键部署)
E2B 兼容 否 否 否 原生 兼容
代码执行 API 无(通过Bash) 无(通过BashTool) 无(通过终端) SDK原生 SDK(E2B兼容)
攻击面 中(内核共享) 弱(无内核隔离) 弱(无隔离) 小(独立VM) 小(独立VM)

关键问题一:何时 OS sandbox 够用,何时必须 microVM?

这是隔离技术选型的核心分歧。

OS sandbox 够用的场景(Codex 路线)

Codex 的沙箱设计思路是「OS 进程级隔离 + 策略控制」[已有] deep-dive-codex-sandbox:

够用的条件:代码在单一信任域内执行(同一个用户的代码)、不需要强多租户隔离、不需要完整的内核独立。Codex 的典型场景是「开发者自己的代码在自己的机器上跑」——攻击者和受害者是同一个人,OS sandbox 主要防的是误操作和 prompt 注入导致的意外命令。

必须 microVM 的场景(E2B/CubeSandbox 路线)

当满足以下任一条件时,OS sandbox 不够 [社区]:

  1. 多租户:不同用户的代码在同一台机器上执行——内核共享意味着内核漏洞可以跨租户攻击
  2. 不可信代码源:代码来自外部(用户上传、AI 生成后未经人类审查直接执行)——攻击面包含 LLM 被 prompt 注入后生成的恶意代码
  3. 合规要求:金融/医疗等行业要求 VM 级隔离,OS namespace 隔离不满足审计标准
  4. 内核 exploit 防护:Linux 内核每年有数十个 CVE,共享内核意味着沙箱逃逸攻击面持续存在

分水岭判断:如果你的 Agent 只执行自己生成的代码、在单用户环境下运行、不暴露给外部输入,Codex 的 OS sandbox 够用。如果你要做一个”代码执行即服务”(像 E2B 那样给第三方 Agent 调用),microVM 是最低安全标准。


关键问题二:并行密度与 Swarm/Workflow 的需求

Claude Code 的并行架构 [已有]

从 A 线 多 Agent 编排 的研究,Claude Code 有四层递进的多 Agent 模式:

  1. Subagent:派生一次性子 agent,共享同一个进程
  2. Coordinator:通过环境变量激活多 agent 协调
  3. Swarm/Teams:三种后端(in-process/tmux/iTerm2),文件邮箱通信
  4. Dynamic Workflow:JS 脚本编排百级 subagent

关键观察:Claude Code 的并行全部在 L0(应用层) 进行——子 agent 之间没有内核级隔离,共享同一个文件系统和网络栈。这在开发者自用场景下没问题,但如果要把这个架构用于多租户生产环境,每个 subagent 都需要独立的隔离容器。

CubeSandbox 的密度优势

CubeSandbox 的 <5MB 单实例内存意味着 [源码] [已有]:

对比其他方案:

方案 单实例内存 64GB 机器理论上限 实际可行
CubeSandbox <5MB ~12,000 千级
Firecracker <5MB ~12,000 千级
Kata Containers 10-30MB ~2,000-6,000 百级
Docker(无额外隔离) ~10MB ~6,000 千级(但隔离弱)
gVisor 低(进程级) 高 千级(但 syscall 兼容风险)

Dynamic Workflow 场景:如果未来的 Agent 编排需要「同时跑 100 个 subagent,每个都在独立沙箱里」,CubeSandbox 的密度优势是决定性的——100 个实例只需要 500MB 内存。Kata Containers 同样的规模需要 1-3GB。


关键问题三:Claude Code 有独立 microVM 吗?

结论:没有 [已有] [源码]。

从 A 线精读可知,Claude Code 的安全模型是四层纵深防御:

  1. System Prompt 层(指令约束)
  2. Permission Rules 层(.claude/settings.json 配置)
  3. Tool 层(每个工具的 isReadOnly() / needsPermissions() 声明)
  4. 用户确认层(interactiveHandler 的 4 源竞赛判定)

这四层全部在 应用层和用户态 运行——没有 KVM、没有 namespace、没有 seccomp。Claude Code 执行 Bash 命令时,命令直接在用户的 shell 环境里跑,没有额外隔离。

与 CubeSandbox 的差异:

维度 Claude Code CubeSandbox
隔离实现层 应用逻辑(L0) 硬件虚拟化(L4)
内核共享 是(与宿主机共享) 否(独立 guest kernel)
逃逸风险 中(依赖分类器准确性) 极低(需要 KVM exploit)
灵活性 极高(任何命令都能跑) 受限于沙箱模板
用户体验 无感(像本地开发) 有 API 调用开销

Claude Code 的策略是「信任但验证」——通过 classifier 和 hook 过滤危险操作,而不是阻止所有操作。CubeSandbox 的策略是「默认不信任」——所有代码都在隔离的 VM 里跑,即使有恶意行为也无法影响宿主机。两种策略的适用场景不同,不是简单的优劣关系。


Agent Harness 到沙箱的调用路径

graph TD
    AGENT[AI Agent / Harness] --> REQ{代码执行请求}

    REQ -->|"Codex 路线"| OS[L2: OS Sandbox<br>bwrap + seccomp]
    REQ -->|"Claude Code 路线"| PERM[L0: Permission Classifier<br>→ BashTool 直接执行]
    REQ -->|"E2B 路线"| CLOUD[L4: 云端 microVM<br>Firecracker + API]
    REQ -->|"CubeSandbox 路线"| LOCAL[L4: 自托管 microVM<br>RustVMM + E2B SDK]

    OS --> EXEC1[执行结果]
    PERM --> EXEC2[执行结果]
    CLOUD --> EXEC3[执行结果]
    LOCAL --> EXEC4[执行结果]

    OS -.->|"A 线已有"| CODEX_DOC["deep-dive-codex-sandbox.md"]
    PERM -.->|"A 线已有"| CLAUDE_DOC["deep-dive-claude-code-tools-permissions.md"]
    CLOUD -.->|"C 线已有"| E2B_DOC["sandbox-deep-dive-e2b.md"]
    LOCAL -.->|"C 线已有"| CUBE_DOC["sandbox-deep-dive-cubesandbox.md"]

    style OS fill:#e3f2fd
    style PERM fill:#fff3e0
    style CLOUD fill:#e8f5e9
    style LOCAL fill:#fce4ec

Codex 的 OS 沙箱与 microVM 的具体差异

从隔离技术视角补充 A 线盲区:

启动成本

Codex 的 sandbox 启动是进程级的——fork() + 设置 namespace/seccomp/Landlock 策略,总耗时 <10ms [已有]。CubeSandbox 的 60ms 虽然是 microVM 中最快的,但仍然是 Codex 的 6 倍。

影响:在交互式 Agent 场景下(用户等待每一步执行结果),10ms 和 60ms 的差异可以忽略。在批量执行场景下(Agent 连续发起 100 个命令),差异累积到 5 秒 vs 0.5 秒——仍然可接受。真正的差异在于 microVM 的首次 boot(冷启动),CubeSandbox 通过 CoW 预池化把这个成本压到了 60ms。

多实例密度

维度 Codex OS sandbox CubeSandbox microVM
每实例额外内存 ~0(共享进程空间) <5MB(独立 VM)
每实例额外 CPU ~0 vCPU 分配
内核独立性 否(共享宿主内核) 是(独立 guest kernel)
文件系统隔离 namespace(视图隔离) 完全独立(virtio-blk)
适合并行数 无上限(受进程数限制) 千级(受内存限制)

网络 egress 策略

维度 Codex CubeSandbox
实现层 sandbox policy(disabled/enabled/proxy) CubeEgress(eBPF + OpenResty)
粒度 三档(全禁/全开/代理) 域名级过滤、凭据注入、审计日志
可配置性 启动时固定 运行时动态调整
绕过风险 低(OS 级) 极低(eBPF 内核级 + VM 隔离)

与 6 开源项目的关系映射

                    ┌──────── 引擎层 ────────┐
                    │ Firecracker (L4 引擎)   │
                    │ gVisor Sentry (L1 引擎) │
                    └─────────┬──────────────┘
                              │ 构建于
            ┌─────────────────┼─────────────────┐
            │                 │                   │
     ┌──────▼──────┐  ┌──────▼──────┐  ┌────────▼────────┐
     │ E2B (L3 云) │  │ CubeSandbox │  │ Kata (L4 OCI)  │
     │ 云端 API    │  │ (L4 自托管) │  │ K8s 安全容器    │
     └──────┬──────┘  └──────┬──────┘  └─────────────────┘
            │                 │
            └────── SDK ──────┘  E2B SDK 兼容
                    兼容

     ┌─────────────────────────────────────────────────────┐
     │            Agent 内建沙箱(非独立项目)              │
     │  Codex (L2 OS)    Claude Code (L0 Permission)      │
     │  Cursor (L0 确认)  Daytona (L3 容器级三层)          │
     └─────────────────────────────────────────────────────┘

核心发现总结

  1. OS sandbox vs microVM 的分水岭是多租户和信任边界——单用户自用场景 Codex 的 L2 方案够用,多租户代码执行服务必须 L4

  2. Claude Code 没有独立 microVM,完全依赖应用层权限控制。安全模型的核心假设是「代码由可信 LLM 生成,用户在场监督」

  3. CubeSandbox 的密度优势在 Agent 并行场景下是决定性的——<5MB/实例让千级并行在单机上可行,这是 Codex 的 OS sandbox(共享进程,无密度问题但安全弱)和 Kata(10-30MB/实例)都无法匹敌的安全-密度组合

  4. E2B SDK 正在成为事实标准——CubeSandbox 选择兼容而非另起炉灶,让 Agent 框架可以零改动从 E2B 切换到 CubeSandbox

  5. 启动成本差异在实际场景中可忽略——60ms vs <10ms 在交互式 Agent 使用中感知不到,但在高频批量执行中会累积


证据等级

结论 等级 来源
Codex 三平台 OS 沙箱机制 [已有] A 线 deep-dive-codex-sandbox.md
Claude Code 四层权限 [已有] A 线 deep-dive-claude-code-tools-permissions.md
Claude Code 多 Agent 编排 [已有] A 线 deep-dive-claude-code-multi-agent.md
CubeSandbox <5MB / 60ms [已有] [源码] sandbox-deep-dive-cubesandbox.md + README
E2B Firecracker 底层 [已有] sandbox-deep-dive-e2b.md
E2B SDK API 面 [已有] sandbox-unresolved-deep-dive.md
Cursor 无 microVM [社区] cursor.com/docs(终端确认机制)
Agent 并行密度推算 [推断] 基于 5MB × N 计算,未经生产验证
Claude Code 无 VM 隔离 [源码] [已有] A 线 tools-permissions 精读