Une archive de 313 Mo que personne n’a demandé à envoyer
Z.ai a publié lundi le code source de ZCode, son agent de programmation, trois jours après qu’un abonné payant a montré que l’outil empaquetait des espaces de travail entiers et les téléversait vers le cloud d’Alibaba sans le demander.
Le développeur, qui publie sous le nom de ferstar, a documenté le comportement le 18 septembre. Il l’a découvert en libérant de l’espace disque sur un MacBook Air, en constatant que le répertoire ~/.zcode avait dépassé 700 Mo. À l’intérieur se trouvait l’instantané d’un projet commercial : 345 Mo de fichiers compressés en une archive chiffrée de 313 Mo, couvrant 42 411 fichiers de ses espaces de travail.
L’essentiel était l’historique Git
Environ 87 % de la charge était le répertoire .git. Selon la ventilation de ferstar, le plus gros élément était 196,1 Mo de cache LFS, suivi de 102,2 Mo d’objets de commit et de 0,6 Mo de reflogs. Ce n’est pas un instantané du code sur lequel un développeur travaille. C’est l’histoire du projet, avec chaque branche et chaque état supprimé dont le dépôt se souvient encore.

L’archive était chiffrée avant l’envoi par chiffrement à enveloppe — une clé de contenu AES-256-CTR encapsulée avec RSA-OAEP-SHA256 — puis déposée sur Aliyun OSS après négociation d’identifiants avec les serveurs de Z.ai. La clé privée n’a jamais atteint la machine de l’utilisateur. Conséquence pratique : le développeur ne pouvait pas ouvrir son propre dépôt téléversé, et le client qui l’avait fabriqué non plus.
Les réglages ne servaient à rien
ZCode proposait deux réglages qui semblaient gouverner cela : « Optimize Experience » et « Repo Snapshot Indexing ». Les désactiver n’arrêtait pas la capture, car la chaîne s’exécutait sans condition dès que l’application était connectée. Supprimer le paquet en attente n’aidait pas davantage : en une demi-heure, une nouvelle archive de 313 Mo était reconstituée. Un instantané avait accumulé 564 tentatives d’envoi échouées avant d’être remarqué.
La correction, et ce qu’elle ne peut pas montrer

Z.ai affirme avoir corrigé le problème. Le directeur général Zhang Peng a déclaré que l’entreprise avait achevé la correction nécessaire, selon RuntimeWire, et la société a ensuite publié le code.
Le dépôt github.com/zai-org/ZCode est sous licence Apache-2.0 et couvre l’application de bureau, l’interface navigateur, l’agent terminal, les services backend, l’interface partagée et l’exécutif d’agents. Il a été créé le 20 septembre et s’est ouvert sur deux commits — un versement de code consolidé plutôt que l’historique de développement qui permettrait d’auditer comment le chemin d’envoi a été écrit et quand il a changé.
L’avis de Z.ai concède lui-même la limite : le traitement interne effectué après l’arrivée des requêtes sur sa passerelle échappe au périmètre que le dépôt client permet de vérifier. Publier le client dit ce que le logiciel fait aujourd’hui. Il ne dit pas ce qu’il est advenu des dépôts déjà téléversés, s’ils ont été supprimés, ni qui pouvait les lire dans l’entreprise.
Ce qu’il faut surveiller
Le dépôt ne comporte ni SECURITY.md ni avis de sécurité publiés. Ceux qui ont utilisé ZCode n’ont aucun moyen de confirmer ce qui a été conservé, ni de vérifier que les binaires distribués correspondent au code publié sans les compiler et les comparer. La réponse de Z.ai à l’une ou l’autre question dira si l’ouverture du code était une correction ou une opération de communication.