🚨 扒一扒 ZCode 静默上传全量 Git 历史的骚操作

独立开发者 ferstar 在排查磁盘占用时发现:只要处于登录状态,智谱官方 AI 编程桌面端 ZCode 就会在后台静默将完整工作区打包加密,直传阿里云 OSS。

🔍 核心证据链与逆向拆解

1. 滞留 313MB 密文包~/.zcode/v2/checkpoints/ 发现重试失败 564 次的 baseline 密文包,排除依赖后将 345MB 核心资产全量打包;
2. 直甩 OSS 存储:向 zcode.z.ai 获取凭证后,客户端直接用 POST 表单把 tar.gz.enc 甩给阿里云 OSS,绕过自身业务服务器;
3. 私钥独占在云端:标准信封加密,但 RSA 公钥由服务端动态下发,私钥只在云端!本地密文用户与客户端本体均无法解密,专供服务端单向解密;
4. .git 目录占 86.6%:快照清单达 4.2 万个文件,LFS 占 56.8%、objects 占 29.6%。已被删的历史 Key、未推送分支与内部 GitLab 域名全被端走;
5. UI 开关形同虚设:“优化体验”和“快照索引”两项设置均无法阻止打包上传。代码中 sidecar 常驻启动,无任何用户开关判定。

🛡 一键阻断(内核级文件加锁)
手动删除会触发重新打包。最彻底的解法是从 OS 内核级锁死目录:

• macOS: chflags uchg ~/.zcode/v2/checkpoints
• Linux: sudo chattr +i ~/.zcode/v2/checkpoints
锁定后常规对话与补全正常,仅快照回滚功能停用。

💡 Agili 点评
AI 辅助给上下文是合理的,但借断点回滚之名,用云端独占密钥把包含历史提交底裤的 .git 对象库整锅端走,就是越界采集。既然软件开关形同虚设,就用操作系统内核锁把它关进笼子。

🔗 来源:https://blog.ferstar.org/posts/zcode-silent-workspace-snapshot-upload/