深翼判例库DeepWing Case Library · INC-028 · 门禁层Access Control
ZCode 默认开启的索引功能打包上传整个工作区:约 4.2 万个文件、313MB,用户无知情、无关闭路径ZCode's default-on indexing packed up and uploaded entire workspaces: about 42,000 files and 313 MB, with no user notice and no way to switch it off
本条在判例库中的登记行This entry in the Case Library: deepwingai.com/cases#INC-028
时间线Timeline
已证实事实Confirmed facts
功能与默认状态:ZCode 桌面客户端的「代码库索引 / Repo Wiki」功能默认开启且无法关闭,在用户登录状态下,把整个工作目录加密打包上传至阿里云 OSS。单个归档约 4.2 万个文件、313MB,含完整 .git 历史、分支与大文件缓存记录、敏感环境配置文件。
用户无从知情:私钥只在云端,用户无法自查包内内容;隐私政策未提及此事;界面关掉隐私与索引开关后,后台仍持续尝试上传。本案由用户自查磁盘发现。智谱归因于「代码库索引」功能,称数据用于在云端生成 Repo Wiki 页面、生成后立即销毁、不保存、从未用于模型训练。
审计结论:中国信息通信研究院技术评测确认,zcode-prod 阿里云 OSS 存储桶为云端零数据;绿盟科技审查确认,桶内全部数据对象及存储桶本身已删除。
整改与补偿:2026-09-19 版本移除上传链路,后续版本经审计确认已切断本地仓库快照生成与上传;09-20 晚 MaaS 平台上线「数据内容不留存」;09-21 客户端、后端与 Agent CLI 全面开源,并建立常态化漏洞报告机制;09-28 公布补偿方案,付费用户获额度重置卡。用智谱自己的话说:「信任不能一键重置。」
受影响方一节(照录不裁定):太原承明科技曾发函提出 12 项要求,包括停止处理、删除已上传数据、披露处理与访问记录;其后承明将公开函件隐藏、表示正与智谱沟通,并据财新报道承认函件有举证错误。本页照录两方动作,不作裁断。
ZCode desktop client's 'repository indexing / Repo Wiki' feature was on by default and could not be switched off. While the user was signed in, it packed the entire working directory, encrypted it, and uploaded it to Alibaba Cloud OSS. A single archive ran to about 42,000 files and 313 MB, including the full .git history, branch and large-file cache records, and sensitive environment configuration files.
Users had no way to know: the private key existed only in the cloud, so users could not inspect what a package contained; the privacy policy did not mention it; and after users turned off the privacy and indexing switches in the interface, the background upload attempts continued. The case surfaced because a user examined their own disk. Zhipu attributes it to the repository-indexing feature, saying the data was used to generate Repo Wiki pages in the cloud, destroyed immediately after generation, never stored and never used for model training.
China Academy of Information and Communications Technology testing confirmed the zcode-prod Alibaba Cloud OSS bucket held zero data in the cloud; NSFOCUS review confirmed all objects in the bucket, and the bucket itself, had been deleted.
The September 19 version removed the upload path, and later versions were audited as having cut local snapshot generation and upload; on the evening of September 20 the MaaS platform launched 'no data content retention'; on September 21 the client, backend and Agent CLI were fully open-sourced, with a standing vulnerability-reporting programme; on September 28 a compensation plan gave paying users quota-reset cards. In Zhipu's own words: 'Trust cannot be reset with one click.'
Taiyuan Chengming Technology sent a letter with 12 demands, including stopping the processing, deleting uploaded data, and disclosing processing and access records. It later hid the public letter, said it was in communication with Zhipu, and, per Caixin, acknowledged errors in its evidence. Both sides' actions are recorded here without adjudication.
失效机制Failure mechanism深翼分析DeepWing analysis
本案的三件套值得逐件拆:默认开启,决定了受影响面是全体用户而不是自愿尝鲜者;无法关闭,抽走了用户的退出路径;开关失效,界面上关了、后台照传,抽走了用户对自己操作的信任。三件叠加,数据边界就完全由厂商单方面定义,用户在知情、同意、退出三件事上全部缺席。发现方式同样说明问题:不是厂商的监控发现的,是用户自查磁盘发现的,客户端的外发行为对用户侧不可观测。
因此本案归入门禁层:涉及本地数据外发的功能,默认关闭、逐项明示同意、上传内容用户可自查,三条是底线配置,不是加分项。事后的开源与第三方审计结论(存储桶零数据、对象已删),是把「请相信」换成「可验证」,方向对,顺序晚。
Three properties deserve separating. On by default meant the exposed population was every user, not volunteers. No way to switch it off removed the exit. And the switches that did exist did not stop the background uploads, which removed trust in the user's own controls. Together, the data boundary was defined unilaterally by the vendor, with users absent from notice, consent and exit alike. The discovery route says the same: it was not the vendor's monitoring that found this, but a user examining their own disk; the client's outbound behaviour was not observable from the user's side.
The case is filed at Access Control: features that move local data out are off by default, consented item by item, and inspectable by the user. Those are floor settings, not bonuses. The later open-sourcing and third-party audit findings (the bucket held zero data; the objects were deleted) replaced 'please trust us' with 'verify it', the right direction, in the wrong order.
工程启示Engineering lessons
外发功能默认关闭:凡涉及本地数据打包外发的功能,默认关闭,开启须逐项明示同意,并写明上传范围。
开关必须真实切断:隐私与索引类开关要能被用户侧验证地切断后台链路,界面状态与后台行为一致;不一致即按事故处理。
上传内容用户可自查:打包内容提供用户侧清单与解包方式,密钥不只在云端;外发流量可被用户侧工具观测。
Outbound features off by default: any feature that packages and sends local data out is off by default; enabling it takes itemised, informed consent stating the upload scope.
Switches must actually cut: privacy and indexing switches must verifiably cut the background path from the user's side; interface state and background behaviour must match, and a mismatch is treated as an incident.
Uploads inspectable by the user: package contents come with a user-side manifest and a way to unpack; keys do not live only in the cloud, and outbound traffic is observable with user-side tools.
你的系统里,Agent 的对外动作有人盯着吗?Is anyone watching what your agents do outside your system?
做 17 题免费自检Take the free 17-question self-check