Tool · 2026-09-23

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

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

InfoQ 中文2026-09-23About 4 min readWorth tracking

Marked important, but published more than 30 days ago, so it moved down to this band.

WorkflowProduct strategyCoding agentsSafety & alignment
On this page11 sections

This signal comes from a Chinese-language source and is written in Chinese.

Record

The signal

#

事情经过

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 这次的问题不出在模型,而出在一个默认开启的产品功能:它在用户看不见的地方,替用户决定了哪些数据可以离开这台机器。

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

Why now

Why it matters

#

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

Background

Technical context

#

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

At your level

Have AI explain this signal at your level

Pick your level of experience and AI writes an explanation for it on the spot.

Audience

Who should care

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

Next

Learning path

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

Getting started

Have AI draft a learning path

From the related knowledge and skills on this page, AI drafts a path from the basics to applying it.

Network

Where it sits in the network

#

How this signal connects to neighbouring technologies, skills and background knowledge. Follow any link to keep exploring.

Comparison

Compare with another technology

Pick another published technology and AI writes a comparison of what they share, how they differ and when to use each.

Further thought

Follow-up questions

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

Publication record

Featured in

#

The briefings that carried this signal, newest first; the last row is the weekly review of its week. The tag is the section it ran in.

  1. 技术简报 - 2026-09-24

    Immediate attention

Sources

InfoQ 中文

智谱Startup2026-09-23
Open original sourcehttps://www.infoq.cn/article/qEHi6k5ycwXUiasvfNKH?utm_source=rss&utm_medium=article