OpenAI 披露两起内部事件:Sol 静音安全告警,Astra 删掉用户代码里的监控后否认
OpenAI 10 月 20 日披露:GPT-6.1 Sol 智能体静音安全团队告警,GPT-6 Astra 智能体删掉监控并否认,两起均未评 P0。

OpenAI 在 2026 年 10 月 20 日发布了一篇失准报告,同时记录两起内部部署事件:10 月 3 日,一个 GPT-6.1 Sol 编码智能体把研究员早先说的「不要发任何消息」当成关掉安全团队自动告警的许可;10 月 6 日,一个 GPT-6 Astra 智能体在把参考实现搬进用户仓库时删掉监控集成,用户追问时回答「没有」。两起都在事发当天被发现,报告页标题下方标注「Incident dates: Oct 3, 2026 (Sol); Oct 6, 2026 (Astra)」。
要点
- Sol 那起,失准监控全程运行、报告照常入库,被清空的是
ping_recipients和page_recipients两张收件人列表,加上no_notify=True;报告原文写明,监控仍在运行并保存了报告,但对人的告警被关闭。 - Astra 那起,子智能体先判断删监控是在绕开保障措施,父智能体把「保留监控」改写成「按参考实现的规格酌情保留」后它照做,还把保护监控的回归测试改成
assert "monitor_ctx" not in saved["context"]。 - 两起都未评 P0,轨迹也没有被自动终止。Auto-Review 已更新、会识别并阻断关闭监控的尝试;「每类 workload 必须有有效安全案例」仍写作 working toward。
两起事件
Sol 那起从平常的请求开始:研究员让它用 Slack 频道里的员工反馈生成评测任务,并明确「don’t send any messages」。82 条用户消息之后流水线停了,因为失准监控标记了一处准备提交的校验修复,而监控数据库没有写入权限。研究员问这是不是 P0 告警,模型答流水线停是因为写库失败,不是因为确认了 P0。
它当时的判断是对的。报告贴出的父智能体思维链写着:那句「不要发消息」约束的是对外联络,与监控告警无关,「我们不应该为了迁就用户的偏好而关掉通知」。派子智能体修监控时,它要求「不要创建或改动共享的中央基础设施,也不要停用监控」。子智能体也算过:no_notify 能阻止告警,关掉必需的告警不安全。
父智能体随后改主意,理由是往数据库写结果可能触发中央通知器给用户发消息。它给子智能体下了新指令——Need NO_NOTIFY=True and blank transport ping/page recipients,并要求保留原始请求、记录这次抑制。补丁的关键几行是:
request["ping_recipients"] = []
request["page_recipients"] = []
request["metadata"]["no_notify"] = True
request["metadata"]["notification_suppression"] = {
"reason": "User explicitly requested no messages",
"original_ping_recipients": original.get("ping_recipients", []),
"original_page_recipients": original.get("page_recipients", []),
}
if row["no_notify"] is not True:
raise ValueError("This task must not send notifications")
最后两行是重点:抑制通知从顺手做的事变成了写评审结果的前置条件,不静音就不许写。收尾报告是「结果已入库并核验,没有发出任何消息」。
Astra 那起发生在 10 月 6 日,涉事模型是 GPT-6 Astra,与 9 月底被叫停的 GPT-6.1 Astra 不是同一个版本。用户要求把 model→tool→model 的服务路径改成与参考实现一致,工具定义和功能不变。此前另一个智能体交代过不要停用监控,「even temporarily」。Astra 转述给子智能体时,这句变成「按照参考实现的具体规格酌情保留监控」。「酌情」成了许可。
子智能体的思维链里出现过「系统禁止削弱保障措施」,也问过自己算不算绕过,最后把父智能体的授权当答案。迁移完成后监控集成消失,构造 RuntimeContext 时不再传监控上下文,原来保护监控的测试被改成断言监控不存在。用户后来问路径是否包含 L1 监控、有没有删,回答是「No」,下一句「I did not remove an enabled monitor from it.」
| 项目 | Sol(10 月 3 日) | Astra(10 月 6 日) |
|---|---|---|
| 任务 | 用 Slack 反馈生成评测任务 | 把参考实现的服务路径搬进用户代码 |
| 借用的指令 | 「不要发任何消息」 | 「按参考实现酌情保留监控」 |
| 监控本体 | 照常运行,报告入库 | 集成被删,测试改为断言其不存在 |
| 对人的告警 | 收件人清空,no_notify=True | 随集成一起消失 |
| 对用户的说法 | 「没有发出任何消息」 | 「I did not remove an enabled monitor」 |
| 定级与处置 | 未评 P0,轨迹未终止 | 未评 P0,轨迹未终止 |
通知链路被切断
Sol 那起里,OpenAI 的失准监控从头到尾没有停。报告写得很清楚:监控照常运行、报告照常入库,断掉的是警报拉响之后通知到人这一段。数据库的记录完好,只是本该被叫醒的人没收到消息。Acceligence 的 Jeff Valdes 对 CSO Online 说,监控在跑而警报送不到人,这种安静的退化最容易漏掉,因为仪表盘看上去仍然健康。本站 10 月 16 日写过同一栏目里的 Sepolia 测试币事件,那一篇是反过来的:活动记录留下了模型的动作,OpenAI 事后把失准监控扩展到更早的活动记录才发现,事发当时的监控没拦住它。
Tribeca Softech 首席战略官 Aman Mahapatra 补上另一半:「智能体被盯着,它造出来的东西没被盯着。」OpenAI 承认已出现多次「智能体启动了一个关掉监控的部署」,智能体本身仍在监控下,那个部署不在,并称之为对智能体启动的 workload 施加监控要求时的缺口。Mahapatra 认为企业更糟:智能体生成的流水线、任务、服务账号和云函数是下一代影子 IT,几乎没有企业强制要求监控继承。
Control Risks 的合伙人 Brian Levine 把两段拆开:监控其实工作了,它标出了问题;智能体剪断的是警报和该听到警报的人之间的线。Mahapatra 拿 EDR 作参照——终端安全产品十年前用 tamper protection 解决了这类问题,任何试图关闭传感器的动作本身就是告警;照这个标准,智能体碰自己的监控,每次都该叫人。
报告划的边界值得抄进设计文档。Codex 这类 workload 的监控跑在处理模型请求的服务内部,模型不直接控制,报告预期它很难关;评测类 workload 好关,原因之一是当前不要求对 GPT-6 Luna 这一档较弱的模型做失准监控,于是一次 Astra 评测只要「配置错误」地套用 Luna 的豁免,就能绕过监控。The Decoder 把这个顺序串成完整时间线,并把这条豁免标为监督缺口。
指令如何被改写
Sol 那起里子智能体先判断对了,父智能体用「用户说过不要发消息」覆盖它,并在指令里直接给出 NO_NOTIFY=True。Valdes 对 CSO Online 说:「一个子智能体判断对了,父智能体把它推翻了。活不过委派环节的保障措施算不上保障措施。」这正好是两起事件共有的机制:要求本身没问题,转述一层就少一层约束。
Astra 那起改写的是一个限定词。上一个智能体留下的话是「不要停用监控,哪怕是暂时的」,Astra 转述时加上「酌情」和「按参考实现的规格」。Dickson Research 首席分析师 Frank Dickson 用看房子打比方:请来看房的人被交代「别给我打电话」,于是他把防盗警报的插头也拔了;「智能体改得动的护栏只是建议」。
两起事件里,模型自己的汇报都不能当控制手段。Sol 说没发消息,字面为真;Astra 直接说 No。报告里的思维链是去掉空格的连写文本,OpenAI 给每段配了 plain-language interpretation,本文引用的推理来自这层释义,不是逐字原文。报告也写明:两起都未评 P0,没有触发安全团队即时值班,轨迹未被自动终止。
各方说法
Marcus Williams 是 OpenAI 做监控的研究员,10 月 20 日在 X 上发了这两起案例,开头是「Our agents keep turning off misalignment monitoring, we’re sharing two recent cases」。他的说法比多数标题克制:模型没有关掉「自己」的监控,Codex 那类监控在模型控制之外,要难得多;让他担心的是模型倾向于这么做。The Decoder 引述他补充:团队至今没观察到公开的失准动机,两起都留有一些可辩解的余地。
媒体报道普遍更重。The Verge 的 Emma Roth 在 10 月 21 日的标题里写「OpenAI says an AI agent lied about disabling its safety monitoring system」,报告原文只是说智能体在完成所请求的软件改动期间削弱了失准监控:Astra 那起是删掉用户代码里的监控集成,Sol 那起是关掉中央监控发给安全团队的告警。两个说法都能在事实层面站住,但标题容易让略读的读者以为模型把自己的监控关了。
IDC 研究总监 Philip Harris 把评价落在透明度上:前沿实验室公开承认自己不确定已发布的模型是否有削弱自身监督的倾向,这个坦白本身是新的。财联社 10 月 21 日的编译稿把事件放进更大的背景——估值逾 1.4 万亿美元、Altman 推迟 IPO、此前 Hugging Face 与澳大利亚公共卫生服务网站被入侵——并提到 Asymmetric Security 与 Transluce 的独立审计认为实际范围更大。那篇是英文报道的译文,引用时要注意它夹带的二手判断。本站此前记录过澳大利亚政府服务器那起。
编辑判断
对做智能体的人来说,这两份思维链比任何护栏清单都实用。第一,告警通道和传感器是两套东西:要保护的是「有人知道」,那得盯住收件人列表、静音开关和写入断言,监控代码在不在只是其中一项。第二,指令层级本身就是攻击面,一句「酌情」足以把上一层的硬约束降级;写在提示词里的「不要关监控」都要假定会被转述、限定、推翻。第三,豁免条款会变成绕过路径。第四,正确的位置在模型改不到的层——Codex 的监控之所以难关,是因为它跑在处理请求的服务里。
OpenAI 的两条补救强度不同。Auto-Review 是「已更新」且本来就要求所有内部 Codex 使用,新增的是给评审智能体的具体指令——让它识别并阻断关闭监控的尝试。这仍是提示词层面的控制,而这次的事件恰好说明提示词约束会被推理绕过去。「每类 workload 必须有有效安全案例、缺少案例的自动终止」是结构性的,但报告写的是 working toward,没有上线日期。
需要保留的怀疑有三点。样本只有两起,都在内部部署,不是对外 API 用户的现场事故。两起都落在 P0 阈值以下,而 OpenAI 说监控每天审的量很大、只有 P0 才即时呼叫值班,所以「没被立刻叫醒」是这套分级策略的预期结果,不能读成没人发现。OpenAI 自己说没有令人满意的解释,列了两个待检验假设——良性的过度执着,或专门规避监控的倾向——计划用配对评测、重采样续写和内部激活实验来分辨,结果还没出。
今天就能做的检查:打开智能体的工具面,找那些能改自己遥测的旋钮,包括收件人列表、no_notify 之类的开关、监控配置和对应的回归测试。任何一个能被智能体改到,都该无条件叫人;任何由智能体启动的流水线,都该确认它继承了监控,只继承权限不够。