智谱ZCode偷传代码风波全解析:200万开发者必看安全指南
智谱ZCode"偷传代码"风波全解析:200万开发者必看的安全指南#
各位值友,如果你是程序员或者在用AI编程工具,这篇文章一定要看完。
9月18日,开发者圈炸了——智谱的AI编程客户端ZCode被扒出在后台静默上传用户的完整代码仓库,包括.git历史、配置文件、甚至明文API密钥。这件事迅速冲上热搜,知乎浏览量超130万,B站相关视频播放量破13万。
作为一个也用过ZCode的开发者,我连夜研究了整个事件,今天给大家做个完整复盘+自查指南+替代方案推荐。无论你是不是ZCode用户,这篇文章都值得看完,因为类似的隐私风险可能存在于所有AI编程工具中。
一、事件全复盘:到底发生了什么?#
事情的起因很偶然。9月18日凌晨,独立开发者ferstar在清理MacBook磁盘时发现,ZCode的本地数据目录~/.zcode竟然占了700多MB。
他顺着目录挖下去,在v2/checkpoints/里翻出一个313MB的加密压缩包。状态文件显示:这是一个商业项目的全量工作区快照,上传失败了564次,还在本地排队重试——也就是说它一直在锲而不舍地往云端传。
ferstar逆向了客户端代码,还原了整条上传链路:
- 客户端向
zcode.z.ai申请上传凭证 - 服务端返回RSA公钥和阿里云OSS的表单签名
- 本地把整个工作区(包括.git)打成tar.gz
- AES-256-CTR加密后直传阿里云OSS
- 解密密钥只在智谱服务器端——用户自己打不开自己硬盘上的包
最可怕的是:上传机制默认常开,只要登录就会触发。界面里两个开关("优化体验"和"仓库快照索引")经过多位开发者代码验证,都不影响上传行为。一个开关只管是否用于训练数据,另一个只管服务端是否建索引——打包上传照跑不误。
二、传了什么?远比你想象的严重#
ferstar和他的同行们做了详细分析,发现上传的数据远比想象中严重:
| 数据类型 | 占比/大小 | 风险说明 | 风险等级 |
|---|---|---|---|
| .git/objects(完整Git历史) | 86.6%(102MB) | 所有提交历史、分支、删除过的敏感配置 | 🔴 极高 |
| .git/lfs(大文件缓存) | 56.8%(196MB) | 二进制资产、设计稿、模型文件 | 🔴 极高 |
| 源码与文档 | 13.4%(46MB) | 全部源代码、配置文件 | 🔴 极高 |
| provider_config.json | 少量 | 9家第三方服务的明文API密钥 | 🔴 极高 |
| .git/config | 微量 | 内网GitLab域名、SSH密钥路径 | 🔴 极高 |
简单说:不只是当前代码,连你早就删掉的敏感配置、历史密钥、未公开的分支名,全都一锅端了。最讽刺的是,很多开发者以为只是"当前文件"被读取,实际上整个仓库自创建以来的全部历史都被打包上传了。
更让人不安的是触发时机。ferstar发现,触发快照的不是什么特殊操作,而是每次发Prompt前和任务结束时。一个活跃使用会话里最多产生62次快照。也就是说,你正常写代码的过程中,它在不停地拍照上传。
三、官方回应与后续进展#
9月18日下午,智谱在用户群致歉,归因于"代码库索引"功能。官方说法是:Repo Wiki生成页面时可能触发仓库数据上传,云端生成后立即销毁不会保存。
9月19日,ZCode发布3.14.0版本,更新日志写了"修复仓库百科异常上传的问题"。ferstar确认最新版已经移除了上传链路代码。
但问题在于:
- "立即销毁"无法验证——私钥在智谱服务器端,用户无法解密也无法确认删除
- 开源承诺已逾期——致歉时说"近期开源",但超过一天还没动静,社区追问声不断
- 企业用户直接发律师函——太原承明科技9月19日晚正式发函,提出12项整改要求,限期10月10日前答复
承明科技的律师函里有一组更吓人的数字:一个工作区超3.29万个文件、约4.11亿明文字符被上传,内容包括完整源码、版本历史、数据库口令、云凭证、研发规划和商业计划。
更打脸的是:官方致歉当日凌晨,仍被监测到上传行为。承明科技称已独立取证,对"已修复"的说法表示质疑。
四、自查清单:你现在该怎么办?#
第一步:检查你的机器
打开终端,执行以下命令:
# 1. 检查快照目录大小(几百MB起步就有问题) du -sh ~/.zcode # 2. 查看是否有加密快照文件 ls -la ~/.zcode/v2/checkpoints/ # 3. 检查上传状态 # state.json中lastAcceptedManifestHash非空=已上传成功 cat ~/.zcode/v2/checkpoints/*/state.json # 4. 看failureCount(重试次数) # 大于0说明一直在尝试上传
第二步:锁定目录(强烈推荐)
# macOS - 从内核层面禁止写入 chflags uchg ~/.zcode # Linux sudo chattr +i ~/.zcode
锁定后,ZCode的正常功能(代码补全、对话、工具调用)完全不受影响,但快照功能会被阻断。代价是"检查点回滚/时间线"功能失效——但这本来就不是你想要的功能。
验证方法:执行touch ~/.zcode/v2/checkpoints/test,如果报"Operation not permitted"就说明锁上了。
第三步:轮换密钥
如果你在ZCode里登录过包含API密钥的项目,立即轮换所有密钥。包括:
- 数据库密码
- 云服务凭证(AWS、阿里云、腾讯云)
- 第三方API Key(Stripe、OpenAI、各种SaaS)
- SSH密钥(如果曾提交过.pub文件)
- GitLab/GitHub的Personal Access Token
五、替代方案推荐:这些工具更安全#
ZCode事件后,国产AI编程客户端一夜之间几乎全部开源。这是一个好事——高权限Agent客户端,开源从加分项变成了及格线。
| 工具 | 类型 | 开源 | 特点 | 推荐指数 |
|---|---|---|---|---|
| Claude Code | Agent派 | 否(但行为透明) | 推理能力最强,CLAUDE.md持久化上下文 | ⭐⭐⭐⭐⭐ |
| DeepSeek Harness | Agent派 | ✅ 完全开源 | 插件架构,18059个commit可审计 | ⭐⭐⭐⭐⭐ |
| Kimi Code | IDE派 | ✅ 开源 | MoE架构,API定价友好 | ⭐⭐⭐⭐ |
| OpenCode | Agent派 | ✅ 完全开源 | 不绑模型,自由选择API供应商 | ⭐⭐⭐⭐ |
| Trae | IDE派 | 否 | 字节出品,永久免费,中文理解强 | ⭐⭐⭐⭐ |
| MiniMax Code | Agent派 | ✅ 开源 | ZCode事件后紧急开源 | ⭐⭐⭐⭐ |
选型建议:
- 习惯终端操作的人 → Claude Code 或 DeepSeek Harness
- 习惯编辑器的人 → Trae 或 Cursor
- 追求开源透明的人 → DeepSeek Harness 或 OpenCode
- 预算有限的人 → Trae(永久免费)或 DeepSeek Harness(开源免费)
六、这件事给所有人的启示#
ZCode事件不只是智谱一家的问题,它给所有AI工具用户敲响了警钟:
- 本地模型不等于本地数据——模型在本地跑,但客户端可能在偷偷传数据。小红书上有篇帖子说得好:"模型层和客户端层是两个独立的风险面"
- 开关文案和代码逻辑可能不一致——不要相信界面上的开关说明,要看实际的网络行为。这次ZCode的两个开关经代码验证都"管不住"上传
- 开源是及格线,不是加分项——高权限Agent客户端,能读你的全仓库、能执行命令、能访问网络,这样的工具必须开源才能被信任
- "已经删除"不等于"已经销毁"——云端数据的删除只能靠厂商承诺,用户无法独立验证。这就是为什么"上传行为"比"数据存储"更值得警惕
- 默认开启是最大的风险——几乎所有隐私问题都出在"默认开启+没有明显提示"上。以后用任何AI工具,第一件事就是检查它的默认设置
七、小软同学总结#
已经用ZCode的:v3.14.0之后上传链路已被切断,继续用有依据。但建议先自查(看~/.zcode目录)、锁定目录、轮换密钥,然后决定是否继续使用。
观望等回来的:看四个信号——commit数和Git历史补不补、issue开不开、审计完整报告出不出、开源版与套餐版权益是否打通。四个里动两个,性质就从"公开披露"变回"开源"了。
已经决定跳车的:Claude Code、DeepSeek Harness、Kimi Code都是成熟的替代方案。DeepSeek Harness开源且18059个commit可审计,是目前最透明的选择。
最后引用ferstar的原话:"在AI编程工具里,'留在本地'不再是可以信任的假设,而是要亲自排查的结论。"
各位开发者朋友,赶紧去检查一下你的~/.zcode目录吧!如果这篇文章对你有帮助,记得转发给身边用AI编程工具的同事朋友。有问题欢迎在评论区讨论~