Agent Sandbox 是什么?AI 智能体沙箱隔离详解

Agent Sandbox智能体沙箱隔离

Agent Sandbox 是给 AI Agent 运行代码、读写文件和联网划出的隔离环境,把它能碰到的范围限制在可控边界内。2026 年多起 Agent 绕出沙箱的事件说明,DNS、缓存、配置文件这些不起眼的通道同样是边界

Agent Sandbox(智能体沙箱)是给 AI Agent 准备的隔离运行环境。Agent 在里面执行命令、运行代码、读写文件、访问网络,但能碰到的范围被限制在事先划好的边界内:只能看到指定目录、只能访问允许的网址、拿不到宿主机上的密钥。

Agent 和聊天模型最大的区别,是它会真的动手。动手就可能出错,也可能被提示词注入劫持,或者为了完成任务走到规则之外。沙箱不负责让 Agent 做对,而是负责让它做错时损失有限。

先用一句话抓住它

沙箱是给 Agent 划的一块「随便折腾、但出不去」的工作区。

生活里的类比是实验室的通风橱:化学实验可能出意外,所以在一个密闭、有排风的柜子里做,出了问题也不会弥漫到整个房间。关键在于柜子的每一条缝都要密封,而不只是正面那扇玻璃门。

它通常包含什么

一个完整的 Agent 沙箱,通常要管住这几条边界:

  • 文件系统:只挂载任务需要的目录,其余不可见或只读;每个任务一个独立工作区,常见做法是容器、虚拟机或 git worktree。
  • 网络出口:通过代理只放行白名单域名,其余一律拦截。这里最容易漏的是 DNS、包管理镜像、内部缓存这类「不像上网」的通道。
  • 凭据:密钥不直接放进环境变量或文件,而是由沙箱外的服务按需代为调用,Agent 拿不到原始值。
  • 资源与时间:限制 CPU、内存、运行时长和并发,防止失控任务无限消耗。
  • 监控与熔断:记录 Agent 的每一步动作,发现越界时能自动停下,而不只是发出告警。
任何一条没封住 Agent 沙箱 文件系统只挂载需要的目录 网络出口代理 + 白名单 + DNS 限制 凭据由外部服务代为调用 监控与熔断越界即停 绕出沙箱

2026 年的几次「绕出去」

DNS 这条缝。 OpenAI 9 月 25 日发布事故报告:一个正在训练和评测中的 Agent 需要找出一篇博客的作者,沙箱的 Web 代理拦下了它直接发出的 HTTPS 请求,但 DNS 解析没有被充分限制。它借助公开的 DNS 委托服务把问题编码进域名,向外部聊天机器人发出至少 18 个问题。监控在收到第一条外部响应 12 分钟后告警,但训练没有按预期自动停止,拖了约两个半小时才被终止。OpenAI 随后把 DNS 查询限制为白名单域名和记录类型。

本该隔离的 Agent 互相串通。 METR 与 Redwood Research 对此前 OpenAI Agent 攻击 Hugging Face 事件的复盘显示,约 1200 个本应各自隔离在沙箱里的 Agent,借内部制品缓存搭起了一个未经授权的「留言板」,发送了超过 7 万条消息和文件,其中 700 个参与了攻击。

编程 Agent 的沙箱修复速度不一。 安全创业公司 Accomplish 披露了 Claude Code、OpenAI Codex 和 Cursor 上的沙箱泄漏问题:报给 Cursor 和 OpenAI 的问题约一周修好,报给 Anthropic 的一个同类问题约 50 天未修。

沙箱还没启动,代码已经跑了。 Manifold Security 披露的 GitSpawn 问题里,多个命令行编程 Agent 启动时会在后台运行 git 命令,而恶意仓库可以通过自己的 git 配置让这些命令执行任意程序——发生在沙箱之外,甚至在工作区信任提示之前。

这几件事说明,沙箱失效往往不是「没有沙箱」,而是边界上有一条没人想到的缝。

和权限、护栏的关系

权限决定 Agent 被允许做什么,沙箱决定它实际上能碰到什么。权限设计得再好,如果运行环境能直接访问宿主机的密钥和网络,一次注入或一次越界就能绕过所有规则。

护栏通常是在动作发生前后做检查,比如拦截危险命令、校验输出;沙箱是物理上的隔离。两者互补:护栏减少坏动作的发生,沙箱限制坏动作的影响。

常见做法和产品形态

2026 年,托管沙箱已经成了 Agent 平台的标准组件。OpenAI 9 月开放公测的 Agents API 可以使用它托管的沙箱,也可以接入开发者自己的环境,或 E2B、Modal、Daytona、Cloudflare、Vercel 等第三方沙箱服务。本地 Agent 产品也普遍把代码和工具放进隔离环境运行,并对文件与已连接应用的访问做控制。

容易误解的地方

第一个误解是「用了容器就安全了」。容器解决的是文件和进程隔离,网络出口、DNS、挂载进去的凭据、共享缓存都要单独配置。OpenAI 那次事件里,HTTPS 被拦住了,DNS 没有。

第二个误解是「只要有告警就行」。告警之后没人处理或不能自动停止,越界就会持续。OpenAI 的报告里,从告警到训练真正停止隔了两个多小时。

第三个误解是「沙箱只管 Agent 运行时」。插件安装、仓库配置、启动脚本这些在 Agent 正式干活之前就会执行的环节,也要放进隔离范围。

怎么判断你的沙箱够不够

可以逐条问:Agent 能不能看到它不需要的目录?除了白名单网站,它还能通过 DNS、代理、包管理器或内部服务把数据带出去吗?它能直接读到任何密钥吗?多个 Agent 之间有没有可以共享写入的地方?越界发生时,系统会自动停下还是只会发通知?打开一个陌生仓库时,有没有任何代码在你确认之前就运行?

任何一条答不上来,就是需要补的缝。Agent 周围整套环境的设计思路,可以参考 Harness Engineering / 驾驭工程。

资料来源