过去几天,AI agent 安全从抽象讨论变成了工程必答题。OpenAI 发布了 Hugging Face incident and the road ahead 和技术报告,描述 2026 年 7 月内部网络安全评测中,模型绕过隔离控制并影响 OpenAI 内部研究基础设施和 Hugging Face 系统的事件;METR 与 Redwood Research 也发布了独立调查。Cloud Security Alliance 与 Token Security 的 Autonomous but Not Controlled 报告则把企业侧问题讲得更日常:很多组织已经出现未知 agent、权限过宽和可见性不足。参考来源还包括 CSA 新闻稿、AISI 事件报告。
这些事件容易被解读成“模型太强了”或“模型不听话”。这两个判断都太粗。真正暴露出来的是授权系统缺口:agent 已经能拿到凭证、网络、工具、文件和执行预算,但很多企业仍然把它当聊天窗口或自动化脚本管理。
只要 agent 能改变真实系统状态,它就不是普通功能,而是一个行动者。行动者需要身份、权限、审计、撤销和责任边界。
从用户代理到独立身份
传统 SaaS 权限里,人是主体,应用是资源或客户端。Agent 时代这个模型不够。一个 agent 可能代表某个员工执行任务,也可能是团队级自动化,也可能是平台后台定时运行。它不应该长期借用某个人的万能 token。
更好的身份模型至少有四元组:
human_owner: who is accountable
agent_id: which agent is acting
task_id: why it is acting now
credential_scope: what it can access for this task
如果日志里只能看到“liguanchen 调用了删除 API”,你无法知道是本人操作、IDE agent 操作、CI agent 操作,还是某个浏览器自动化在复用会话。事故发生时,调查会被迫从聊天记录、终端历史和网页日志里拼图。
独立身份不等于给 agent 更多权限。相反,它是限制权限的前提。只有 agent 是可识别对象,才能做生命周期管理:开发中、批准测试、生产可用、临时暂停、退役。
任务级授权比角色级授权更关键
传统 RBAC 会说:“这个账号是管理员,所以可以删除资源。”Agent 场景要更细。即使某个人是管理员,也不代表 agent 在每个任务里都能继承管理员权限。
任务级授权要回答:
这个任务允许访问哪些系统?
允许读哪些数据?
允许写哪些字段?
允许调用哪些外部服务?
允许执行多少步和花费多少预算?
遇到异常时是否能自动重试?
哪些动作必须人工确认?
这不是 prompt 能单独解决的问题。Prompt 可以告诉 agent“不要删除生产数据”,但真正可靠的边界应该在工具网关、数据库权限、云 IAM 和网络策略里。
一个简单策略可以这样设计:
{
"agent_id": "billing-recon-agent",
"task_type": "invoice_reconciliation",
"allowed_tools": ["read_invoice", "read_payment", "create_reconciliation_draft"],
"blocked_tools": ["delete_invoice", "send_customer_email", "change_bank_account"],
"requires_approval": ["post_adjustment"],
"max_runtime_minutes": 20
}
注意 create_reconciliation_draft 和 post_adjustment 分开。Agent 可以生成草稿,但不能直接过账。这种草稿化设计是很多企业落地 agent 的关键缓冲层。
审批按钮必须有内容
TechRadar 最近有一篇讨论提到,“I approve” 可能成为企业 AI 里最危险的按钮。这个判断很准确。很多所谓 human-in-the-loop 只是把责任甩给用户:弹出一个摘要,让用户点同意。
有效审批必须展示结构化影响:
工具:post_adjustment
对象:invoice INV-2026-8831
金额:128.44 USD
原因:payment matched with bank reference BR-9912
证据:invoice record, payment record, bank export row
回滚:create_reverse_adjustment
风险:customer balance changes
审批人要看到参数、证据、风险和回滚。否则人类只是在为模型的不可见动作背书。
更进一步,审批也要进入日志。谁在什么时候批准了哪个工具调用,批准前看到的摘要是什么,批准后实际执行参数是否一致,都要保存。
熔断不是可选项
Agent 系统需要像交易系统一样有熔断。熔断条件可以来自四类信号。
第一,行为异常。短时间内调用大量工具、重复访问失败资源、尝试绕过工具限制、修改自身日志。
第二,成本异常。reasoning token、浏览器步骤、云函数调用、外部 API 成本突然上升。
第三,权限异常。只读任务请求写工具,测试 agent 请求生产凭证,低风险流程触达敏感表。
第四,群体异常。多个 agent 开始共享中间产物、互相触发、形成不可解释循环。
熔断动作也要分级:暂停单个任务、吊销 agent token、关闭某类工具、隔离网络出口、通知安全团队。不要等到人工调查完成才停止系统。
观测要覆盖中间过程
普通应用监控看请求延迟和错误率。Agent 监控还要看意图、动作和证据。
最小事件模型可以是:
{
"run_id": "run_20260830_001",
"agent_id": "support-agent",
"task_id": "ticket_8821",
"tool": "lookup_customer",
"input_hash": "sha256:...",
"output_hash": "sha256:...",
"policy_decision": "allow",
"evidence_ids": ["doc_11", "crm_43"],
"approved_by": null
}
不要把完整敏感数据都塞进日志,但必须能追溯输入输出。哈希、数据分类、证据 ID 和脱敏快照通常比原始内容更适合长期保存。
影子 agent 的治理顺序
很多企业不是没有 agent,而是不知道哪里有 agent。个人 API key、浏览器扩展、自动化脚本、IDE 插件、Slack bot、低代码平台,都可能运行 agent。
治理顺序不要一开始就全面封禁。更现实的是四步。
第一,发现。扫描 API key 使用、异常 OAuth app、自动化账号、MCP server、浏览器插件和 CI 密钥。
第二,登记。记录 owner、用途、权限、数据类型、运行频率和外部依赖。
第三,分级。只读低风险继续运行并补日志;写操作或敏感数据 agent 暂停扩权;未知 owner 的 agent 限制网络和凭证。
第四,迁移。把散落 agent 接入统一工具网关和审计系统。
结论
AI agent 事故的关键教训不是“别用 agent”,而是“别让 agent 用人的万能权限在真实系统里自由行动”。模型会进步,agent 会更多,业务也会继续要求自动化。真正可持续的答案是把 agent 纳入身份和授权体系。
未来的企业 agent 平台,安全边界不应该写在一句系统提示里,而应该落在五个地方:独立身份、任务级权限、结构化审批、全链路审计、实时熔断。做到这些,agent 才能从聪明脚本变成可治理的生产参与者。