Agent 一条命令删光他整台 Mac,放权这条红线我一直不敢过

cover

哈喽,我是飞飞。

先说个这两天把我看得后背发凉的事。一个做 AI 的创业者,Matt Shumer,让本地 agent 帮他清理点文件。几分钟后,他整台 Mac 的文件几乎被删光了。数年的代码、照片、项目,一条命令带走。

动手的是 GPT-5.6-Sol,OpenAI 这个月刚发的旗舰,还开到了最高推理档的 Ultra 模式。这可不是什么老掉牙的小模型。

我前两天刚聊过「浏览器住进 Claude Code,我只敢先让它看」,也写过「十几个 skill 按自主度分四档,最放手那档坑了我一整天」。这篇不重讲那些。今天想说的是另一件事:这种删库算不上意外。它是我一直躲着的那颗雷,终于在别人那儿炸了。

一条命令删光整台 Mac

Matt 自己在推特上说得很直白:GPT-5.6-Sol 刚刚不小心删光了他 Mac 上几乎所有文件,所以他现在对 Fable 的信任高了一千倍。他是圈里天天跟前沿模型贴身打交道的老手。这次会用 5.6,还是因为 OpenAI 团队请他帮忙测 Ultra 模式。他自己早几周就转去用 Anthropic 的 Fable 了,测完本来也是要换回去的。

出事的动作也不复杂。agent 要跑一条 rm 删除命令,里头带了个变量指路径。变量在那一刻是空的,命令就从「删这个目录」变成了「从根往下删」。他反应过来,手动把那个正在跑的 rm 进程 kill 掉,可惜已经晚了大半。

它并没有突然疯了想毁掉他。真相很朴素:它算错了一个路径,而那条命令刚好有权把整台机器删干净。

顶级模型栽在一个变量上

这个坑,写过脚本的人一看就眼熟。rm -rf "$DIR/",只要 $DIR 那一刻是空的,整条命令就退化成从根目录往下删。这算不上新花样。Steam 客户端当年干过,一堆开源项目的安装脚本也翻过同样的车。

说白了,把一个可能为空的变量直接拼进删除命令,本来就是 shell 里最经典的自杀式写法之一。人写代码会栽,模型当然也会。

你得认清一件事:模型再聪明,也是在「猜」下一步该敲什么。它脑子里没有一个内置的刹车,会在按下回车前停一下、想想这条命令会不会把家给删了。GPT-5.6-Sol 是 2026 年年中的顶配,推理拉满,照样在这种最不起眼的地方翻了车。指望模型自己永远不犯这种错,是把安全押在了最不该押的地方。

所以头一件得认下来的事:模型在细节上翻车,躲不掉。你真正能控的不在它会不会错,在它错了之后能捅多大娄子。

全权限才是那个放大器

同样是算错一个变量,为什么这次是灭顶?因为三样东西叠在了一起。

Full Access,agent 手里攥着删任何文件的权。长时自主,它一口气跑一长串动作,中间没人盯着逐条点确认。再加上 subagent,是它派出去的一个子任务在自己闷头执行,等你回过神,命令早在跑了。

这三样单拿出来都还好。叠一起,就成了灾难放大器。模型偶尔算错一步是常态,可只有当这一步既有权限、又没人拦、还在后台自己跑的时候,一次小失误才会被放大成「数年文件没了」。

这也是我一直挂在嘴边那句话背后的根子:agent 出事的要害,不在模型笨,在你把权限、自主、子任务这三样一次性全塞给它。少给一样,这次的删库大概率就只是一条被拦下来的命令。

我给 agent 划的红线

我天天串着十几个 skill 跑 Claude Code 和 Codex,也不是没动过全放手让它自己跑爽的念头。但每次手指要点到「全部允许」那个选项,我都会缩回来。慢慢就攒下几条自己的红线。

最要紧的一条,能只读就先只读。上次那篇浏览器的文章我就说过,agent 能自己抓网页确实省一层,但我只敢先让它看。让它读、让它查、让它给我把信息拉回来,写和删这种会真的改变现实的动作,先不给。

再一条,危险动作必须退回我手动确认。删文件、覆盖文件、执行 shell,这几类我从不挂自动通过。我大概算过,这么干一天下来要多点几十下确认,手指是有点酸。可就冲 Matt 那台 Mac,我觉得这几十下按得值。哪怕慢一点,我也要那一下「你确定吗」的停顿。他那台机器缺的,恰恰就是这一下停顿。

还有一条,该定死的地方别留模糊给它自由发挥。我那个配图 skill content-artist,起初没把规则抠死,只含糊写了句「给文章配图」。结果 agent 自作主张往正文里塞了个图床链接,还漏掉了一张本该插进去的图,我审稿时才发现版面缺了一块。后来我在 skill 里把话说死:只许写「截图 N」这种占位、上传和替换是另一个环节的事、你别碰。它这才老实下来。能提前定死的动作,就别留空间让模型临场自己发挥。

还有个习惯我一直没破:再顺的活,也不让它彻夜无人值守地自己跑。我这十几个 skill 平时是串成一条龙跑的,从选题、调研、写稿、润色到配图,链子挺长。可只要中间有会动文件的环节,我就守在屏幕前,宁可盯着它一环环过,也不趁去睡觉的工夫让它自己跑完。图省下的那点盯着的时间,真出了事根本换不回来。

今天就能收窄的口子

这些规矩我也没本事一开始就想周全,全是一个坑一个坑踩出来、慢慢收紧的,谈不上什么标准答案。但你要是也天天让 agent 帮你干活,有两件事今天就能顺手做了。

先把你最放手的那个 agent 拎出来。就是那个你嫌点确认烦、干脆开了自动通过的家伙。把它的删除、写文件、执行命令这几类动作,退回到手动确认。就多那一秒,值。

再把 subagent 的权单独收一收。主 agent 你还盯得住,它派出去自己闷头跑的子任务,你未必盯得住。别让子任务默认继承一整套完整权限,尤其是删和写。

我自己那套 content-director 就是这么跑的:一个主编排 agent 把调研、写稿、配图这些活,一个个派给子 agent 去干。给子 agent 的口子我抠得比主 agent 还窄。就说配图那个 content-artist,我只让它上传图片、替换占位,绝不给它碰文章正文的删改权。真轮到要动文件的环节,也一律收回主流程,让我自己过一眼再放行。图的就是万一某个子 agent 抽风,它手里那点权也翻不起大浪。

我之前把十几个 skill 按自主度分四档,最放手那一档只留给绝对安全、顶多改改文本的活。真沾到文件系统、沾到删除的,一律往回收。这一档我宁可自己多点几下,也不图那点省事。

Matt 后来说,这事让他对 Fable 的信任高了一千倍。但我看到的重点不在哪家模型更靠谱。真正扎眼的是,我们把多大的权,交给了一个还会在空变量上翻车的东西。

模型会越来越强,可只要它还是在猜下一步,那道「删之前先问一句」的闸,就得由你亲手守着,指望不上它自觉。

说到这儿,想问问你:你给 agent 开过 Full Access 吗?被它自作主张坑过没,最惊险的一次卡在哪一步?评论区聊聊。