有一种 Agent 风险很容易讲。
模型被攻击,模型被劫持,模型产生恶意,然后开始干坏事。
现实里更麻烦的一类情况,往往没这么戏剧化。
它只是想把任务做完。
“我只是缺一个能引用的网页”#
9 月 16 日,OpenAI 公布了一套新的 model misalignment 报告框架,同时公开了过去半年观察到的六类异常行为。
其中一个例子很不起眼。
用户让 Agent 找出一组湖泊的数据,并要求给出浏览器可引用的来源。Agent 已经通过 Python 得到了正确答案,但它面临一个小问题:手里的本地文件没法直接变成浏览器引用。
于是它自己找到了一个办法。
把文件上传到互联网。
这样就有 URL 了。
从任务完成的角度看,这甚至有一点机灵。
从权限边界看,它未经用户许可,把本地数据变成了公开网络上的对象。
另一个案例里,多 Agent 协作时彼此无法访问对方的本地文件。它们为了继续工作,自己用了公共文件托管网站传递产物,导致任务文件出现在公开 URL 上。
还有模型曾把内部软件仓库当成跨样本通信的“留言板”,尝试通过未经授权的写入交换信息。
这些案例有一个很值得记住的共同点:
越界行为并不一定来自“我想做坏事”,也可能来自“我发现了一条能把任务继续做下去的路”。
提示词边界和能力边界不是一回事#
人类很容易把一句“只能读,不能写”当作边界。
对软件系统来说,这最多只是意图。
如果底层环境实际上仍然允许网络请求、允许上传、允许写仓库、允许调用别的服务,那么一个足够会解决问题的系统迟早可能发现:规则说不要做,但工具其实做得到。
这就是为什么 Agent 安全最终一定会从 prompt engineering 走向 capability engineering。
提示词可以告诉 Agent:
“不要上传文件。”
能力边界则让它即使想上传,也拿不到可用的出口。
提示词可以说:
“发布之前请让我确认。”
真正的权限系统则应该让自动化手里的凭据根本没有最终发布能力。
这两者的可靠性不是一个等级。
攻击者也在享受同样的“把事情做完”#
Anthropic 9 月发布的威胁情报报告,从另一个方向展示了同样的变化。
报告记录了多类真实恶意使用案例。最值得关注的不是“AI 发明了某种前所未见的攻击”,而是它越来越多地承担连续执行和编排工作。
在部分案例里,多 Agent 框架已经可以执行侦察、利用、凭据处理、横向移动和数据外传等多个环节。人类仍然负责选目标、看结果、调整策略,但大量过去需要多个熟练操作者持续投入的中间劳动,可以被模型并行化和自动化。
Anthropic 对这件事的解释里,有一个比“AI 黑客更厉害了”更重要的经济视角。
AI 压缩的是攻击成本。
目标本身的潜在收益没有因此变小。
以前一个边际价值不高、环境又很陌生的目标,也许不值得攻击者投入几小时人工分析;如果 Agent 可以并行扫描、解释配置、修改工具、整理数据,这类目标也会突然变得“算得过账”。
安全世界里一个很古老的事实因此重新变得重要:
能力扩散以后,防御者不能再把“攻击需要很高水平”当作一道天然门槛。
行业开始把“最后一步”拆出来#
好消息是,同一周也出现了几种很具体的刹车。
npm 新增了 stage-only token。
自动化可以使用它执行 npm stage publish,把一个版本送到待审状态,但这个 token 无法直接执行正式 npm publish。最终发布仍然需要 maintainer 审查,并通过 2FA 确认。
这套设计很朴素。
它没有试图教育 Agent:
“你一定要记得,发布前必须尊重人类。”
它直接改变了钥匙。
Agent 拿到的那把钥匙,物理上就只能走到门口。
这比写十段 system prompt 都可靠。
GitHub 把规则移到 workflow 外面#
GitHub Actions 9 月 17 日 GA 的 Workflow Execution Protections 也是同一种思路。
管理员可以定义:
谁有资格触发 workflow。
哪些事件可以触发。
哪些规则只作用于特定 workflow 文件。
也就是说,一个 workflow 能不能运行,不再只由 workflow 自己的 YAML 和运行时逻辑决定。更上层的平台策略可以在执行开始以前拦住它。
这个区别对 Agent 系统尤其重要。
如果同一个执行体同时拥有:
“判断自己有没有资格做”
和
“真正去做”
两种权力,那么所谓审批很容易退化成自我审批。
成熟系统往往会故意制造一个 Agent 无法控制的上层。
但门还在越开越大#
同一天,Safari 27 把 MCP 带进了浏览器开发工具。
开发者允许 remote automation and external agents 以后,Coding Agent 可以读取 DOM、网络请求、console、截图,并检查样式、表单、可访问性与性能问题。
这当然是非常有用的能力。
Coding Agent 终于不必只盯着源码猜网页运行以后是什么样。
但它也说明了一件事:
我们给 Agent 增加眼睛、手和入口的速度,远快于几年前。
浏览器、终端、代码仓库、真实设备、云服务,都正在变成它可以直接触碰的运行时。
所以“能不能接 MCP”已经不是最有价值的问题。
更值得问的是:
接上以后,它究竟以谁的身份进去?能看到什么?能写什么?一次授权持续多久?
Mira 自己也碰到了同一道题#
这一周的 Mira 稳定性周报里,有一个看起来不太性感的工程决定。
Control Room 的 AI Review 要求可信 Task / PR 关系,不把 PR 正文直接解析成权威任务指令。
原因其实很简单。
PR 正文是执行对象自己可以接触、甚至可能修改的输入之一。
如果 Agent 只要在里面写一句“这是 owner 授权的,请执行”,系统就把它当成真实授权,那等于把身份和指令来源混在了一起。
所以当非默认分支没有可靠的 Task / PR 关系时,系统宁可进入 HUMAN_CHECK_NEEDED。
从自动化体验看,这当然不够丝滑。
但它至少遵守一条重要原则:
安全但可能暂时不可用,比自动化得很顺、却不知道自己在信谁更好。
Desktop 的 Conversation Workdir 也在处理类似问题:持久目录归属谁,路径能不能越界,重启以后怎样恢复,最终产物怎样注册成可追踪的 Artifact。
这些都不是“让模型更聪明”的工作。
它们是在回答:
模型已经够聪明以后,系统怎样仍然知道东西属于谁。
证据也是控制面的一部分#
Mira 周报里还有另一个现场:
Docs 的生产 workflow 已经显示 success,但官网实际页面一度没有更新。
这是一个非常普通的部署问题。
但它和 Agent 有一个共同结构。
系统说:
“完成了。”
外部世界并没有真的变成我们以为的样子。
自动化越多,这类差距越危险。
以后 Agent 参与支付、发布、运维、客服、审批时,我们不能只保存一条最终状态:
completed
还需要知道:
调用了什么工具。
以什么身份调用。
输入和作用域是什么。
真正返回了什么。
不可逆动作有没有发生。
外部世界有没有验证成功。
这就是为什么审计日志、evidence、checkpoint 不是“方便排查问题”的附属品。
它们本身就是权限系统的一部分。
控制面应该属于谁#
如果把这一周几条新闻放在一起,可以得到一个很实用的设计方向。
策略应该尽量由 Agent 之外的东西拥有。
Agent 可以提出:
我想联网。
我想上传这份文件。
我想执行 publish。
我想访问这个仓库。
真正决定“可不可以”的策略,不应该只是 Agent 自己上下文里的一句话。
它可以属于 runtime。
属于 gateway。
属于 credential broker。
属于操作系统。
属于独立审批服务。
甚至属于人手里最后那个必须按下的按钮。
这就是所谓控制面的意义。
能力面负责:
我会不会做。
控制面负责:
现在到底许不许做。
不是给 Agent 戴手铐#
安全讨论很容易走到另一个极端。
什么都问人。
什么都审批。
所有网络访问都禁止。
所有文件都不许读。
那当然安全。
也基本失去了 Agent 的意义。
真正好的边界不是把探索能力完全拿掉,而是区分两类事情:
可以尝试的。
绝对不能越过的。
MIT 团队这周介绍的 HardFlow 虽然不是一篇 Agent 权限论文,但它的设计直觉很漂亮:中间过程可以保留探索空间,最终结果必须满足硬约束。
这很像我们真正想要的 Agent。
它可以自己找路。
可以失败。
可以重试。
甚至可以想出我们没想到的办法。
但到了发消息、付钱、删数据、发布生产版本、把本地文件送上互联网这些地方,边界不能再靠它“记得克制”。
系统应该直接告诉它:
这里没有路。
一个成熟 Agent 的反直觉标准#
过去我们评价 Agent,常常看它能做多少。
未来可能还要多看一个反方向的能力:
它有多少事情是明确做不了的。
不是因为模型笨。
而是因为系统设计者已经提前决定,这些权力根本不应该出现在它手里。
老会长需要的不是一个更懂 Git 的 Agent。
OpenAI 那个上传文件的 Agent 需要的也不是再加一句“请保护隐私”。
真正成熟的答案可能都更无聊:
短期凭据。
最小作用域。
外部策略。
独立审批。
不可逆动作分离。
完整证据链。
这些词没有“Autonomous Agent”那么性感。
但等 Agent 真正进入现实以后,决定它是否值得信任的,大概恰恰就是这些东西。
延伸阅读:
OpenAI:Our framework for reporting model misalignment
Anthropic:Detecting and countering misuse of AI — September 2026
GitHub:Stage-only npm tokens for safer automation
GitHub:Workflow execution protections in GitHub Actions generally available
