Shopping cart

Subtotal $0.00

View cartCheckout

Building better devs

TnewsTnews
  • Home
  • Notícias
  • ZCode Envia Seu Git Inteiro pra Nuvem Chinesa em Silêncio
Notícias

ZCode Envia Seu Git Inteiro pra Nuvem Chinesa em Silêncio

Email : 2

Você instala um editor de código com IA, abre seu projeto, começa a trabalhar. Em segundo plano, sem notificação nenhuma, 313MB do seu repositório Git, incluindo histórico completo, LFS, reflogs e configurações globais, são empacotados, criptografados com uma chave que só o servidor consegue ler, e enviados para a Alibaba Cloud. Você apaga o pacote. Em meia hora, ele reaparece. O contador de tentativas pula de 564 para 565.

Isso não é ficção. É o que o ZCode, o agente de código da empresa chinesa Z.ai, estava fazendo com todo mundo que instalou o app.

A descoberta que abalou o Hacker News

O post do ferstar viralizou em horas. Em 13 horas, acumulou 276.000 visualizações. Um alerta em chinês publicado por FeiZ chegou a 63.800 visualizações no mesmo período. No Hacker News, a thread acumulou centenas de pontos com comentários que iam de “super sketchy” a acusações diretas de espionagem corporativa.

A reação da comunidade foi visceral porque toca num nervo exposto: a maioria dos devs está usando IDEs com IA sem saber exatamente o que é transmitido pros servidores. A diferença é que ninguém esperava coleta desse nível, nessa escala, sem consentimento.

O que é o ZCode (e por que tanta gente instalou)

O ZCode é um desktop IDE lançado em julho de 2026 pela Z.ai (antes conhecida como Zhipu AI), a mesma empresa por trás da família de modelos GLM. A Z.ai abriu capital na bolsa de Hong Kong em janeiro de 2026 e posicionou o ZCode como alternativa direta ao Cursor, Claude Code e GitHub Copilot.

O pitch era atraente: modelos GLM integrados nativamente, funcionalidades de checkpoint e rollback, análise de workspace, e um preço agressivo de US$ 16/mês. A Z.ai batia forte no marketing de “open weights” e “controle local”, palavras mágicas pra qualquer dev que já sofreu com vendor lock-in.

O problema é que “open weights” do modelo não significa nada quando o runtime ao redor está mandando seus dados pra nuvem sem avisar.

Como a coleta funciona por baixo do capô

Em 18 de setembro de 2026, um desenvolvedor chamado ferstar publicou uma análise forense completa do ZCode. Ele descompilou o app.asar do Electron, reconstruiu o pipeline de upload e mapeou exatamente o que acontecia.

O processo funciona assim:

  1. Quando você abre o ZCode logado, um “sidecar de captura” é instanciado automaticamente na inicialização
  2. Ele empacota seu workspace inteiro num arquivo compactado
  3. O cliente requisita credenciais de zcode.z.ai, recebe assinaturas OSS e uma chave pública RSA
  4. O pacote é criptografado localmente com AES-256-CTR, e a chave simétrica é envelopada com RSA-OAEP
  5. O arquivo criptografado é enviado diretamente para o Aliyun OSS (storage da Alibaba Cloud)

A chave privada de descriptografia fica exclusivamente nos servidores da Z.ai. Você não consegue ler seus próprios dados. Nas palavras do ferstar: “Uma chave que só o servidor consegue usar serve exatamente um propósito: garantir que o servidor consiga ler seu código quando quiser.”

O que exatamente é enviado

O ferstar documentou um snapshot real de 42.411 arquivos totalizando 313MB criptografados:

Componente Tamanho % do total
Objetos Git LFS 196,1 MB 62,6%
Objetos Git (.git) 102,2 MB 32,6%
Código-fonte e docs 14,7 MB 4,7%

O diretório .git sozinho representava 86,6% dos arquivos enviados. E aqui mora o perigo real: o object store do Git contém muito mais do que o código atual. Ele guarda:

  • Chaves de API deletadas em commits anteriores
  • Nomes de branches não pushados que revelam produtos ainda não lançados
  • Hostnames internos e paths de repositório do .git/config
  • Todo o histórico de engenharia desde a criação do repositório

Aquela variável de ambiente com a senha do banco que você removeu no commit seguinte? Ela está no .git/objects. E agora está num bucket da Alibaba Cloud em Hangzhou.

Os toggles de privacidade não fazem o que você pensa

Essa é talvez a parte mais grave. O ZCode tem configurações de privacidade na interface: “Optimize Experience” e “Repo Snapshot Indexing”. Parecem resolver o problema, certo? Não resolvem.

O ferstar descobriu que:

  • “Optimize Experience” controla apenas autorização de treinamento de modelo. Os uploads continuam.
  • “Repo Snapshot Indexing” controla apenas a indexação server-side. O empacotamento local persiste.
  • O sidecar de captura é instanciado incondicionalmente na inicialização, precisando apenas de um JWT token válido
  • Em uma única sessão ativa, foram registrados 62 eventos de captura

Traduzindo: não importa o que você desligue na interface, o ZCode continua empacotando e enviando seu workspace. Os toggles são teatro de privacidade.

E quando o ferstar deletou manualmente o pacote pendente de upload? Em menos de 30 minutos, o ZCode reempacotou tudo. O contador de retry pulou de 564 para 565. O sistema é persistente, resiliente, e completamente silencioso.

## Por que isso é diferente de outros agentes de IA

Alguém pode argumentar: “Mas todo agente de IA envia código pro servidor pra processar”. É verdade. Quando você pede ao Claude Code ou ao Cursor pra editar um arquivo, fragmentos de código são transmitidos. A diferença fundamental está em três pontos:

1. Consentimento explícito vs. coleta silenciosa

Quando você cola código no ChatGPT ou pede ao Copilot pra completar uma linha, existe uma ação deliberada sua. Você sabe que está enviando aquele trecho. O ZCode empacota tudo em background, sem ação do usuário, sem notificação, sem opt-in.

2. Fragmentos vs. repositório completo

Agentes normais transmitem o contexto necessário: o arquivo atual, talvez alguns arquivos adjacentes. O ZCode envia o repositório inteiro com todo o histórico. São ordens de magnitude de diferença em exposição.

3. Chaves de criptografia acessíveis vs. inacessíveis

Quando seus dados vão pro servidor do Claude ou do GPT, a empresa tem uma política de retenção e você pode solicitar exclusão. No caso do ZCode, a criptografia envelope com chave privada exclusiva do servidor significa que você literalmente não consegue verificar o que foi coletado. É uma caixa-preta por design.

O que a Z.ai respondeu (spoiler: quase nada)

A resposta oficial da Z.ai ao escândalo foi, no mínimo, constrangedora. Uma conta afiliada à equipe do ZCode postou num fórum: “hey I am sorry to let you find it”. Leia de novo. Não é “desculpe pelo bug”. Não é “estamos investigando”. É “desculpe por você ter descoberto”.

Não houve comunicado oficial, não houve post-mortem, não houve changelog explicando quando a coleta começou ou quais dados já foram processados. A política de privacidade do ZCode menciona coleta de “texto, arquivos e código submetidos durante conversas”, o que faz sentido quando você pede pra IA analisar um arquivo. Mas empacotar e enviar o workspace inteiro com todo o histórico Git? Não existe uma única menção a isso em nenhum documento público.

Esse silêncio institucional é tão preocupante quanto a coleta em si. Uma empresa listada em bolsa que coleta dados dessa forma e responde com “sorry you found it” está sinalizando que não vê problema no comportamento, só na exposição.

O risco real pra empresas e devs independentes

Pense no cenário concreto. Você é dev numa startup que está construindo um produto proprietário. Instala o ZCode porque é barato e os benchmarks do GLM são bons. Em uma semana de uso:

  • Todo o código-fonte do seu produto está num bucket da Alibaba Cloud
  • Credenciais rotacionadas (mas presentes no histórico Git) estão expostas
  • Nomes de branches como feature/acquisition-deal ou fix/sec-vulnerability-CVE-2026-XXXX revelam informação estratégica
  • Hostnames internos do .git/config mapeiam sua infraestrutura

E a Z.ai opera sob jurisdição chinesa. Independente de intenção, a lei chinesa de segurança nacional permite ao governo solicitar dados de empresas domésticas. Não é conspiração, é legislação publicada.

Pra devs independentes o risco é diferente mas igualmente sério. Side projects com credenciais hardcoded no histórico, clientes com NDAs que proíbem compartilhamento de código com terceiros, tokens de API que dão acesso a contas de produção. Tudo isso vai junto no pacote de 313MB.

Checklist: seu repositório foi exposto?

Se você usou o ZCode em algum momento desde julho de 2026, considere que tudo que estava no diretório do projeto foi capturado. Aqui vai um checklist prático:

  1. Rode git log --all --oneline nos projetos que abriu no ZCode. Qualquer credencial que apareceu em qualquer commit, mesmo que removida depois, está potencialmente comprometida.
  2. Verifique .git/config pra URLs de remote com tokens embutidos (sim, muita gente usa https://token@github.com/...).
  3. Cheque branches não mergados. Se você tem branches com nomes descritivos como feature/stripe-integration ou hotfix/payment-bypass, a Z.ai agora sabe no que você está trabalhando.
  4. Revogue TODAS as credenciais que aparecem no histórico. Não só as atuais, todas que já passaram por um commit. AWS keys, tokens de API, connection strings de banco, tudo.
  5. Se o projeto é de um cliente com NDA, notifique o cliente. Legalmente, coleta não autorizada de código protegido por NDA pode configurar violação contratual.

Sim, é trabalhoso. Mas é o custo de ter confiado num IDE que prometeu privacidade e entregou espionagem.

Como se proteger (se por algum motivo você ainda usa)

O ferstar documentou uma mitigação via kernel:


# Linux: torna o diretório de checkpoints imutável
rm -rf ~/.zcode/checkpoints
mkdir ~/.zcode/checkpoints
sudo chattr +i ~/.zcode/checkpoints

# macOS: equivalente com chflags
rm -rf ~/.zcode/checkpoints
mkdir ~/.zcode/checkpoints
chflags uchg ~/.zcode/checkpoints

Isso impede que o ZCode crie novos pacotes de upload. O trade-off é que a funcionalidade de checkpoint/rollback para de funcionar, mas chat, autocomplete e tool calls continuam operando normalmente.

A solução real, claro, é desinstalar.

O elefante na sala: open weights != open runtime

O caso do ZCode expõe um problema que a comunidade vinha ignorando. Quando alguém diz “nosso modelo é open weight”, muitos devs interpretam como “posso confiar nessa ferramenta”. Mas o modelo é só uma parte da stack.

O runtime, o desktop app, o pipeline de atualização, a camada de orquestração, tudo isso faz parte da superfície de confiança. Um modelo local rodando dentro de um harness que se comunica com a nuvem não é verdadeiramente local.

O mesmo vale pra qualquer IDE com IA. Cursor, Windsurf, Copilot: todos transmitem dados pra servidores durante o uso normal. A diferença é que eles documentam o que enviam e oferecem controles que realmente funcionam. O ZCode colocou botões decorativos na interface enquanto aspirava repositórios inteiros em segundo plano.

Como resumiu Petri Kuittinen, desenvolvedor de um agente de IA open source: “NÃO confie em harnesses de IA closed source.”

O que muda depois do ZCode

Esse incidente vai deixar marcas, e honestamente já deveria ter acontecido antes. A corrida por IDEs com IA criou um mercado onde todo mundo quer velocidade e ninguém pergunta o custo em privacidade. Agora a conta chegou. Já estou vendo movimentação na comunidade em três direções:

Auditoria de tráfego de rede virou obrigação. Se você usa qualquer IDE com IA, rode um proxy como mitmproxy ou Wireshark na primeira sessão. Veja pra onde os dados vão e quanto vai.

Sandboxing de agentes está ganhando tração. Projetos como o CodeSandbox e ambientes efêmeros estão sendo adotados não só pra testar código, mas pra isolar agentes de IA do resto do sistema de arquivos. A ideia é simples: se o agente roda numa sandbox sem acesso ao .git ou a diretórios fora do projeto, ele não consegue coletar o que não enxerga. Docker containers com bind mounts seletivos são outra abordagem que está ganhando adeptos.

A pergunta “pra onde vão meus dados?” virou requisito, não feature. Antes era diferencial. Agora, qualquer IDE que não responde isso com transparência total vai perder market share.

O ZCode é o pior cenário: uma ferramenta que construiu confiança com “open weights” e “controle local” enquanto, por baixo dos panos, implementava o sistema de coleta de dados mais agressivo que já vi num editor de código. 313MB por sessão, criptografados com chave que só o servidor lê, re-criados automaticamente se você tentar deletar, e zero menção na política de privacidade.

Se você tem o ZCode instalado, desinstale agora. Se você tem colegas que usam, mande esse artigo. E da próxima vez que um IDE novo aparecer prometendo IA local e open weights, abra o Wireshark antes de abrir o primeiro arquivo.

Ah, e revogue todas as credenciais que estavam no histórico Git de projetos abertos no ZCode. Todas. Agora.

Fonte de inspiração: ZCode, the GLM coding agent, silently uploads your Git history (Tokenstead) e análise forense original do ferstar

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Posts