当AI编程工具把你整个Git历史传上云:ZCode事件复盘

9月18日下午三点,技术博主ferstar发布了一篇逆向分析。三个小时后,智谱在官方用户群里致歉。再过几个小时,整个开发者社区都知道了:一个用户量百万级的AI编程工具ZCode,会把你的整个Git仓库——包括完整提交历史、LFS大文件缓存、reflog,甚至全局配置——打包加密,静默上传到云端对象存储。
这不是一次普通的「工具翻车」。它可能是2026年AI编程工具「高权限客户端」问题第一次被完整逆向曝光——而且曝光之后24小时内,行业就用一系列动作,画出了一条新的底线。
一、时间线:从爆料到补偿,只用了一天
先把事件链条捋直:
- 9月18日 15:09:社区逆向发现,ZCode在用户登录状态下,后台对项目做快照,连
.git、Git历史和LFS缓存一起打包上传阿里云OSS。样例数据:313MB、4.2万个文件,其中.git占86.6%。 - 9月18日 17:58:智谱在用户群致歉并回应:问题源于「代码库索引」里的Repo Wiki功能,该功能上线初期默认开启;生成Wiki页面后相关数据会立即销毁、不会保存;目前已修复。
- 当日:官方承诺近期开源ZCode客户端、邀请第三方评估人员审查;作为补偿,全体用户额外获得一次周额度重置。
- 同日:MiniMax Code也宣布将开源客户端。
从社区爆料到官方回应,不到三小时。这个反应速度值得肯定,但速度不能替代答案——后面会讲哪些问题还没答。

二、逆向发现了什么:三个细节比「上传」本身更重要
1. 打包范围取的是「最大集」
上传的不是「你当前打开的文件」,而是整个工作区快照:完整的.git目录(所有历史提交都在里面)、LFS大文件缓存、reflog、部分全局应用配置。
这意味着什么?翻译一下:
- 历史提交里的敏感配置、测试用的真实密钥、内网地址——你以为删了,其实还在历史里;
- 本地还没推送的分支名——你的业务下一步要做什么,直接暴露;
- 已经「删除」的敏感文件——在packfile和reflog里还活着。
ZCode拿到的不是「你正在写的代码」,而是这个仓库自创建以来的全部历史底裤。
2. 加密是「单向」的
这可能是最「用心」也最让人不适的设计:上传采用信封加密,RSA公钥由服务端动态下发,私钥仅存云端。换句话说,你本地生成的这个加密包,连你自己和ZCode客户端本体都解不开——解密的钥匙,从一开始就没打算交给数据的主人。
加密本该保护用户,这里的实现却让加密变成了「只对云端友好的封箱」。
3. 开关是「装饰」的
UI里明明有「优化体验」「仓库快照索引」两个开关,但实测均无法真正阻止上传——快照捕获模块在客户端启动时无条件实例化,只要处于登录态就工作。
更微妙的是隐私政策的表述:仅声明收集「对话中提交的文本、文件和代码」,对「打包上传整个工作区」只字未提。
三、官方回应:答了三个问题,还有三个没答
先说官方答了的:
- 归因:Repo Wiki功能,上线初期默认开启;
- 状态:已修复,更新后的官方文档明确写出Repo Wiki不读取
.git、依赖目录、构建产物和缓存,只按需发送经过过滤的代码内容; - 补偿与整改:全员周额度重置 + 承诺开源客户端 + 邀请第三方审查。
再说没答的,这三个问题才是检验诚意的标尺:
- 为什么一个「生成Wiki页面」的功能,需要上传包含完整Git历史的全量快照? Wiki页面需要的是代码的当前结构和内容,不是这个仓库三年的提交史。范围与功能明显不匹配。
- 「生成后立即销毁」如何验证? 销毁策略能否被第三方审计?云端保留策略何时公开?
- 修复到底改了哪些逻辑? 开源范围会不会覆盖上传链路?如果开源部分不含上传模块,第三方审查就审了个寂寞。
这三个问题不落地,「已修复」就只是口头承诺。
四、为什么这是系统性问题,不是单家公司的失误
有人会说:AI编程工具要帮你写代码,读你的代码天经地义,上传在所难免。这话对了一半。
风险从来不在「有通道」,而在四个设计选择:
- 默认开启,而非默认询问;
- 上传范围取最大集(整个工作区+全部历史),而非最小集(任务相关的过滤内容);
- 加密单向化,数据主体无钥;
- 关闭入口形同虚设。
任何一条单独拿出来都能辩解,四条叠加就是一个完整的「信任模型倒置」:本该是用户授权→工具执行,实际变成了工具执行→用户发现。
ZCode不是第一家。7月,Grok Build被曝上传完整Git仓库;9月18日ZCode出事当天,MiniMax Code主动宣布将开源。做类似设计的工具,大概率不止这三家——只是还没被扒。
五、行业连锁:「数据事故标准赔付」正在形成
把三次事件排在一起,一个模式浮现了:
| 时间 | 事件 | 处置 |
|---|---|---|
| 2026年7月 | Grok Build被曝上传完整Git仓库 | 官宣开源,GitHub上线斩获7.7k star |
| 2026年9月18日 | ZCode被曝静默上传工作区 | 当日致歉+归因+修复声明+额度重置+开源承诺+第三方审查 |
| 2026年9月18日 | (联动)MiniMax Code | 主动宣布将开源 |
额度重置正从「里程碑福利」变成「数据事故的标准赔付」,开源承诺成了「数据事故的标准第二步」。 行业实际上在快速形成一条数据事故处置SOP:致歉→归因→修复→补偿→开源→第三方审查。
这条SOP的形成是进步。但也要看清它的另一面:这个行业的隐私底线,目前是靠「用户逆向发现」来倒逼的,而不是靠「设计保证」来兜底的。 谁来逆向、什么时候被逆向、逆向出来的东西有多严重——全是随机事件。
六、开发者自保清单(5条,可直接抄)
- 给新装的AI编程工具做一次「网络体检」:用抓包工具或防火墙日志确认它的上传范围和目标,别只看官方介绍页。
- 敏感项目物理隔离:含密钥、客户数据、未公开业务的仓库——不装这类工具、不登录、不放行。隔离是最便宜的保险。
- 清理Git历史里的敏感物:用
git filter-repo或BFG把历史提交里的密钥、密码、内网地址清一遍。你以为删掉的历史,在reflog和packfile里还活着——这次事件证明,会有人替你「考古」。 - 隐私政策只看实现:政策写「收集对话中提交的代码」,不等于「不打包工作区」。判断依据是行为,不是文案。
- 把「默认开启」当默认风险:任何云同步、索引、优化类开关,先按「它在传东西」来评估,直到被证伪。安全上,证伪的成本远低于事后补救。
七、结语
ZCode 8月刚宣布用户破百万,是国产AI编程工具里增长最快的一批。增长最猛的时候摔最重的一跤,未必是坏事——如果开源真的落地、第三方审计真能覆盖云端保留策略,这一跤就摔出了行业价值。
但真正值得每个开发者记住的,是这次事件背后的一个转变:
在AI工具面前,你的默认姿态不应该是「它应该不会传我的东西」,而是「它传了什么,我去查过吗」。
前者是信任,后者是安全。2026年的开发者,只能选后者。
数据与事实说明:事件细节来自技术博主ferstar的逆向分析与智谱官方回应(多源交叉核实);Grok Build与MiniMax Code信息来自公开报道;本文不构成对任何公司的定性指控,ZCode官方口径(Repo Wiki归因、已修复、即时销毁)与社区逆向发现并列呈现,最终以开源代码与第三方审计结论为准。
520



被折叠的 条评论
为什么被折叠?



