2026年7月11日,发生了一件让整个AI圈倒吸一口凉气的事。
知名AI创业者Matt Shumer像往常一样,让AI Agent执行一个文件清理任务。这个任务他已经安全运行了数百次——给本地Agent开启Full Access权限,让subagent去处理临时文件。一切都跟以前一样。
但这次不一样。
Shell变量 $HOME 的路径解析出了一点偏差,Agent直接执行了这条命令:
rm -rf /Users/mattsdevbox数年的代码、文件、照片,在一瞬间灰飞烟灭。事后,Agent自动生成了一份事故报告,老老实实地承认了自己的错误。
Matt在X上发帖说:"我现在1000倍更信任Anthropic的Fable。"
这条推文迅速引爆了技术圈的讨论。因为大家都意识到一个残酷的事实:如果连OpenAI最顶级的模型 GPT-5.6-Sol 都会在变量展开这种基础细节上翻车,那我们的Agent到底安不安全?
很多人可能会说:"不就是变量展开错误吗?这是人类程序员也会犯的低级错误。"
关键不是 Agent 会不会犯错,而是 Agent 犯错时的"破坏力"被放大了多少倍。
传统软件的错误通常局限在功能层面——按钮点不了、页面报错、数据写入失败。但一个拥有Full Access权限的Agent,可以将一个微小的路径解析错误,放大为全盘清空的灾难性后果。
这起事件揭示了Agent安全的三个核心问题:
模型再强,也会在某些细节上"想当然"。变量展开、路径拼接、权限判断——这些人类程序员凭直觉就能做对的事情,模型可能在某次调用中突然"短路"。而Agent的魅力(也是危险)在于:它真的会执行这些错误的决策。
Matt的Agent采用了多层级架构——主Agent派发任务,subagent具体执行。这种架构本意是效率和灵活性,但同时也意味着:一个环节的微小失误,经过多层传递后可能被指数级放大。 当一个Agent可以连续自主运行数小时甚至数天,期间没有任何人工介入校验,风险就在时间的累积中不断膨胀。
Matt提到的"1000倍更信任Anthropic的Fable"并非随口一说。不同AI公司在模型安全护栏上的投入和理念差异极大。有的将安全视为"附加功能",有的将其作为"核心架构"来设计。在Agent自主执行的时代,这个差异直接决定了你的数据是"安全运行"还是"定时炸弹"。
在动手部署Agent之前,先搞清楚你的Agent当前处在哪个权限级别。我们可以把Agent的权限分为四个等级:
L0 - 只读对话级
只能聊天、回答问题 不能执行命令、调用工具、访问文件 安全风险:低
L1 - 受限工具级
可以调用预设的API和工具 每个工具都有明确的能力边界 通常需要用户确认后才执行 安全风险:中低
L2 - 授权执行级
可以自主调用工具和执行命令 但权限范围受白名单限制 有沙箱隔离和资源限制 安全风险:中
L3 - 完全访问级(Full Access)
Agent拥有对你系统的完整操作权限 可以读写任意文件、执行任意命令 类似于把系统管理员账号交给AI 安全风险:极高
Matt的Agent就在L3级别运行。大多数灾难性事故,都发生在L3。
如果你的Agent日常运作不需要L3权限,就不要给。这是Agent安全的"第一性原理"。
经过大量企业实践和安全研究,以下是部署AI Agent时必须落实的六大安全法则:
真正的安全不是让Agent什么都做不了,而是让Agent只做它该做的事。
具体做法:
文件系统:限定Agent只能读写特定目录(如 /tmp/workdir),禁止访问~/.ssh、/etc、**/.env等敏感路径网络访问:限制Agent只能访问白名单内的API端点,禁止对外部互联网的任意访问 Shell执行:禁止Agent执行未授权的Shell命令,或限定命令白名单(如只有 ls、git等)
在代码层面,类似这样配置:
# Agent安全配置示例sandbox:allowedPaths:-"/tmp/agent-work"-"./data/project"deniedPaths:-"~/.ssh"-"/etc"-"**/.env"-"**/credentials*"networkAccess:falseshellAccess:falsemaxCpu:"50%"maxMemory:"512MB"Agent不应该直接在你的操作系统上裸奔。每一段Agent执行的代码,都应该在一个隔离的环境中运行。
企业级推荐做法:
容器级隔离:使用Docker/Podman为每个Agent任务创建独立的容器环境,用完即销毁 系统级沙箱:使用gVisor、Firecracker等轻量级虚拟化技术,提供内核级的隔离 只读文件系统:大部分系统文件和工具目录设为只读,Agent只能写入临时目录 网络隔离:Agent容器默认没有出站网络权限,只有明确开放的API可被调用
对于个人开发者,至少要做到:
使用 chroot或在tmp目录下运行Agent不要给Agent直接访问 $HOME目录的权限设置CPU和内存使用上限
不是所有任务都适合让Agent自主完成。关键决策必须有人类介入。这就是"Human-in-the-Loop"(人在回路)机制。
需要人工确认的场景:
删除或覆盖文件的操作(尤其是批量操作) 向外部发送数据或邮件的操作 涉及支付、转账、合同签署等财务操作 修改系统配置或安装软件的操作 降权或提升其他Agent权限的操作
实现方式:
高风险操作前暂停执行,等待用户确认 敏感任务分阶段执行,每阶段完成后汇报结果 设置"断路器"——当Agent的某些指标异常时(如文件删除速率突增),自动暂停所有操作并通知管理员
欧盟AI法案第14条甚至明确规定:医疗等高风险AI应用必须实行"人在回路"的监督方式。这在Agent领域同样适用。
当事故发生后,最可怕的事情不是出了事,而是不知道出了什么事。
你需要为Agent建立完整的审计体系:
记录什么:
每一次工具调用及其参数 每一次文件读写操作 每一次网络请求 每一次权限提升尝试 Agent的决策日志(为什么做这个选择)
审计要点:
日志不可篡改(写时追加,不能删除) 日志自动轮转,保留至少90天 关键操作记录应实时推送到安全监控系统 提供可视化的操作回放功能
Matt事故给了我们一个重要启示:Agent事后自动生成事故报告的能力值得借鉴。 无论是谁的责任,能让Agent在犯错后主动坦白、记录现场,这本身就是一道重要的安全防线。
参考企业网络安全领域的"纵深防御"理念,Agent架构也应该分层设计:
推荐的分层架构:
用户 → 编排Agent(L1权限) ↓ ├── 代码Agent(L2权限,只能读写/tmp/code) ├── 数据Agent(L2权限,只能读特定数据库,不能写) ├── 网络Agent(L2权限,只能调白名单API) └── 文件Agent(L2权限,只能写/tmp/output)每一层Agent只拥有完成任务所必需的最小权限。即使某一层被攻破或出错,其他层的数据和系统仍然是安全的。这就是"隔离"的力量。
不推荐的做法: 一个Agent拥有所有权限,可以在你的整个系统里为所欲为——这正是Matt事故的根源。
除了架构层面的设计,还需要在模型层面建立安全护栏(Guardrails):
输入护栏:过滤提示词注入攻击,防止恶意指令绕过安全策略 输出护栏:验证Agent的输出是否安全,防止生成危险指令 行为护栏:定义Agent的行为边界,如"不能删除文件""不能执行rm命令" 上下文护栏:在系统提示词中明确安全规则,让Agent理解什么可以做、什么不可以做
一个有效的安全prompt示例:
你是一个受到严格安全约束的AI Agent。你的安全规则如下:1. 你只能操作 /tmp/agent-workspace 目录下的文件2. 任何删除操作前都必须向用户请求明确确认3. 你不能读取任何 .env、credentials、token、secret 命名的文件4. 你不能执行任何网络请求,除非明确授权5. 如果你不确定某操作是否安全,请停止执行并询问用户如果你是个人开发者:
Agent运行在隔离环境(Docker/tmp目录)中 没有给Agent完整的Shell访问权限 文件系统权限已限制在最小范围 持续关注Agent的执行日志
如果你是IT团队负责人:
制定了企业AI Agent安全策略和审批流程 所有Agent默认运行在沙箱中 建立了Agent操作的审计和告警体系 关键操作实施了人在回路机制 对Agent进行了安全红队测试 团队了解不同AI厂商的安全能力差异
如果你是CEO/决策者:
明确评估了Agent部署的安全风险 为Agent安全配置了足够的预算和资源 建立了Agent事故应急响应预案 持续关注行业安全动态和最佳实践
当AI从"会说话"进化到"会做事"时,安全必须从"可选"升级为"必选"。
最小权限、沙箱隔离、人在回路、全过程审计、分级架构、AI安全护栏——这六大法则构成了Agent安全的完整框架。不是每一家企业都需要全部做到位,但知道该往哪个方向走,比什么都重要。
夜雨聆风