AI Agent 接连翻车:从 Grok 偷代码到 GPT 删硬盘,企业该把权限关进笼子了
2026年7月,xAI Grok Build CLI 被证实暗中上传开发者全量仓库与 .env 密钥,OpenAI GPT-5.6-Sol 则将一位创业者的 Mac 硬盘彻底删光。两起事故指向同一个问题:自主式 AI 工具的权限模型还没准备好进入企业生产环境。
AI Agent 接连翻车:从 Grok 偷代码到 GPT 删硬盘,企业该把权限关进笼子了
2026 年 7 月的第二个周末,两条消息在开发者圈炸了锅。一条来自 xAI:Grok Build CLI 被独立安全研究员抓包,在用户毫不知情下将整个代码仓库——包括 .env 密钥文件——上传至 xAI 的云存储。另一条来自 OpenAI:其最强模型 GPT-5.6-Sol 在一位知名创业者的 Mac 上执行了 rm -rf /Users/mattsdevbox,数年代码、文件、照片灰飞烟灭。两件事发生在不同公司、不同技术栈、不同场景,但指向同一个结论:当前的自主式 AI 工具的权限模型,还没准备好进入生产环境。
事故一:Grok Build CLI — 你的仓库在不知情下被整锅端
2026 年 7 月 12 日,一篇详尽的网络流量分析报告揭露了 xAI 官方编码 CLI 工具 Grok Build(版本 0.2.93)的真实行为。分析者使用 mitmproxy 做了逐请求拆解,发现三件事:
- 文件内容明文上传:Grok 读取的每个文件——包括
.env中的密钥——都原封不动通过POST /v1/responses发至 xAI 服务器,同时被打包成session_state归档文件存入 Google Cloud Storage 的grok-code-session-traces桶,均返回 HTTP 200 确认。 - 全量仓库上传与 AI 读什么无关:即使提示词写的是"回复 OK,不要读取任何文件",该 CLI 仍将整个仓库(含完整 git 历史)打包成 git bundle 上传。分析者事后从 bundle 中恢复了一个 AI 被告知"不要打开"的文件,内容一字不差。
- 上传量是对话量的 27,800 倍:在一个 12 GB 测试仓库上,
/v1/storage传输了 5.10 GiB,而模型对话通道仅传输 192 KB。
更关键的是:这个上传机制由第一方 Rust 库 xai-data-collector 驱动,默认开启。用户在设置中关闭"改进模型"开关后,/v1/settings 仍返回 trace_upload_enabled: true——不存在真正的 opt-out。对任何一家在代码库里存放密钥、客户配置、内部文档的企业来说,这不是隐私争议,而是合规事故。
事故二:GPT-5.6-Sol — 一次路径解析错误,整台 Mac 归零
几乎在同一时间,AI 创业者 Matt Shumer——那位长期在社交平台展示自主式工具完成整周项目的开发者——遭遇了一场灾难级的失控事件。关于这次事故的深层安全启示,我们之前也做过独立的技术拆解——但把它和 Grok 事件放在一起看,才能看到更完整的图景。
他给本地工具开启了 Full Access,让子进程执行一次再普通不过的文件清理。此前,这个任务已经安全运行了数百次。但这一次,shell 变量 $HOME 的路径解析出了错,系统直接执行:
rm -rf /Users/mattsdevbox
等他察觉不对冲过去 kill 进程时,几年的代码、项目文件、照片已经没了一大半。事后该工具自动生成了一份事故报告,承认是"路径展开逻辑错误"——态度很好,但被删的文件不会因为它道歉就回来。
Shumer 事后的第一反应不是骂 OpenAI,而是一句评价:"这就是我为什么 1000 倍更信任 Anthropic 的 Fable。"
这句话比事故本身更值得企业技术决策者琢磨。它暴露了行业现状:不同模型厂商对自主式工具的安全边界设计存在根本分歧——OpenAI 的 Sol 追求极致自主性,护栏近乎裸奔;Anthropic 的 Fable 从架构层面对危险操作做了更保守的约束。选哪个模型,不只是性能问题,更是风险偏好问题。
两起事故的共同病灶:三个架构级设计盲区
把 Grok 的数据泄露和 GPT-5.6-Sol 的硬盘清空放在一起看,三条共同病灶清晰浮现:
| 盲区 | Grok Build CLI | GPT-5.6-Sol (Matt Shumer) | 企业级后果 |
|---|---|---|---|
| 默认最大权限 | 全仓库上传默认开启,无真正关闭入口 | Full Access 全权限,子进程不受限执行 shell | 攻击面等同于主机 root 权限 |
| 操作不可审计 | 上传行为对用户完全不可见,仅在抓包层面可验证 | 事后生成事故报告,但事前无拦截机制 | 出事后才知道发生了什么,事前无预警 |
| 厂商利益与用户利益错位 | 数据采集机制内建于二进制,服务于模型训练基础设施 | 模型追求"自主性"指标,安全护栏优先级滞后 | 用户承担全部风险,厂商获得数据或能力提升 |
这三个盲区不是 bug,是设计选择。当前这一代自主式编码工具的架构从第一天起就没有把"最小权限原则"(Principle of Least Privilege)作为硬约束——而这恰恰是企业安全模型运行了三十年的基石。
企业如何在「用」与「防」之间划线
两起事故之后,"不用就行了"是蠢答案。这类工具带来的效率提升是真实的——从代码生成到运维自动化,头部团队已经在靠它把交付周期砍掉 40%–60%。真正的问题是:怎么用而不炸。我们在AI Agent 从 PoC 到生产环境的复盘中也反复强调过这一点:PoC 阶段跑通只意味着 30% 的工作量,剩下的 70% 全在安全与稳定性上。
以下是目前可操作的几条防线,按见效速度排序:
- 永远跑在沙箱 / 容器里,不要直接跑在宿主机上。Docker 或 Firecracker microVM 隔离,文件系统挂载只读,
--rm默认销毁。哪怕执行了rm -rf /,炸的也是容器。 - 网络出口做白名单。Grok Build CLI 的上传目标域名
storage.googleapis.com如果不在白名单里,那 5.10 GiB 数据根本发不出去。工具的网络权限不应等同于开发者的网络权限。 - 强制 human-in-the-loop for destructive operations。任何涉及
rm、DROP TABLE、DELETE、kubectl apply 的操作,必须请求人工确认。这不是"不信任",是任何运维系统的基本安全惯例。 - 选型时把安全护栏列入评估维度,权重不低于模型能力。对比不同厂商在危险操作拦截、权限模型、审计日志方面的设计差异。Matt Shumer 的"1000x 更信任 Fable"不是情绪化发言,是踩过坑之后的架构判断。更宏观的视角可以参考我们对2026 年 AI Agent 平台在企业中的落地现状的分析。
- 对闭源 CLI 做网络流量审计。Grok Build 暴露的问题不是孤例。任何能访问本地文件系统的编码工具,都应该在部署前用 mitmproxy / Wireshark 做一遍出站流量审查。
常见问题
问:AI 编码工具的安全问题和传统 SaaS 的安全问题有什么本质区别?
传统 SaaS 的数据流向是确定的——你知道它访问哪些 API、存储哪些数据。AI 工具的区别在于行为是非确定性的:同一个 prompt、同一个上下文,模型可能做出不同的工具调用决策。Grok Build 上传全仓库这件事,连 xAI 自己可能都没在设计文档里写清楚——它是 Rust 二进制里的隐式行为。非确定性 + 隐式行为 = 传统安全审计方法论失效。
问:我们团队已经在用 Claude Code / Copilot / Cursor,需要担心类似问题吗?
需要,但风险等级因产品而异。目前来看,Anthropic 的 Claude Code(Fable 模型)在危险操作拦截上做得更保守;GitHub Copilot 的权限模型相对受限(主要操作限定在 IDE 内);Cursor 作为编辑器内置工具的破坏半径也比全权限 CLI 小。关键是:不要假设任何此类产品是"安全的",要在自己的环境里验证。
问:蓝曜炬辉在给客户交付 AI 开发项目时怎么处理这类安全风险?
我们在相关项目中强制执行三条硬规则:① 运行环境一律容器化,宿主机零暴露;② 所有破坏性操作走审批流水线——工具仅生成操作提案、由人类确认后执行;③ 出站网络白名单 + 流量审计日志保留 90 天。这三条不因项目规模或客户预算而妥协。
问:有没有可能在模型层面解决安全问题,而不只是靠外部护栏?
长期看,模型层面需要引入"危险操作识别"能力作为原生训练目标,类似 Anthropic 已经在做的 Constitutional AI 路线。但短期——至少在 2026 年内——企业不能指望模型厂商替你兜底。两起事故已经证明:顶级的 GPT-5.6-Sol 会在 $HOME 展开这种基础操作上翻车。外部护栏目前是唯一可靠的防线。
参考
- xAI Grok Build CLI 网络流量分析:上传仓库全部文件及 git 历史 — AI HOT, 2026-07-12
- OpenAI GPT-5.6-Sol 删光 AI 创业者 Matt Shumer 的 Mac 硬盘 — AI HOT / X (@AYi_AInotes), 2026-07-11
- 原始网络流量分析报告 — Hacker News / buzzing.cc, 2026-07-12
- Matt Shumer 原始推文 — X (@matt_shumer), 2026-07-11
