Vazamento do Código-Fonte do Claude Code: Tudo Que Foi Revelado
Anthropic vazou acidentalmente 512 mil linhas do código-fonte do Claude Code via npm. Source maps, features secretas, KAIROS e mais — o que isso significa.
Vazamento do Código-Fonte do Claude Code: Tudo Que Foi Revelado
Um arquivo de debug esquecido no npm expôs a arquitetura interna, features secretas e o roadmap do Claude Code. Aqui está o que importa.
Contexto
Em 31 de março de 2026, alguém na Anthropic cometeu um erro que virou o assunto mais comentado da comunidade dev: publicou uma atualização do Claude Code no npm com um arquivo que não deveria estar lá.
O resultado? 512 mil linhas de código TypeScript, cerca de 1.900 arquivos internos, e um nível de acesso ao funcionamento interno do Claude Code que ninguém de fora jamais teve. O repositório espelhado no GitHub ultrapassou 84 mil stars em poucas horas. O post original no X acumulou mais de 21 milhões de visualizações.
A Anthropic confirmou o incidente, classificou como erro humano de empacotamento e garantiu que nenhum dado de cliente ou credencial foi exposto. Mas o estrago à propriedade intelectual já estava feito.
Como Aconteceu
O culpado foi um source map — um arquivo de debug com extensão .map que permite reconstruir código-fonte original a partir de JavaScript compilado. Desenvolvedores usam source maps para depuração, mas eles nunca devem ir para produção.
A versão 2.1.88 do pacote @anthropic-ai/claude-code no npm incluiu um arquivo cli.js.map de 59,8 MB. Dentro dele, um campo chamado sourcesContent continha o texto integral de cada arquivo-fonte do projeto — TypeScript legível, com comentários, nomes de variáveis e tudo mais.
Boris Cherny, engenheiro do Claude Code na Anthropic, confirmou no X que foi erro humano puro, não falha de tooling. Alguém esqueceu de adicionar *.map ao .npmignore. Três caracteres que teriam evitado tudo.
O detalhe irônico: um bug reportado no Bun (o runtime que a Anthropic usa para o Claude Code) em 11 de março de 2026 já alertava que source maps estavam sendo servidos em modo de produção, contrariando a documentação do próprio Bun. O bug continua aberto.
O Que Foi Encontrado
O código vazado revelou não apenas como o Claude Code funciona por dentro, mas também features que ainda não foram lançadas, mecanismos de defesa contra concorrentes e decisões de arquitetura que a Anthropic claramente não queria tornar públicas.
KAIROS: o agente autônomo que trabalha sozinho
A descoberta mais impactante. Escondido atrás de feature flags chamados PROACTIVE e KAIROS, existe um modo de agente autônomo totalmente construído mas não lançado.
O Claude Code que todo mundo conhece é reativo — só age quando recebe uma mensagem. O KAIROS é proativo. Ele roda em background, 24/7, sem precisar de input humano. A cada poucos segundos, recebe um heartbeat perguntando: "tem algo que vale a pena fazer agora?"
O que o KAIROS pode fazer:
- Monitorar e agir sozinho: corrigir erros, atualizar arquivos, responder a mensagens
- Push notifications: avisar no celular ou desktop mesmo com o terminal fechado
- Assinar pull requests: reagir automaticamente a mudanças de código no GitHub
- Memória persistente: manter logs diários do que observou e fez, com um processo noturno chamado
autoDreamque consolida e reorganiza a memória
Fechar o laptop na sexta e abrir na segunda — o KAIROS continua trabalhando o tempo todo. A separação entre iniciativa e execução é uma decisão arquitetural significativa. Significa que o agente precisa decidir sozinho o que vale a pena fazer, o que exige um modelo de confiança fundamentalmente diferente.
Anti-distillation: envenenando quem tentar copiar
O Claude Code envia requests com uma flag anti_distillation: ['fake_tools'] que injeta definições de ferramentas falsas no system prompt. O objetivo: se algum concorrente estiver gravando o tráfego de API do Claude Code para treinar seu próprio modelo, os dados de treinamento ficam contaminados.
Existe uma segunda camada chamada CONNECTOR_TEXT: o servidor resume o texto do assistente entre chamadas de ferramentas, devolve apenas os resumos com assinaturas criptográficas, e descarta o raciocínio completo. Quem interceptar o tráfego recebe resumos, não as cadeias de raciocínio reais.
Na prática, ambos os mecanismos são contornáveis. Um proxy que remove o campo anti_distillation dos requests antes de chegarem à API já desativa a injeção de tools falsas. A variável de ambiente CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS desliga tudo. A proteção real contra distillation é provavelmente jurídica, não técnica.
Undercover mode: IA que esconde que é IA
O arquivo undercover.ts (~90 linhas) implementa um modo que remove todos os rastros da Anthropic quando o Claude Code é usado em repositórios que não são internos. Ele instrui o modelo a nunca mencionar codinomes internos como "Capybara" ou "Tengu", canais internos do Slack, nomes de repositórios, ou até a frase "Claude Code".
A parte polêmica: não existe botão para desligar. O código tem um comentário explícito: "There is NO force-OFF. This guards against model codename leaks." Em builds externos, a função inteira é eliminada por dead-code elimination. É uma porta de mão única.
O que isso significa na prática: commits e pull requests feitos por funcionários da Anthropic usando Claude Code em projetos open source não indicam que foram escritos por IA. O modelo é instruído a escrever mensagens de commit "como um desenvolvedor humano faria". Esconder codinomes internos é razoável. Ter a IA ativamente fingindo ser humana é outra questão.
DRM abaixo do JavaScript
Requests de API incluem um placeholder (cch=8f037) que o Bun — escrito em Zig — sobrescreve com um hash computado antes de enviar. O servidor valida esse hash para confirmar que o request veio de um binário genuíno do Claude Code, não de um client terceiro.
A computação acontece abaixo do runtime JavaScript, invisível a qualquer código rodando na camada JS. É basicamente DRM para chamadas de API. Isso explica por que ferramentas como o OpenCode enfrentaram resistência técnica (além da legal) ao tentar usar as APIs da Anthropic.
Detecção de frustração — via regex
O arquivo userPromptKeywords.ts contém uma expressão regular que detecta frustração do usuário:
/\b(wtf|wth|ffs|shit(ty)?|horrible|awful|
fucking? (broken|useless|terrible)|fuck you|
so frustrating|this sucks|damn it)\b/
Uma empresa de LLM usando regex para análise de sentimento é ironia pura. Mas também faz sentido: um regex é mais rápido e mais barato que uma chamada de inferência só para verificar se alguém está xingando a ferramenta.
250 mil chamadas de API desperdiçadas por dia
Um comentário no código revela que 1.279 sessões tinham 50+ falhas consecutivas de auto-compactação (até 3.272 falhas em uma única sessão), desperdiçando ~250 mil chamadas de API por dia globalmente. A correção: limitar a 3 tentativas consecutivas. Três linhas de código para parar de queimar um quarto de milhão de chamadas diárias.
BUDDY: o bichinho virtual de April Fools
O código contém o que quase certamente é a piada de 1º de abril da Anthropic: buddy/companion.ts implementa um sistema de companheiro estilo Tamagotchi. Cada usuário recebe uma criatura determinística — 18 espécies, tiers de raridade (common a legendary), 1% de chance de shiny, stats de RPG como DEBUGGING e SNARK. Os nomes das espécies são codificados com String.fromCharCode() para escapar de buscas automáticas no código.
A Arquitetura Por Trás do Claude Code
Além das features secretas, o código revelou como o "harness" — o sistema que envolve o modelo de IA — funciona. Algumas decisões arquiteturais chamaram atenção:
Prompt cache com boundary estável: O system prompt é dividido em uma metade estática (que é cacheada) e uma metade dinâmica. Isso evita que a Anthropic pague custo total de tokens a cada turno. Funções marcadas como DANGEROUS_uncachedSystemPromptSection() alertam engenheiros que alterações ali quebram o cache.
Memória em 3 camadas: Não é só "salvar um CLAUDE.md". O sistema usa um índice (sempre carregado, ~150 chars por linha), arquivos de tópico (carregados sob demanda) e transcrições (nunca carregadas diretamente — só via grep). A memória é tratada como dica, não como verdade. O agente verifica antes de usar.
Segurança de bash: Todo comando roda por 23 verificações de segurança numeradas — 18 builtins de Zsh bloqueados, defesa contra Zsh equals expansion, injeção de Unicode zero-width space, injeção de IFS null-byte, e um bypass encontrado durante revisão do HackerOne.
Coordenação multi-agente via prompt: O orquestrador de agentes não usa código para coordenar workers — usa instruções no system prompt como "Do not rubber-stamp weak work" e "You must understand findings before directing follow-up work."
Repercussão na Comunidade
A reação foi massiva e quase unânime em um ponto: a ironia. A Anthropic promove o Claude Code como uma ferramenta poderosa de código — e o próprio código vazou por um erro básico de empacotamento. Como um comentário no Hacker News resumiu: "accidentally shipping your source map to npm is the kind of mistake that sounds impossible until you remember that a significant portion of the codebase was probably written by the AI you are shipping."
Hacker News e Reddit: No r/LocalLLaMA, o thread principal passou de 3.700 upvotes, com foco no que a arquitetura revela para construir sistemas similares com modelos open-weight locais. No r/ClaudeAI, um dos posts mais votados (1.800+ upvotes) reportou que, graças ao código vazado, um dev usou o Codex da OpenAI para encontrar e corrigir a causa raiz de um consumo excessivo de tokens no Claude Code.
Replicação relâmpago: O desenvolvedor Sigrid Jin usou o Codex da OpenAI para reescrever todo o codebase de TypeScript para Python. O projeto resultante, claw-code, alcançou 50 mil stars no GitHub em cerca de duas horas. Os forks não-reescritos foram derrubados por DMCA da Anthropic, mas o claw-code continua no ar — a teoria legal é que uma reescrita clean-room feita por IA não viola copyright. Essa questão nunca foi testada em tribunal.
A polêmica do Undercover Mode: No Hacker News, a crítica mais vocal foi sobre o modo que esconde autoria de IA. A instrução explícita para escrever commits "como um desenvolvedor humano faria" gerou debates sobre transparência e ética em contribuições open source.
Perspectiva de equilíbrio: Alguns desenvolvedores minimizaram a gravidade. O CLI do Claude Code sempre foi JavaScript legível (minificado) no pacote npm. O source map apenas tornou o TypeScript original mais fácil de ler. A escala do vazamento, no entanto, é inegável — features secretas, roadmap de produto e mecanismos de defesa competitiva expostos de uma vez.
O Contexto de Segurança: Março de 2026
O vazamento não aconteceu isoladamente. Na mesma janela de 30 dias:
- Axios (100M downloads semanais no npm): conta de mantenedor comprometida, trojan de acesso remoto distribuído para macOS, Windows e Linux. O Google atribuiu o ataque a agentes norte-coreanos
- LiteLLM (95M installs mensais no PyPI): backdoor com extrator de credenciais SSH, AWS, GCP, Kubernetes e chaves de API de LLMs
- GitHub Copilot: injetou anúncios promocionais em 1,5M+ pull requests como comentários HTML ocultos
Se alguém instalou ou atualizou o Claude Code via npm em 31 de março de 2026 entre 00:21 e 03:29 UTC, pode ter recebido uma versão maliciosa do axios contendo um RAT. A Anthropic agora recomenda o instalador nativo (curl -fsSL https://claude.ai/install.sh | bash) em vez do npm.
O Que Isso Significa
O código em si pode ser refatorado. O que não pode ser "desvazado" são os detalhes estratégicos.
Para concorrentes: 44 feature flags revelaram features totalmente construídas mas não lançadas. O KAIROS, os mecanismos anti-distillation, os codinomes de modelos futuros (Capybara v8, Numbat, Fennec) — tudo isso é informação de roadmap que concorrentes podem usar para antecipar movimentos.
Para desenvolvedores: O harness do Claude Code é uma masterclass em engenharia de agentes de IA. Prompt cache com boundary estável, memória em camadas, segurança de bash com 23 checks, coordenação multi-agente via prompt. Mesmo com o código sendo removido, os padrões arquiteturais já foram absorvidos pela comunidade.
Para o ecossistema: A questão legal de clean-room rebuilds via IA está aberta. Se apontar um agente de IA para uma base de código e pedir para reescrever em outra linguagem não viola copyright, a barreira prática para replicar qualquer software proprietário acaba de cair drasticamente.
Para a Anthropic: Uma empresa que vende a capacidade da IA de escrever e revisar código teve seu próprio código vazado por um .npmignore incompleto. A ironia dói, mas a resposta importa mais que o erro. A Anthropic adotou post-mortem blameless, tratando como falha de processo e não de indivíduo. O que realmente conta é o que muda no pipeline de release daqui para frente.
Referências
- The Claude Code Source Leak: fake tools, frustration regexes, undercover mode, and more — Análise técnica detalhada das descobertas no código vazado
- Diving into Claude Code's Source Code Leak — Breakdown arquitetural do harness, KAIROS e anti-distillation
- Claude Code Source Leaked via npm Packaging Error, Anthropic Confirms — Confirmação oficial da Anthropic e timeline do incidente
- Anthropic accidentally exposes Claude Code source code — Cobertura jornalística do The Register com contexto de segurança
- Claude Code's source code appears to have leaked: here's what we know — Reportagem do VentureBeat sobre o incidente e ataque ao axios
- Claude Code source code has been leaked via a map file in their NPM registry — Hacker News — Thread original no Hacker News com reações da comunidade dev
- Código fonte do Claude Code é exposto — Exame — Cobertura em português com contexto para o mercado brasileiro