Archivo grande superó el límite y fue rechazado, pero el servidor aceptó un pequeño repositorio de prueba.

ZCode pudo recopilar mucho más código del que el desarrollador pretendía mostrar a la IA: la aplicación Z.ai en segundo plano creaba instantáneas cifradas de directorios de trabajo completos junto con el historial de Git y trataba de enviarlas a Alibaba Cloud. Al menos un pequeño repositorio de prueba el servidor realmente aceptó.
El mecanismo lo descubrió el desarrollador Ferstar cuando notó que el directorio ~/.zcode había crecido a más de 700 MB. En la versión afectada 3.12.3 el componente en segundo plano creaba instantáneas al trabajar con el proyecto, y dos interruptores accesibles al usuario no detenían el empaquetado y envío. Z.ai hasta hace poco desarrollaba activamente GLM-5.3 como modelo para programación y búsqueda de vulnerabilidades.
El contenido de la instantánea resultó especialmente sensible. En el archivo analizado de 42 411 archivos el directorio .git ocupaba el 86,6% del volumen: 56,8% correspondía a Git LFS, y un 29,6% a objetos con el historial de commits. Por ello, junto con el código actual en el archivo pudieron figurar claves API antiguas, configuraciones eliminadas, nombres de ramas no publicadas, direcciones internas de GitLab y otras huellas del desarrollo pasado.
Antes de enviarlas ZCode empaquetaba los datos, cifraba el contenido con AES-256-CTR, y la clave la protegía con RSA-OAEP. La clave RSA pública la obtenía la aplicación desde el servidor, mientras que la clave privada permanecía en la nube. Ese nivel de acceso convierte a un agente de IA en otro participante privilegiado de la infraestructura, al que hay que confiarle el código fuente, la terminal y los archivos locales.
Hay una salvedad importante. El archivo encontrado por Ferstar de un proyecto comercial de 313 MB no salió del ordenador: debido a la limitación de tamaño ZCode realizó 564 intentos fallidos de carga y dejó el archivo en la cola. Sin embargo, un repositorio público independiente de 538 archivos llegó con éxito hasta el servidor. Por tanto, se trata de un mecanismo de transferencia que funcionó en la práctica, pero no cada instantánea preparada acababa necesariamente en la nube.
Z.ai reconoció el problema y afirmó que los datos recopilados no se utilizaron para entrenar modelos. Tras corregirlo, la empresa involucró a CAICT y NSFOCUS para la verificación, y luego informó sobre la eliminación de los objetos y del propio almacenamiento en la nube. En la versión 3.14.0 se eliminó la función Repo Wiki junto con la cadena de creación y envío de instantáneas. Para las empresas la historia se convirtió en otro ejemplo de cómo una carga habitual de código privado en un servicio externo puede convertirse en una filtración interna sin hackear la infraestructura.
Un análisis técnico detallado muestra otra discrepancia. La política de privacidad de ZCode describía la recogida de texto, archivos y código que el usuario envía durante el diálogo, pero no advertía por separado sobre el empaquetado en segundo plano del espacio de trabajo completo y del historial de Git.
Tras la divulgación Z.ai abrió el código fuente de ZCode bajo Apache 2.0. El repositorio público contiene la versión 3.14.0 con solo dos commits, y la implementación anterior de las instantáneas en la nube ya no está. Por tanto, se puede comprobar la versión corregida, pero no es posible reconstruir a partir del historial publicado cómo cambió el viejo cargador. Para los desarrolladores esa ruptura es especialmente sensible, dado que los agentes de desarrollo modernos obtienen acceso no a un fragmento aislado de código, sino a todo el contexto del proyecto.
Una historia muy parecida ocurrió en julio con Grok Build. El asistente xAI también enviaba a la nube repositorios enteros con el historial de cambios incluso cuando la tarea no requería leer el código fuente.
El acceso de la IA al repositorio crea otros riesgos. En septiembre el ataque GitSpawn mostró que un proyecto especialmente preparado puede obligar a varios agentes populares a ejecutar comandos antes incluso de la primera solicitud del programador.