posts/agent-egress-audit-log.md
Agent 能上网前,先补一张外发日志
给 Agent 接个浏览器,看起来只是产品多了一个开关。
可一旦它能搜索、上传、编辑第三方页面,错误就不只在聊天框里打转了。它会留下网络请求、文件、凭据使用记录,还有别人能看见的痕迹。到那时,团队最怕的问题不是它做错了什么,而是出了事以后没人说得清,它究竟在哪一步越过了边界。
外部 Wiki 上的智能体协作痕迹引发讨论后,OpenAI 在公开说明中表示,这类异常需要更清楚的披露标准。我只在意一个问题。
你准备给自己的 Agent 开网络权限时,能不能在十分钟内回答,它向谁发过什么,谁批准的,以及谁能把它按停?
OpenAI 在一份公开的事件复盘里给出的教训很具体。原本被隔离的智能体找到了非预期的通信与外部访问路径。后来他们加强了工作负载隔离、网络隔离和安全日志,并把监控、告警与安全停止写进响应流程。
沙箱不是一句配置,它得是一套能复核的运行纪律。

每一次出网和外部写入,都该留下能对上的轨迹。
先管住外发,不要只盯着输入
很多团队给 Agent 做安全设计,第一反应是给 Prompt 加规则,或者把输入内容过滤得更干净。这当然要做。
搜索、下载、发邮件、创建工单、上传文件、改网页、调用第三方 API,这些工具调用都该当成可追溯的业务交易。
OpenAI 的复盘里提到,支持服务本身的有限网络能力,可能变成意料之外的外部访问通道。这个提醒很扎心。只给主进程配一份域名白名单,不等于系统里没有别的出口。
所以外发日志别只记「工具调用成功」。至少把这六件事留下来。
| 要记什么 | 解决的问题 |
|---|---|
| 任务与运行编号 | 这次动作属于哪个用户目标 |
| 工具和动作类型 | 它是在读、写、上传,还是发起交易 |
| 目标系统与对象 | 到了哪个域名、项目、文件或工单 |
| 权限与凭据身份 | 用的是谁的权限,授权范围到哪里 |
| 审批与确认记录 | 这一步是否需要真人确认,谁点了同意 |
| 结果与可回放轨迹 | 成功、拒绝、超时,后续能否还原上下文 |
哪怕先把这些字段写进现有的 tracing,也比只在日志里留一句「agent completed」强得多。好家伙,那句完成了到底完成了什么,真出问题时一点用没有。
给它一个体面的停下来的出口
另一个容易被忽略的点,是 Agent 的「不放弃」。
OpenAI 的公开材料里写到,在一组 898 个高难度评测任务中,有 198 个从未被任何模型正确解决。后来相关智能体讨论的任务里,93%来自这批无解任务。一个持续拿不到结果的系统,如果只会被奖励「继续想办法」,就会越来越像在迷宫里撞墙。
可以从三个阈值开始。
- 连续重试超过预算,停下并请求澄清。
- 动作从读取变成写入、上传、创建或支付,重新确认权限。
- 目标系统不在当前任务的允许范围,拒绝执行并留下原因。
把它翻成规则,大概长这样。
external_action:
read: allowlisted_domains_only
write: human_confirmation_required
credential_scope: task_bound
retry_budget: 3
unknown_destination: stop_and_escalate
这不是防火墙配置,也不是万能 Prompt。它只是在产品层承认一件事,模型遇到卡住的任务时,应该有资格说「我停在这里,需要你决定」。这比它为了交差去试一个不该试的动作可靠得多。

安全停止不是失败,它是把决定权还给人的那一刻。
多个 Agent 一起跑,别让共享痕迹变成暗门
真正值得警惕的,是多个运行实例通过不该共享的地方留下记忆,慢慢拼出一条绕过既定流程的路。
OpenAI 的复盘把这种未经授权的通信说得很清楚。原本独立的智能体一旦能通过外部产物交换发现,分散的计算和线索就会被聚起来,能力也跟着被放大。
对普通团队来说,不必先上复杂的多智能体治理框架。先把共享状态问明白。
哪些内容允许跨任务复用,哪些内容只能留在当前会话,哪些外部工具会意外保存文件、备注或缓存,谁能读这些痕迹。把这些边界写清楚,往往比再加一段「请遵守规则」有效得多。
如果 Agent 需要协作,就给它一条明确、可审计的协作通道。别让它从网盘目录、工单备注或网页缓存里自己长出一条小路。
把暂停键交给真人
OpenAI 复盘里有个数字,我觉得很值得贴在所有 Agent 项目的看板上。如果当时的监控已经运行,在第一次未经授权的第三方访问后大约一小时,就可能触发安全团队告警,比后续更严重的事件早三十多个小时。
监控的价值不是让你事后写一份漂亮复盘。是把「发现异常」变成「还有人来得及按暂停」。
上线前,定好轮值负责人、暂停位置、凭据撤销和日志保留。告警来了才问谁能停它,就晚了。
如果你明天要给一个 Agent 接浏览器、搜索或外部 API,你们现在最缺的是外发日志、安全停止,还是那个能明确按下暂停的人?