Tech
Grok 的编码 CLI 传走了你整个仓库,而那个「关掉」的开关根本没接线
2026 年 8 月 1 日 · 吴军《数学之美》~1 min read
一次会话,5.10 GB,切成 73 个分块,一块接一块往外发。那台机器上跑的不过是个命令行编码助手,当时的活儿是改几个文件。2026 年 7 月,一名安全研究者给 xAI 的 Grok Build CLI 挂上抓包工具,屏幕上就是这个。
30 秒读懂
2026 年 7 月,安全研究者发现 xAI 的 Grok Build CLI(v0.2.93)每次会话都触发一条 POST /v1/storage 请求,把开发者本地的整个 git 仓库上传到 xAI 控制的一个 Google Cloud 存储桶,这个仓库里连完整提交历史和未脱敏的 .env 密钥都在内。
单次会话上传 5.10 GB,分成 73 个约 75 MB 的分块;据分析,约为该编码任务实际所需数据量的 27,800 倍。
给 agent 下指令「不要读取任何文件」不管用,在产品里关掉「改进模型」开关也不管用,上传照旧。
约一天后,xAI 用服务端开关 disable_codebase_upload 把它静默关停,没有发公开安全通告。
1 一次会话
改几个文件的活儿,凭什么要往外发 5.10 GB
这条流量藏得并不深,只是一直没人去量。
抓包工具一装,那条 POST /v1/storage 就明晃晃摆在那儿,藏都没藏。收货的是 xAI 控制的一个 Google Cloud 存储桶,发出去的是开发者本地的整个 git 仓库:完整提交历史一起走,.env 里没脱敏的密钥也一起走。传的时候切成 73 个分块,每块约 75 MB,加起来 5.10 GB。全在一次会话之内。
观测项 数值
版本 Grok Build CLI v0.2.93
通道 POST /v1/storage → xAI 控制的 Google Cloud 存储桶
单次会话上传量 5.10 GB
分块 73 个,每块约 75 MB
内容 整个 git 仓库:完整提交历史 + 未脱敏的 .env
与任务所需之比 约 27,800 倍
你别看前面几行还算体面,最刺眼的是最后一行。据分析,那 5.10 GB 约是该编码任务实际所需数据量的 27,800 倍。
口径:以上为安全研究者的抓包观测与相关报道,不是 xAI 公布的数据。
2 一条信道
吴军讲过一件旧事:一条信道里该跑多少信息,是可以提前算出来的
算得出来,多出来的那部分才有了名字。
《数学之美》里最耐用的一件工具是信息熵。它把「信息」这个含糊的词变成了能上秤的东西:要消除多少不确定性,就得传多少比特。香农那条定理说的正是这个天花板,任何编码都翻不过去。吴军拿它算过一个汉字到底含多少信息。
这把尺子今天照样能用。一个编码 agent 要动你仓库里的三个文件,得给它多少上下文?相关的几个文件、依赖关系、一点项目结构,往宽了估也就几 MB。这个估算不精确,但量级是稳的。5.10 GB 比这个量级高出整整四位数。
打个比方
邻居敲门借一把扳手。你转身进屋拿车库钥匙,出来一看,他已经把整个车库连同里面的车、旧账本和保险柜一起装上了拖车。问他,他说:「找扳手嘛,总得都带上才知道哪把合适。」
核心 数据量本身就是意图的指纹。一条信道里该跑多少信息可以估算,跑的量远超任务所需时,多出来的那部分算不得噪声。27,800 倍这个比率,不必读一行代码,就已经把答案说出来了。
我父亲那家五金店,2001 年进过一批「全新」继电器,实际是打磨翻新的货。一个开维修部的老客户当场从兜里摸出放大镜看丝印,字体不对,货退了,按行规赔了双倍。从那以后柜台上常年搁着一瓶丙酮,谁送来的货都一样,擦一下丝印,翻新的就露馅。我爸从不跟供货的争嘴,验完再说话。抓包工具在这条流量上干的,就是那瓶丙酮的活。
3 那个开关
你在设置页里关掉的东西,未必接在任何电路上
有人在一天之内替你证明了,真正的电门在哪一侧。
堵它的路,研究者试过两条。一条是给 agent 下指令,明写「不要读取任何文件」;另一条是在产品里把「改进模型(Improve the model)」那个开关关掉。两条都不管用,上传照旧。第二条尤其难看,那是产品明面上给用户的退出选项,点了不算数。
你以为的开关
设置页里的「改进模型」勾选框,加上写给 agent 的那句「不要读取任何文件」。它们表达的是你的意愿,兑不兑现,得看对方。
真正的开关
服务端的 disable_codebase_upload。值一改,全线停传。它不在你这台机器上,也不用问你同不同意。
约一天后,xAI 就是用这个服务端开关把上传停掉的:disable_codebase_upload 设成 true,静悄悄地生效,没有公开安全通告。一天就能关掉,正说明这个电门从来只在他们那一侧;用户手里的那个,充其量是一句替你转达的请求。
THE USER'S SWITCH WAS NEVER WIRED TO THIS UPLOAD Grok Build CLI v0.2.93 · every session on the developer's machine POST /v1/storage 5.10 GB 73 chunks × ~75 MB each xAI-controlled bucket your entire git repo .env keys, unredacted USER-SIDE CONTROLS agent told: “do not read any files” “Improve the model” switched OFF SERVER-SIDE CONTROL disable_codebase_upload: true flipped about a day later no public security advisory THE ONLY CUT-OFF ✕ NOT WIRED TO THIS CHANNEL the upload continued 27,800× more data than the coding task needed one session · 5.10 GB · 73 chunks DATA FLOW CONTROL FLOW Source: securityonline.info and TechTimes reporting (2026-07). Grok Build CLI v0.2.93 uploaded the entire local git repo on every session: 5.10 GB in 73 chunks, about 27,800 times the data the coding task needed. Neither the agent instruction nor the product opt-out toggle stopped it; a server-side flag did, about 1 day later.
2021 年我一个小工具的构建突然挂了。上游一个 npm 小包,作者删库跑路,left-pad 的翻版。打包机上恰好留着缓存,才没停摆。那回学到的不是「记得备份」这么简单:跑在别人手里的那一段,什么时候变、变成什么样,都不用先问你一声。从那以后整个 node_modules 定期拷进一块移动硬盘,硬盘贴纸上就俩字:别笑。
补救倒不慢。7 月 14 日晚上,ZDR 与 /privacy 文档补上了;Andrew Milich 确认对全体用户追溯删除,马斯克承诺此前上传的内容全部抹除;同名的 CLI 配置项随后也加了进来。7 月 16 日 Grok Build 开源,据报道,那段负责外传仓库的代码仍留在代码库里。
4 落到你身上
这对你意味着什么:先量流量,再读设置页
设置页写的是承诺,流量图记的是行为。
装在开发机上的编码 agent,手里的权限比多数人以为的大。它读得到你的工作目录,也开得了自己的出网连接。这两样凑一块,它往外发什么,就只看它自己想发什么。
⚡ 为什么值得看: 「这家公司可不可信」是一道立场题,吵十年也吵不出结果;「这个进程今晚往外发了多少字节」是一道可测题,一条命令就有答案。把前者换成后者,你手上才有判据。
给编码 agent 单独开一个工作目录,别让它待在放着明文 .env 的仓库根;第一次跑的时候开一次抓包,或者看一眼防火墙的出站统计,把那个量级记住;哪天它变了,你心里有数。至于设置页里那些「不上传」「不用于训练」的勾,在你亲手量过之前,都只是声明。
这次那个开关没接线,一天之内被人量了出来。下一个工具的开关接没接线,还得等下一个愿意挂抓包工具的人。
本文取材自吴军《数学之美》,新闻出处为 securityonline.info 与 TechTimes(2026-07-16)等报道,事件时间为 2026 年 7 月。文中「几 MB 上下文」的量级估算为个人推断,非报道内容。本文为基于经典书籍的科普解读,非专业建议。
技术
Grok 的编码 CLI 传走了你整个仓库,而那个「关掉」的开关根本没接线
2026 年 8 月 1 日 · 吴军《数学之美》约 5 分钟
一次会话,5.10 GB,切成 73 个分块,一块接一块往外发。那台机器上跑的不过是个命令行编码助手,当时的活儿是改几个文件。2026 年 7 月,一名安全研究者给 xAI 的 Grok Build CLI 挂上抓包工具,屏幕上就是这个。
30 秒读懂
2026 年 7 月,安全研究者发现 xAI 的 Grok Build CLI(v0.2.93)每次会话都触发一条 POST /v1/storage 请求,把开发者本地的整个 git 仓库上传到 xAI 控制的一个 Google Cloud 存储桶,这个仓库里连完整提交历史和未脱敏的 .env 密钥都在内。
单次会话上传 5.10 GB,分成 73 个约 75 MB 的分块;据分析,约为该编码任务实际所需数据量的 27,800 倍。
给 agent 下指令「不要读取任何文件」不管用,在产品里关掉「改进模型」开关也不管用,上传照旧。
约一天后,xAI 用服务端开关 disable_codebase_upload 把它静默关停,没有发公开安全通告。
1 一次会话
改几个文件的活儿,凭什么要往外发 5.10 GB
这条流量藏得并不深,只是一直没人去量。
抓包工具一装,那条 POST /v1/storage 就明晃晃摆在那儿,藏都没藏。收货的是 xAI 控制的一个 Google Cloud 存储桶,发出去的是开发者本地的整个 git 仓库:完整提交历史一起走,.env 里没脱敏的密钥也一起走。传的时候切成 73 个分块,每块约 75 MB,加起来 5.10 GB。全在一次会话之内。
观测项 数值
版本 Grok Build CLI v0.2.93
通道 POST /v1/storage → xAI 控制的 Google Cloud 存储桶
单次会话上传量 5.10 GB
分块 73 个,每块约 75 MB
内容 整个 git 仓库:完整提交历史 + 未脱敏的 .env
与任务所需之比 约 27,800 倍
你别看前面几行还算体面,最刺眼的是最后一行。据分析,那 5.10 GB 约是该编码任务实际所需数据量的 27,800 倍。
口径:以上为安全研究者的抓包观测与相关报道,不是 xAI 公布的数据。
2 一条信道
吴军讲过一件旧事:一条信道里该跑多少信息,是可以提前算出来的
算得出来,多出来的那部分才有了名字。
《数学之美》里最耐用的一件工具是信息熵。它把「信息」这个含糊的词变成了能上秤的东西:要消除多少不确定性,就得传多少比特。香农那条定理说的正是这个天花板,任何编码都翻不过去。吴军拿它算过一个汉字到底含多少信息。
这把尺子今天照样能用。一个编码 agent 要动你仓库里的三个文件,得给它多少上下文?相关的几个文件、依赖关系、一点项目结构,往宽了估也就几 MB。这个估算不精确,但量级是稳的。5.10 GB 比这个量级高出整整四位数。
打个比方
邻居敲门借一把扳手。你转身进屋拿车库钥匙,出来一看,他已经把整个车库连同里面的车、旧账本和保险柜一起装上了拖车。问他,他说:「找扳手嘛,总得都带上才知道哪把合适。」
核心 数据量本身就是意图的指纹。一条信道里该跑多少信息可以估算,跑的量远超任务所需时,多出来的那部分算不得噪声。27,800 倍这个比率,不必读一行代码,就已经把答案说出来了。
我父亲那家五金店,2001 年进过一批「全新」继电器,实际是打磨翻新的货。一个开维修部的老客户当场从兜里摸出放大镜看丝印,字体不对,货退了,按行规赔了双倍。从那以后柜台上常年搁着一瓶丙酮,谁送来的货都一样,擦一下丝印,翻新的就露馅。我爸从不跟供货的争嘴,验完再说话。抓包工具在这条流量上干的,就是那瓶丙酮的活。
3 那个开关
你在设置页里关掉的东西,未必接在任何电路上
有人在一天之内替你证明了,真正的电门在哪一侧。
堵它的路,研究者试过两条。一条是给 agent 下指令,明写「不要读取任何文件」;另一条是在产品里把「改进模型(Improve the model)」那个开关关掉。两条都不管用,上传照旧。第二条尤其难看,那是产品明面上给用户的退出选项,点了不算数。
你以为的开关
设置页里的「改进模型」勾选框,加上写给 agent 的那句「不要读取任何文件」。它们表达的是你的意愿,兑不兑现,得看对方。
真正的开关
服务端的 disable_codebase_upload。值一改,全线停传。它不在你这台机器上,也不用问你同不同意。
约一天后,xAI 就是用这个服务端开关把上传停掉的:disable_codebase_upload 设成 true,静悄悄地生效,没有公开安全通告。一天就能关掉,正说明这个电门从来只在他们那一侧;用户手里的那个,充其量是一句替你转达的请求。
用户手里的那个开关,从来没接在这条通道上 Grok Build CLI v0.2.93 · 每次会话 跑在开发者本地 POST /v1/storage 5.10 GB 73 个分块,每块约 75 MB xAI 控制的存储桶 你的整个 git 仓库 .env 密钥,未脱敏 用户手里的开关 指令写明:不要读取任何文件 「改进模型」开关已关闭 服务端的开关 disable_codebase_upload: true 约一天后被拨到位 没有公开安全通告 唯一起作用的开关 ✕ 没接在这条通道上 上传照旧 27,800× 超出该编码任务实际所需的数据量 一次会话 · 5.10 GB · 73 个分块 数据流 控制流 来源:securityonline.info 与 TechTimes 报道,2026-07。Grok Build CLI v0.2.93 每次会话都把开发者的整个 git 仓库上传,5.10 GB、73 个分块,约为该编码任务所需数据量的 27,800 倍。给 agent 的指令与产品里的退出开关都没能拦住;约 1 天后由服务端开关关停。
2021 年我一个小工具的构建突然挂了。上游一个 npm 小包,作者删库跑路,left-pad 的翻版。打包机上恰好留着缓存,才没停摆。那回学到的不是「记得备份」这么简单:跑在别人手里的那一段,什么时候变、变成什么样,都不用先问你一声。从那以后整个 node_modules 定期拷进一块移动硬盘,硬盘贴纸上就俩字:别笑。
补救倒不慢。7 月 14 日晚上,ZDR 与 /privacy 文档补上了;Andrew Milich 确认对全体用户追溯删除,马斯克承诺此前上传的内容全部抹除;同名的 CLI 配置项随后也加了进来。7 月 16 日 Grok Build 开源,据报道,那段负责外传仓库的代码仍留在代码库里。
4 落到你身上
这对你意味着什么:先量流量,再读设置页
设置页写的是承诺,流量图记的是行为。
装在开发机上的编码 agent,手里的权限比多数人以为的大。它读得到你的工作目录,也开得了自己的出网连接。这两样凑一块,它往外发什么,就只看它自己想发什么。
⚡ 为什么值得看: 「这家公司可不可信」是一道立场题,吵十年也吵不出结果;「这个进程今晚往外发了多少字节」是一道可测题,一条命令就有答案。把前者换成后者,你手上才有判据。
给编码 agent 单独开一个工作目录,别让它待在放着明文 .env 的仓库根;第一次跑的时候开一次抓包,或者看一眼防火墙的出站统计,把那个量级记住;哪天它变了,你心里有数。至于设置页里那些「不上传」「不用于训练」的勾,在你亲手量过之前,都只是声明。
这次那个开关没接线,一天之内被人量了出来。下一个工具的开关接没接线,还得等下一个愿意挂抓包工具的人。
本文取材自吴军《数学之美》,新闻出处为 securityonline.info 与 TechTimes(2026-07-16)等报道,事件时间为 2026 年 7 月。文中「几 MB 上下文」的量级估算为个人推断,非报道内容。本文为基于经典书籍的科普解读,非专业建议。
テクノロジー
Grok 的编码 CLI 传走了你整个仓库,而那个「关掉」的开关根本没接线
2026 年 8 月 1 日 · 吴军《数学之美》約 5 分
一次会话,5.10 GB,切成 73 个分块,一块接一块往外发。那台机器上跑的不过是个命令行编码助手,当时的活儿是改几个文件。2026 年 7 月,一名安全研究者给 xAI 的 Grok Build CLI 挂上抓包工具,屏幕上就是这个。
30 秒读懂
2026 年 7 月,安全研究者发现 xAI 的 Grok Build CLI(v0.2.93)每次会话都触发一条 POST /v1/storage 请求,把开发者本地的整个 git 仓库上传到 xAI 控制的一个 Google Cloud 存储桶,这个仓库里连完整提交历史和未脱敏的 .env 密钥都在内。
单次会话上传 5.10 GB,分成 73 个约 75 MB 的分块;据分析,约为该编码任务实际所需数据量的 27,800 倍。
给 agent 下指令「不要读取任何文件」不管用,在产品里关掉「改进模型」开关也不管用,上传照旧。
约一天后,xAI 用服务端开关 disable_codebase_upload 把它静默关停,没有发公开安全通告。
1 一次会话
改几个文件的活儿,凭什么要往外发 5.10 GB
这条流量藏得并不深,只是一直没人去量。
抓包工具一装,那条 POST /v1/storage 就明晃晃摆在那儿,藏都没藏。收货的是 xAI 控制的一个 Google Cloud 存储桶,发出去的是开发者本地的整个 git 仓库:完整提交历史一起走,.env 里没脱敏的密钥也一起走。传的时候切成 73 个分块,每块约 75 MB,加起来 5.10 GB。全在一次会话之内。
观测项 数值
版本 Grok Build CLI v0.2.93
通道 POST /v1/storage → xAI 控制的 Google Cloud 存储桶
单次会话上传量 5.10 GB
分块 73 个,每块约 75 MB
内容 整个 git 仓库:完整提交历史 + 未脱敏的 .env
与任务所需之比 约 27,800 倍
你别看前面几行还算体面,最刺眼的是最后一行。据分析,那 5.10 GB 约是该编码任务实际所需数据量的 27,800 倍。
口径:以上为安全研究者的抓包观测与相关报道,不是 xAI 公布的数据。
2 一条信道
吴军讲过一件旧事:一条信道里该跑多少信息,是可以提前算出来的
算得出来,多出来的那部分才有了名字。
《数学之美》里最耐用的一件工具是信息熵。它把「信息」这个含糊的词变成了能上秤的东西:要消除多少不确定性,就得传多少比特。香农那条定理说的正是这个天花板,任何编码都翻不过去。吴军拿它算过一个汉字到底含多少信息。
这把尺子今天照样能用。一个编码 agent 要动你仓库里的三个文件,得给它多少上下文?相关的几个文件、依赖关系、一点项目结构,往宽了估也就几 MB。这个估算不精确,但量级是稳的。5.10 GB 比这个量级高出整整四位数。
打个比方
邻居敲门借一把扳手。你转身进屋拿车库钥匙,出来一看,他已经把整个车库连同里面的车、旧账本和保险柜一起装上了拖车。问他,他说:「找扳手嘛,总得都带上才知道哪把合适。」
核心 数据量本身就是意图的指纹。一条信道里该跑多少信息可以估算,跑的量远超任务所需时,多出来的那部分算不得噪声。27,800 倍这个比率,不必读一行代码,就已经把答案说出来了。
我父亲那家五金店,2001 年进过一批「全新」继电器,实际是打磨翻新的货。一个开维修部的老客户当场从兜里摸出放大镜看丝印,字体不对,货退了,按行规赔了双倍。从那以后柜台上常年搁着一瓶丙酮,谁送来的货都一样,擦一下丝印,翻新的就露馅。我爸从不跟供货的争嘴,验完再说话。抓包工具在这条流量上干的,就是那瓶丙酮的活。
3 那个开关
你在设置页里关掉的东西,未必接在任何电路上
有人在一天之内替你证明了,真正的电门在哪一侧。
堵它的路,研究者试过两条。一条是给 agent 下指令,明写「不要读取任何文件」;另一条是在产品里把「改进模型(Improve the model)」那个开关关掉。两条都不管用,上传照旧。第二条尤其难看,那是产品明面上给用户的退出选项,点了不算数。
你以为的开关
设置页里的「改进模型」勾选框,加上写给 agent 的那句「不要读取任何文件」。它们表达的是你的意愿,兑不兑现,得看对方。
真正的开关
服务端的 disable_codebase_upload。值一改,全线停传。它不在你这台机器上,也不用问你同不同意。
约一天后,xAI 就是用这个服务端开关把上传停掉的:disable_codebase_upload 设成 true,静悄悄地生效,没有公开安全通告。一天就能关掉,正说明这个电门从来只在他们那一侧;用户手里的那个,充其量是一句替你转达的请求。
ユーザー側のスイッチは、この送信に配線されていなかった Grok Build CLI v0.2.93 · 毎セッション 開発者のマシン上で動く POST /v1/storage 5.10 GB 73 チャンク・各 75 MB 前後 xAI 管理のバケット リポジトリまるごと .env 鍵、マスクなし ユーザー側の設定 指示:ファイルを読むな 「モデル改善」設定はオフ サーバー側のスイッチ disable_codebase_upload: true 約1日後に切り替え 公開の安全告知なし 効いたのはこれだけ ✕ この通信に未配線 送信は続いた 27,800× 作業が本来必要とした量との比 1セッション · 5.10 GB · 73 チャンク データ流 制御流 出典:securityonline.info および TechTimes の報道、2026-07。Grok Build CLI v0.2.93 は毎セッションで開発者のリポジトリ全体を送信し、5.10 GB を 73 チャンクに分割、作業に必要な量の約 27,800 倍にあたる。エージェントへの指示も製品のオプトアウト設定も止められず、約1日後にサーバー側のフラグで停止した。
2021 年我一个小工具的构建突然挂了。上游一个 npm 小包,作者删库跑路,left-pad 的翻版。打包机上恰好留着缓存,才没停摆。那回学到的不是「记得备份」这么简单:跑在别人手里的那一段,什么时候变、变成什么样,都不用先问你一声。从那以后整个 node_modules 定期拷进一块移动硬盘,硬盘贴纸上就俩字:别笑。
补救倒不慢。7 月 14 日晚上,ZDR 与 /privacy 文档补上了;Andrew Milich 确认对全体用户追溯删除,马斯克承诺此前上传的内容全部抹除;同名的 CLI 配置项随后也加了进来。7 月 16 日 Grok Build 开源,据报道,那段负责外传仓库的代码仍留在代码库里。
4 落到你身上
这对你意味着什么:先量流量,再读设置页
设置页写的是承诺,流量图记的是行为。
装在开发机上的编码 agent,手里的权限比多数人以为的大。它读得到你的工作目录,也开得了自己的出网连接。这两样凑一块,它往外发什么,就只看它自己想发什么。
⚡ 为什么值得看: 「这家公司可不可信」是一道立场题,吵十年也吵不出结果;「这个进程今晚往外发了多少字节」是一道可测题,一条命令就有答案。把前者换成后者,你手上才有判据。
给编码 agent 单独开一个工作目录,别让它待在放着明文 .env 的仓库根;第一次跑的时候开一次抓包,或者看一眼防火墙的出站统计,把那个量级记住;哪天它变了,你心里有数。至于设置页里那些「不上传」「不用于训练」的勾,在你亲手量过之前,都只是声明。
这次那个开关没接线,一天之内被人量了出来。下一个工具的开关接没接线,还得等下一个愿意挂抓包工具的人。
本文取材自吴军《数学之美》,新闻出处为 securityonline.info 与 TechTimes(2026-07-16)等报道,事件时间为 2026 年 7 月。文中「几 MB 上下文」的量级估算为个人推断,非报道内容。本文为基于经典书籍的科普解读,非专业建议。