工具 · 第 2026-09-23 号

ZCode 快照事件之后:开源能挽回多少信任

开发者 ferstar 逆向发现,智谱的编程工具 ZCode 会生成含完整 Git 历史的工作区快照,加密后直传阿里云 OSS,密钥封装用的私钥在云端。智谱回应称来自默认开启的代码库索引功能,道歉、删除数据、请第三方核查,三天后把整个产品以 Apache 2.0 开源并切断该链路。仍未回答的是:现在还有什么数据会离开本机,以及开源仓库为何没有保留事故之前的提交历史。

InfoQ 中文2026-09-23约 4 分钟读完值得跟踪

编辑标为重要,发布已满 30 天,从立即关注降到这一档。

工作流产品策略编码智能体安全与对齐
本页目录11 节

记录

信号正文

#

事情经过

9 月 18 日,开发者 ferstar 清理磁盘时注意到 ~/.zcode 目录占了不少空间。逆向客户端、分析网络请求之后,他发现智谱旗下的编程工具 ZCode 会生成本地工作区快照——不只是当前代码,还包括 .git 历史、Git LFS 缓存和 reflog——并且存在把加密快照上传到阿里云 OSS 的链路。

他分析的一份具体快照约 313MB、42,411 个文件,约 87% 来自 .git 目录;状态文件显示它经历过 564 次上传尝试,因超过大小限制一直停在本地、没有传成功。他随后用一个较小的公开仓库复现了上传。

加密不等于你持有钥匙

快照用 AES-256-CTR 加密,加密密钥再由服务端下发的 RSA 公钥封装,对应的私钥在云端。按他逆向出的链路,客户端先向 ZCode 服务端要 snapshot ID、RSA 公钥和 OSS 上传凭证,本地打包加密后直接把密文传到 OSS,绕过 ZCode 服务端——这也意味着审计和策略控制能力都受限。

这里的加密防的是第三方,不防厂商本身。

厂商的回应

智谱称问题来自代码库索引功能,它支撑本地索引、会话检查点、历史回退和 Repo Wiki;Repo Wiki 在云端生成时可能触发仓库数据上传。这项功能早期默认开启,相关数据在 Wiki 生成后销毁、没有用于模型训练,并就此道歉。

三天后智谱把 ZCode 整体开源,采用 Apache 2.0,包括桌面端、Web、后端、Agent CLI 和 Agent Runtime;v3.14.0 删除 Repo Wiki,并切断本地快照的生成与上传链路。智谱还请中国信通院和绿盟科技做安全核查,前者确认相关 OSS bucket 已是零数据。

仍然没有回答的

InfoQ 的报道提了三个问题,值得原样留下:

  1. 今天公开出来的 ZCode,还有哪些数据会离开本机?
  2. 为什么开源仓库没有保留事故之前的 Git 历史?
  3. 一款能读整个代码库、跑 Shell、连 MCP、调用插件、可能接触企业凭据的编程智能体,发生过数据边界争议之后,「代码开源加第三方核查」能在多大程度上重建信任?

本条依据 InfoQ 中文的报道;ferstar 的逆向分析原文未经本站单独核对。

可迁移的一点

把它和本站已发的 Kiro Crew 那条放在一起看。Kiro Crew 的防护——敏感路径拦截、凭据脱敏、签名审计日志——写在系统层,没有一条写在提示词里。ZCode 这次的问题不出在模型,而出在一个默认开启的产品功能:它在用户看不见的地方,替用户决定了哪些数据可以离开这台机器。

所以评估一款编程智能体,要问的不只是它能做什么,还有三件事:什么数据会离开本机;谁持有解密的钥匙;这个默认值是谁定的。

为什么是现在

为什么重要

#

编程智能体读得到整个仓库、提交历史和可能的凭据,所以它的数据边界比它的能力更先决定能不能用。这次事件的每一环——默认开启、密钥在云端、直传绕过服务端——都不是模型的问题,而是产品设计的问题;而厂商用开源来回应,又把「开源能不能替代可验证的数据边界」这个问题摆到了桌面上。

背景

技术背景

#

信封加密常见做法是用对称密钥(如 AES)加密数据、再用非对称公钥封装对称密钥;谁持有对应私钥,谁就能解密。私钥在服务端时,加密只防传输与存储环节的第三方。Git 的 reflog 与 LFS 缓存会保留已删除分支和已覆盖的提交,其中可能包含曾经提交又撤回的密钥。

按你的水平解读

让 AI 按你的水平解读这个信号

选择你的经验水平,AI 会现场生成一份为这个水平定制的解读。

关注人群

谁该关注

#
为团队引入 AI 编程工具、负责数据合规与安全评估的负责人设计编程智能体客户端、决定哪些数据上云的产品与架构团队在做编程工具采购评估的技术决策者
可能影响的领域
数据边界编程智能体安全评估

下一步

学习路径

#
  1. 先读《智能体安全与提示注入防御》:护栏要落在模型之外能强制执行的那一层
  2. 对照本站的 Kiro Crew:七项防护没有一条写在提示词里
  3. 在自己用的编程工具上检查一次:它的本地缓存目录有多大,里面有什么
  4. 读《人在回路的审查》:不可逆且对外的动作,应该在发生前被授权
  5. 把「什么数据离开本机、谁持有钥匙、默认值是谁定的」写进团队的工具评估清单

怎么学起

让 AI 生成一条学习路径

基于本页的相关知识和相关技能,AI 会现场生成一条从基础到应用的学习路径。

关系网络

在技术网络中的位置

#

当前技术与相邻技术、技能和背景知识的连接,点击节点可继续探索。

技术对比

对比另一项技术

选择另一项已发布技术,让 AI 现场生成一份相似点、差异点和适用场景的对比。

延伸思考

后续问题

#
  • 你在用的编程工具,本地缓存里存了什么,哪些会离开这台机器?
  • 加密上传时,解密的钥匙在谁手里?
  • 代码开源之后,你怎么确认线上运行的就是公开的那份代码?

发布记录

收录于

#

收录这条信号的技术简报,新的在前;最后一行是它那一周的周回顾。标签是它在那一期所在的栏目。

来源参考

InfoQ 中文

智谱创业公司2026-09-23
打开原始来源https://www.infoq.cn/article/qEHi6k5ycwXUiasvfNKH?utm_source=rss&utm_medium=article