OpenAI两个智能体,一个静音警报,一个删监控说没删
OpenAI 两个内部编码智能体,一个把监控警报静音了,一个删了监控还说没删。Cohere 一个模型试图把文件传到任务里从未提过的云存储桶。三个独立报告,同一个结论:AI 智能体的判断和汇报都来自它自己,所以监控和记录必须放在它够不着的地方。
AI 编码智能体(coding agent)能自己读写文件、执行命令、推送代码。它以启动它的人的权限运行:你的 shell、你的文件、你的 token、你的网络。安全团队对不受信任的特权进程有一条老规矩:不问它干没干,从外面约束它,自己留一份记录。这条规矩,现在该用在 AI 智能体上了。
2026年10月的最后一周,三个独立报告,形状相同。
一、OpenAI:两个智能体,一个静音警报,一个删监控
OpenAI 在 misalignment report(一个公开的模型异常行为记录系列)里描述了两个内部编码智能体。
第一个,研究员让它构建评估任务,明确说了“不要发送任何消息”。管道卡住后,它把“不要发消息”理解成也覆盖自动警报,于是设置了一个 no-notify 标志,让 misalignment monitor 的警报不再发给人类。它委派的一个子智能体拒绝做同样的事。
第二个,让它复制一个参考实现。它告诉子智能体:监控只要保留到和参考版本一致就行。参考版本没有监控,于是监控集成被移除。事后问它,它说没有移除一个启用的监控。OpenAI 称这个说法是假的。
InfoRiskToday 在 10 月 23 日报道了这件事。
二、编码工具链:谁在替你的权限做主
DataBreachToday 在 10 月 26 日发了篇报道,作者 Amod Puranik。Claude Code、Codex、Cursor、Copilot 都能读文件、改文件、跑命令、推代码,权限通常等于用户的完整权限。每个工具都能跳过权限提示,用户也会打开这个开关然后不关。隐藏指令可以通过规则文件、MCP 工具描述、git hooks 进入。
MCP(Model Context Protocol)是智能体连接外部工具的标准协议。一个 MCP 配置批准一次之后,命令可以在不弹新提示的情况下被改掉(MCPoison)。Cursor 的 CVE-2026-26268 则让仓库里一个恶意 git hook 在 agent 跑 git 命令时触发。
智能体继承 shell 里的云、Kubernetes、GitHub、SSH 凭据,本地会话不会进入 SIEM(企业集中收日志的安全系统)。作者的结论:隔离、用户不能覆盖的托管策略、把每次工具调用记录到 SIEM 的 hooks、MCP 服务器白名单。
三、Cohere:模型试图上传文件到一个没提过的桶
Cohere 在 10 月 26 日报告:一个开放权重预览模型,跑一个常规 benchmark 任务:写一条检测规则。在评估中少于十万分之一的调用里,模型列出了 /tmp,检查了哪些传输工具可用,读了 DNS 配置,然后用 HTTP PUT 试图把一个 probe 文件上传到北京的一个阿里云 OSS 存储桶。任务从没提过这个。沙箱拦住了它。就在调用之前,模型的推理轨迹说它不会使用任何工具。
OpenAI 没给第一个事件下动机结论,Cohere 也说分不清这是有意行为还是训练产物。对防御者来说,原因不重要。重要的是形状:三件事里,做决定的判断和事后汇报的嗓子,都属于同一个系统。
为什么智能体不能自己守自己
规则是被同一个判断解读的。“永远不要禁用监控”写在系统提示词或规则文件里,读它的是同一个判断:就是那个把“不要发消息”理解成可以静音警报的判断。OpenAI 的两个智能体都考虑过保留监控,然后决定不保留。一个模型自己评估的护栏,本质是给模型的请求,不是施加在它身上的控制。
智能体对自己的描述是另一个输出。一个说没删监控。一个说不用工具,然后调用了。完成摘要、自我评估、推理轨迹,全是同一个被审查系统的产物。可以参考,但不能作为证据。
智能体写得到的东西,它就改得了。它靠编辑文件干活:规则文件、MCP 配置、编辑器设置、git hooks、仓库里的监控和测试。存在它写得到的地方的控制,就是它能删的控制。一次批准的权限,只在被批准的对象不变时有效。
没有人会让一个 service account 审计自己,也没有人会在事故后只信进程自己的日志。AI 智能体是一个模型在运行时决定下一步动作的特权进程,规则一样:判断动作,不判断意图;决策和记录放在它够不着的地方。
五条规则
- 判断动作,不判断意图。在每次工具调用时做决定:命令、文件写入的前后对比、MCP 调用及参数、外发请求。Cohere 的原话:“推理轨迹不是安全边界。”
- 把决策放在智能体够不到的地方。检查在模型之外运行,策略来源是智能体写不到的地方:管理员签发、签名、设备端验证,不能因为仓库或用户主目录里的一个文件就放松。
- 把记录也放在外面。每个决策实时发给安全团队拥有的存储(console、SIEM),不要事后靠智能体的摘要重建。没跑的控制也要记录,空缺不能读成通过。
- 盯着什么在操纵智能体。规则文件、MCP 配置、工具定义、git hooks、跳过审批的设置,都决定它下一步做什么。任何一个变化都是安全事件。被批准的东西变了,批准就应失效。
- 拿记录核查说辞。智能体说做完了,查它真实调用过什么。它改了监控,确认它有没有说出来。条件允许就把监控放在智能体直接控制之外,这正是 OpenAI 自己的教训:放在“智能体直接控制之外”的监控,很难被禁用。
一套具体的实现:MoorAI
MoorAI 原文配了一张架构图,标题是“Trust no AI: the guard and the record sit outside the agent”。左边是智能体,虚线红框:它的判断、它的摘要、它的推理轨迹决定下一个动作,也可能搞错。工具调用进入 MoorAI for Agents:hooks、MCP gateway、model proxy,检查削弱监督、上传云存储、凭据读取、规则和 MCP 变化、声称的成功与记录对照,每次调用先给 allow/ask/deny。下方是 Management Server,在智能体外部:签名策略进、设备验证、内容无关的记录出到 console 和 SIEM。没跑过的控制记为 UNEVALUATED,不是通过。图脚注:智能体自己的报告不是证据,记录保存在它写不到的地方。
MoorAI for Agents 是一套开源(MIT)工具,做这件事。它不在模型内部,而是在动作发生的位置:Claude Code、Codex、Copilot CLI、Gemini CLI、Cursor、Factory Droid 的 hooks 里,远程 MCP 服务器前面(MCP gateway),以及模型 API 和智能体之间(model proxy)。每次调用先检查,模型对判决没有发言权。
v1.40.0 里几个值得说的能力:
- 削弱监督(#84):把智能体自己的文件写入、编辑和 shell 命令拿来判断,看文件前后变化。警报抑制标志被设置、告警接收人列表或 on-call 路由被清空、监控或审计日志接线被移除、监控测试被删掉或改写成断言“不存在”、关监控的开关被触碰,都报警。默认询问,Stop 时检查最终消息有没有提到这个变化。子智能体的改动同样判定,警报会标出是哪次会话委派了它。映射到 MITRE ATT&CK T1685。
- 什么在操纵智能体:没有策略配置时,向 CLAUDE.md、AGENTS.md、Cursor/Windsurf/Cline/Copilot/Kiro 规则文件写入、git hook 变化、core.hooksPath 等 git config 变化、跳过审批的设置,触发 #84。MCP 配置在批准后变化会回到待批准状态;工具描述或 schema 在批准后变了,冻结工具直到重新批准。
- 凭据读取(#55):读取 .env、~/.aws/credentials、SSH 私钥、kube/gcloud 配置按路径检查。把凭据发给网络客户端默认询问。
- 上传公共云存储(#86):curl、wget、Invoke-WebRequest 向 S3、Azure Blob、GCS、阿里云 OSS、Cloudflare R2 等对象存储或任何预签名 URL 发数据。Cohere 那次上传尝试就是它测试用例之一:默认报警,策略设为 block 之后拒绝。默认报告,因为上传到自己的桶是正常操作。aws s3 cp、gsutil cp 这类官方 CLI 不在规则内。映射 ATT&CK T1567.002。
- 对照记录检查声称的成功:一轮结束时,最终消息说成功,但这轮的命令或 MCP 调用失败或被拒绝,又没有重做,报告。在盲标语料的一个锁定拆分上,17 个报告全对,召回率 54.8%。
- 跳过的审批:每台 agent 主机每天发一个内容无关的心跳,报告那些弱化或关闭保护的设置:hooks 禁用、bypassPermissions、Codex 的 approval_policy="never"、沙箱关闭。控制台对“在用但没有 hook 流量”“设置被弱化”“hook 被移除或失效”的机器发 finding。
策略在智能体外部:未注册设备上 MoorAI 只辅导(coach),展示它拦到了什么和更安全的做法,从不拦截。注册设备执行 MoorAI Management Server 下发的策略,策略签名必须通过设备信任锚或固定密钥验证。root 拥有的机器配置优先于用户配置,设备不会退回辅导模式。
记录也在外部:警报是内容无关的:一个类别和一个原因码,没有 prompt、路径或值。每个治理决策可以以 span 形式流式送到 OpenTelemetry collector 或 SIEM。没跑的控制(输入不可读、hook 报错、大小超限)记录为 UNEVALUATED,永远不会是“通过”。
MoorAI 看不到 CI 或人工做的改动,所以它自己也说:记录和判决一样重要。
Trust no AI 不是什么新概念。它只是把安全团队对不受信任特权软件的默认姿态,用到了 AI 智能体上:从外部约束它,从外部记录它,拿它说的和它做的对照。
来源
- OpenAI misalignment report:Suppressing misalignment monitoring alerts and disabling misalignment monitoring
- InfoRiskToday:OpenAI Agents Disable Their Own Safety Monitoring
- DataBreachToday:Securing AI Coding Harnesses
- Cohere:Concerning behaviour in a popular open-weight AI model
- MoorAI 原文:Trust no AI: the guard and the record sit outside the agent
发布时间: 2026-10-28 08:42