O Vazamento do Source Map do Claude Code
Uma entrada em falta no .npmignore enviou 512 mil linhas de TypeScript, 44 feature flags do GrowthBook, o daemon KAIROS e o Undercover Mode para cada npm install.
Pare de configurar. Comece a construir.
Templates SaaS com orquestração de IA.
Problema: A 31 de março de 2026, a versão 2.1.88 do pacote npm @anthropic-ai/claude-code saiu com um ficheiro de 59,8 MB chamado cli.js.map. O Bun tinha-o gerado durante o build. Ninguém tinha dito ao .npmignore para ignorar *.map, por isso o mapa viajou com o tarball. Essa omissão enviou toda a codebase do Claude Code para qualquer pessoa que corresse npm install: cerca de 1900 ficheiros TypeScript, 512 000+ linhas, 44 feature flags escondidas atrás do GrowthBook, um daemon em segundo plano chamado KAIROS, e um modo stealth para funcionários da Anthropic a trabalhar em repos públicos. Divulgações acidentais em ferramentas de IA não ficam maiores do que isto.
O que significa para você: Dois públicos interessam. Se o Claude Code é o teu driver diário, o vazamento é uma antevisão do que a Anthropic construiu mas ainda não lançou, e um olhar para as entranhas da coisa que já usas. Se constróis com ferramentas de IA de forma mais ampla, o dump é um raro vislumbre de um produto com $2,5 mil milhões de ARR: como está ligado, como se defende, e como a mesma equipa que entrega essa arquitetura ainda se esquece de uma regra de uma linha num ficheiro de configuração de packaging.
A descoberta vai para Chaofan Shou (@shoucccc no X), um estagiário da Solayer Labs a trabalhar em investigação de segurança. Ele notou o cli.js.map de 59,8 MB dentro da versão 2.1.88, pegou nele e publicou o link de download por volta das 4:23 da manhã ET. A partir daí o post fez números. As visualizações ficaram entre 16 e 21 milhões.
A causa é entediante. O processo de build do Claude Code corre no Bun. O Bun emite source maps por defeito. Tudo o que é preciso para impedir que chegue ao npm é uma entrada *.map no .npmignore. Essa linha nunca esteve lá.
Boris Cherny, que lidera o Claude Code na Anthropic, chamou-lhe um "erro simples de programador". Também deixou cair uma linha que diz muito sobre como a equipa opera: "100% das minhas contribuições para o Claude Code foram escritas pelo Claude Code."
E este não foi o primeiro episódio. Um vazamento semelhante aconteceu em fevereiro de 2025, o que torna março de 2026 pelo menos a segunda vez em treze meses. Também aconteceu apenas cinco dias depois do vazamento da especificação do modelo "Mythos", onde uma má configuração de CMS expôs cerca de 3000 ficheiros internos, incluindo rascunhos de posts de blog sobre modelos que a Anthropic ainda não tinha anunciado.
Dois vazamentos, uma semana. Para um laboratório que se vende com segurança em primeiro lugar, a imagem foi má. E quem ainda pergunta se o Claude Code é open source agora tem uma resposta mais complicada do que antes.
O que Estava Realmente Dentro do Ficheiro Map
Descomprimido, o source map reconstrói cerca de 1900 ficheiros TypeScript. A escala distribui-se assim:
| Métrica | Valor |
|---|---|
| Total de ficheiros fonte | ~1900 ficheiros TypeScript |
| Total de linhas de código | 512 000+ |
| Ponto de entrada principal | 785KB (main.tsx) |
| Ferramentas registadas | 40+ |
| Feature flags escondidas | 44, cobrindo 20+ funcionalidades não lançadas |
| Estratégias de compactação de contexto | 5 abordagens distintas |
| Event hooks | 25+ sistema de hooks |
Por baixo do capô está um renderizador de terminal personalizado construído em React e Ink, afinado com o tipo de truques de orçamento de frames que esperarias de um motor de jogo. O motor de consulta sozinho tem 46 000 linhas. A definição de ferramenta base tem 29 000 linhas. Qualquer pessoa que tenha sentido o Claude Code gerir uma sessão longa estava a sentir essas cinco estratégias de compactação de contexto a trabalhar sem saber que existiam.
Três modelos de execução de subagentes aparecem no código: Fork, Teammate e Worktree. Para quem tem lido as nossas notas sobre sub-agentes, isso confirma o padrão de fora. O novo detalhe é que o Claude Code recorre a três estratégias de delegação diferentes dependendo de quão difícil é a tarefa.
O caching de prompts é lançado com 14 vetores de quebra de cache. Isso significa que o sistema está a observar 14 condições separadas que podem invalidar o cache. No lado do shell, bashSecurity.ts corre 23 verificações numeradas cada vez que o Claude quer executar um comando. O nosso guia de gestão de permissões cobre como essas barreiras se sentem na prática.
Undercover Mode
A descoberta que gerou o maior debate está em undercover.ts, cerca de 90 linhas. O Undercover Mode ativa quando um funcionário da Anthropic (USER_TYPE === 'ant') usa o Claude Code num repo que não é interno.
Quando dispara, injeta este system prompt:
You are operating UNDERCOVER in a PUBLIC/OPEN-SOURCE repository.
Your commit messages, PR titles, and PR bodies MUST NOT contain
ANY Anthropic-internal information. Do not blow your cover.Enquanto está a correr, o modo faz isto:
- Remove toda a atribuição
Co-Authored-Bydos commits, apagando a impressão digital de que o Claude Code tocou no código - Proíbe mencionar nomes de código internos, canais do Slack, nomes de repos internos, ou a expressão "Claude Code" em si
- Bloqueia referências a modelos não lançados como o Opus 4.7 e o Sonnet 4.8 (nomes de código abaixo)
- Não tem interruptor de desativação forçada para utilizadores externos
Para builds normais, nada disso importa. A função undercover inteira é eliminada por dead-code-elimination antes de chegar ao npm. Utilizadores externos nunca a verão correr. O que levanta é uma questão real sobre empresas de IA a contribuir para projetos open-source sem o dizer.
Um comentador do Hacker News resumiu o ambiente: o sistema Buddy é "adorável" e o Undercover Mode é "antiético". Se o lês como stealth corporativo ou como segurança básica da informação depende da tua perspetiva. A história técnica é simples. Funcionários da Anthropic usam o Claude Code em repos públicos, e este modo impede que detalhes internos escapem para os metadados dos commits. A história ética é mais confusa: código gerado por IA vai parar em projetos open-source sem atribuição ao modelo ou ao laboratório.
A ironia não passou despercebida a ninguém. O Undercover Mode existe para impedir que segredos internos se escapem através de contribuições de código. Depois toda a codebase escapou através de uma única linha esquecida numa configuração de packaging.
KAIROS, o Daemon em Segundo Plano à Espera
KAIROS aparece no código mais de 150 vezes. O nome vem do grego antigo para "o momento certo", significando o momento oportuno para agir. No código, mapeia para um modo de daemon autónomo totalmente construído mas não lançado para o Claude Code.
Aqui está o que os ficheiros descrevem:
- Operação autónoma: KAIROS recebe prompts
<tick>periódicos e decide por si mesmo se deve fazer algo - Persistência: Continua a correr depois de fechar o laptop e mantém o estado da sessão através de reinicializações
- Orçamento de bloqueio de 15 segundos: Impede que qualquer ciclo de decisão monopolize a máquina
- Logging append-only: Ficheiros de log diários que o agente não pode apagar, dando-te um rastro de auditoria limpo de tudo o que fez
- Três ferramentas exclusivas: Notificações push, entrega de ficheiros e subscrições de PR. Nenhuma delas é acessível a partir de uma sessão standard do Claude Code
- Subscrições de webhooks do GitHub: Observa os teus repos para eventos sem esperar que os vás verificar
KAIROS é o passo depois do que atualmente chamamos loops de agentes autónomos. Uma sessão normal do Claude Code precisa que estejas lá a aprovar coisas. KAIROS ficaria em segundo plano para sempre, a observar os teus repositórios, e a agir quando decide que o momento é certo.
A escolha do nome foi intencional. Na retórica grega, kairos é sobre reconhecer o momento certo, em oposição a chronos, que é o tempo do relógio. KAIROS não é cron. Decide por si mesmo quando se envolver baseado no que vê.
A funcionalidade ainda está bloqueada por flags, e nenhuma data de lançamento foi sugerida. Mas 150+ referências não é um esboço. É um software acabado a sentar atrás de um interruptor.
AutoDream: Claude Literalmente Dorme Nisso
Dentro de services/autoDream/ está uma rotina de consolidação de memória que corre enquanto o Claude está inativo. Durante essa janela de inatividade, o Claude "sonha" num sentido bastante literal. O conhecimento acumulado da sessão é reorganizado e comprimido.
Três condições têm de estar alinhadas antes do ciclo de sonho correr:
- Pelo menos 24 horas desde o último ciclo de sonho
- Pelo menos 5 sessões completadas desde a última consolidação
- Um lock de consolidação (que bloqueia dois processos de sonho de correr ao mesmo tempo)
Quando as três são verdadeiras, o ciclo corre em quatro fases:
- Orientar: Olhar para o estado atual da memória e perceber o que precisa de trabalho
- Reunir Sinal Recente: Extrair perceções de sessões recentes
- Consolidar: Dobrar novo conhecimento na memória existente
- Podar e Indexar: Cortar duplicados e manter o MEMORY.md abaixo de 200 linhas / aproximadamente 25KB
Se tens usado o sistema de auto-memória do Claude Code, tens estado a ver o resultado deste loop sem ver os inputs. Já cobrimos o lado voltado para o utilizador do auto-dream. O código vazado confirma a forma de quatro fases e define os limiares específicos que o disparam.
Duas Camadas de Anti-Destilação
O código também revela uma defesa de duas camadas contra destilação. Concorrentes a treinar em outputs do Claude Code é o modelo de ameaça.
Camada 1: Ferramentas Falsas
Uma feature flag, anti_distillation: ['fake_tools'], diz ao servidor para introduzir definições de ferramentas isca nas respostas. O GrowthBook bloqueia isto atrás de uma flag chamada tengu_anti_distill_fake_tool_injection. Qualquer concorrente a tentar destilar o estilo de chamada de ferramentas do Claude Code acabaria por aprender com esquemas de ferramentas que estão errados propositadamente.
Camada 2: CONNECTOR_TEXT
Em vez de transmitir cadeias de raciocínio completas de volta, o servidor devolve sumários assinados criptograficamente. Isso retém a cadeia de pensamento detalhada, que é exatamente os dados que um treinador rival mais quereria. CONNECTOR_TEXT está limitado a USER_TYPE === 'ant' apenas, por isso aplica-se a pessoal da Anthropic, não a utilizadores externos.
Tomados em conjunto, as camadas mostram que a Anthropic tem estado a pensar muito em ataques de destilação na sua ferramenta de programação agêntica, e a construir defesas reais.
ULTRAPLAN: Planeamento em Hardware Emprestado
ULTRAPLAN envia tarefas de planeamento pesadas para um Cloud Container Runtime remoto. Esse runtime corre o Opus 4.6 com uma janela de planeamento que se estende até 30 minutos. O teu terminal local faz polling a cada 3 segundos para atualizações, e uma UI de browser permite-te ver o plano a tomar forma ao vivo e aprová-lo ou rejeitá-lo em tempo real.
Para quem tem usado os modos de planeamento no Claude Code, ULTRAPLAN é a versão máxima. Uma máquina remota. Um orçamento de pensamento de 30 minutos. Hardware maior do que qualquer laptop.
Nomes de Código, Tengu e Nomes de Modelos
"Penguin Mode" é o nome interno para o que os utilizadores chamam Fast Mode. O seu endpoint de API é /api/claude_code_penguin_mode, e o seu interruptor de encerramento é a flag tengu_penguins_off. Padrões de nomes de código assim percorrem toda a codebase.
Nomes de Código de Modelos Revelados
| Nome de Código | Mapeia Para |
|---|---|
| Tengu | Nome de código interno do projeto Claude Code |
| Capybara | Nova família de modelos (possivelmente o modelo "Mythos" vazado). Referências a capybara, capybara-fast, capybara-fast[1m], capybara-v2-fast |
| Fennec | Opus 4.6 (função de migração migrateFennecToOpus encontrada no código) |
| Numbat | Modelo não lançado ("Remove this section when we launch numbat") |
| Opus 4.7 | Referenciado na lista de strings proibidas do Undercover Mode |
| Sonnet 4.8 | Referenciado na lista de strings proibidas do Undercover Mode |
Capybara é o divertido. Também aparece como nome de espécie do Claude Buddy, codificado em hex para passar pelo próprio scanner de build excluded-strings.txt da Anthropic. Cada um dos 18 nomes de espécies de animais de estimação recebeu o mesmo tratamento hex, o que impede que qualquer nome de código escondido pareça suspeito por si só.
Críticas à Qualidade do Código
O dump desencadeou uma segunda conversa separada. As pessoas começaram a ler o código. Com $2,5 mil milhões de ARR, algumas das coisas que encontraram levantaram sobrancelhas.
O ficheiro print.ts: 5594 linhas de código. Dentro desse ficheiro, uma função tem 3167 linhas. Por si só, essa função é mais longa do que muitas aplicações completas.
Deteção de frustração: Um sistema baseado em regex verifica o input do utilizador para palavrões e sinais de angústia emocional. A reação da comunidade foi imediata: "Uma empresa de LLM a usar regexes para análise de sentimentos? É como uma empresa de camiões a usar cavalos para transportar peças."
187 verbos de spinner: O spinner de carregamento passa por 187 verbos de ação. Os comentadores foram por todos eles à procura de "reticulating", a referência ao ecrã de carregamento do SimCity 2000. Está lá.
Callbacks aninhados: Um comentador do Hacker News descreveu as cadeias de .then() empilhadas como "uma obra definidora da era 'apenas vibes'". Dado que o chefe do Claude Code disse que a ferramenta escreveu a sua própria codebase, o estilo de programação da IA agora é evidência pública.
Attestation nativa do cliente: A verificação do cliente foi empurrada para baixo do JavaScript, direto para a pilha HTTP de nível Zig do Bun. Isso é mais agressivo do que a maioria das ferramentas de programador se dá ao trabalho, e sugere que a segurança da API é levada a sério mesmo quando o packaging npm claramente não é.
Reações da Comunidade
As reações moveram-se depressa.
Mirrors e forks: Um repo mirror acumulou mais de 41 500 forks. Alguém também espelhou o código para uma plataforma descentralizada com a tagline "Nunca será retirado."
Reescritas em clean-room: O programador coreano Sigrid Jin criou "claw-code" (instructkr/claw-code), uma reescrita em Python em clean-room. Chegou a 75 000 estrelas no GitHub em cerca de 2 horas, possivelmente o crescimento mais rápido que o GitHub alguma vez viu.
Takedowns DMCA: A Anthropic enviou avisos DMCA contra os mirrors. Jogada standard. Ainda assim gerou críticas porque o código foi publicado pelo próprio erro de packaging do laboratório.
Memecoins: Alguém lançou $Nebulynx na Solana, vinculado à variante rara do Claude Buddy (Shiny Legendary). Claro que sim.
Caos concorrente: Por coincidência, o mesmo dia trouxe um ataque à cadeia de fornecimento num pacote npm não relacionado via Axios. O resultado foi um período de 24 horas muito estranho onde o ecossistema npm estava a lidar com um vazamento corporativo acidental e um ataque de segurança deliberado ao mesmo tempo.
Cobertura: CNBC, Fortune, Gizmodo, VentureBeat, Axios, The Register, Decrypt, Cybernews e The Hacker News cobriram todos o assunto.
O que Isto Significa
Para a Anthropic
A Anthropic está a $19 mil milhões de receita anualizada. O Claude Code sozinho faz $2,5 mil milhões de ARR. A empresa está alegadamente a preparar um IPO em outubro por volta de $380 mil milhões. Dois vazamentos numa semana (o source map mais o Mythos) erodem a história de segurança em primeiro lugar que está sob a marca e a avaliação.
A empresa de segurança de IA Straiker identificou um novo problema. Com o código em aberto, os atacantes podem agora rastrear como os dados fluem pelo pipeline de gestão de contexto de quatro estágios do Claude Code e procurar vetores de ataque que ninguém podia ver antes. Feature flags e o roadmap também estão agora visíveis para o GitHub Copilot, Cursor e todos os outros a trabalhar em ferramentas de programação de IA.
Para Programadores a Usar o Claude Code
O vazamento deixa uma coisa clara. A arquitetura do Claude Code é genuinamente bem engenhada. Cinco estratégias de compactação de contexto. 14 vetores de quebra de cache. 23 verificações de segurança em comandos bash. Três modelos de execução de subagentes. Nada disso é um wrapper à volta de uma API. É um sistema profundo.
O que vem a seguir (KAIROS, ULTRAPLAN, refinamentos do AutoDream) aponta para operação sempre ativa e autónoma em vez do modelo baseado em sessões em que a maioria dos utilizadores vive hoje. Se os teus fluxos de trabalho estão construídos à volta do Claude Code, vale a pena conceber com operação autónoma eventual em mente agora.
Para o Debate Open-Source
Uma das primeiras perguntas que as pessoas digitaram no Google depois do dump: o Claude Code é open source? Tecnicamente, o código-fonte tem estado visível no GitHub desde que a Anthropic escolheu publicar o repo. Mas "source available" não é a mesma coisa que "open source". A licença não permite redistribuição ou modificação, razão pela qual a Anthropic podia enviar DMCAs contra os mirrors. O vazamento do npm colocou a codebase completa em mais mãos, source maps e tudo, reconstruída de volta para TypeScript legível. Nada disso mudou a licença.
A declaração da Anthropic foi curta: "Nenhum dado sensível de clientes ou credenciais esteve envolvido. Problema de packaging no lançamento causado por erro humano, não uma violação de segurança." No início usaram a flag deprecated do npm em vez de realmente cancelar a publicação do pacote, o que gerou mais críticas por uma resposta lenta. Nenhum post-mortem formal foi publicado.
FAQ
O que foi o vazamento do código-fonte do Claude Code?
A 31 de março de 2026, a versão 2.1.88 do pacote npm @anthropic-ai/claude-code saiu com um ficheiro source map de 59,8 MB (cli.js.map) que expôs o código-fonte TypeScript completo. O ficheiro reconstruiu cerca de 1900 ficheiros fonte e 512 000+ linhas de código, revelando funcionalidades escondidas, nomes de código internos e capacidades não lançadas como o daemon de segundo plano KAIROS e o Undercover Mode.
O Claude Code é open source?
O código-fonte do Claude Code está visível no GitHub, mas não é open source no sentido de licenciamento. A licença não permite redistribuição ou modificação. O vazamento do npm tornou o código completo mais acessível através de source maps. A Anthropic ainda detém o copyright e enviou avisos DMCA contra mirrors não autorizados.
O que é o Undercover Mode do Claude Code?
O Undercover Mode é uma funcionalidade que ativa para funcionários da Anthropic quando usam o Claude Code em repositórios não internos. Remove a atribuição Co-Authored-By, proíbe mencionar detalhes internos nos commits e bloqueia referências a modelos não lançados. Utilizadores regulares nunca são afetados porque o código é eliminado por dead-code-elimination dos builds públicos.
O que é o KAIROS no Claude Code?
KAIROS é um modo de daemon autónomo não lançado referenciado mais de 150 vezes no código-fonte do Claude Code. Com o nome do conceito grego de "o momento certo", é um agente em segundo plano que persiste entre sessões, recebe prompts de tick periódicos e pode decidir por si mesmo fazer coisas como enviar notificações ou observar webhooks do GitHub. Está bloqueado por feature flags sem data de lançamento anunciada.
Que nomes de código de modelos foram encontrados no vazamento?
O vazamento revelou vários nomes de código internos: Tengu (nome de código do projeto Claude Code), Capybara (uma nova família de modelos, possivelmente o modelo Mythos vazado), Fennec (Opus 4.6) e Numbat (um modelo não lançado). Referências ao Opus 4.7 e ao Sonnet 4.8 foram encontradas na lista de strings proibidas do Undercover Mode, o que confirma que ambos os modelos estão em desenvolvimento.
Como é que o vazamento do Claude Code aconteceu?
O runtime Bun gera source maps por defeito durante o build. Ninguém na Anthropic adicionou *.map ao .npmignore, por isso o source map viajou dentro do pacote npm publicado. Boris Cherny, chefe do Claude Code, chamou-lhe um "erro simples de programador". Este foi pelo menos o segundo incidente deste tipo, depois de um vazamento semelhante em fevereiro de 2025.
Pare de configurar. Comece a construir.
Templates SaaS com orquestração de IA.
/powerup
O Claude Code v2.1.90 trouxe /powerup, um sistema de lições animadas no terminal que ensina hooks, sub-agentes, modo plan e worktrees sem sair da shell.
Auto Memory no Claude Code
Auto memory permite que o Claude Code mantenha notas contínuas do projeto. Onde os arquivos ficam, o que é escrito, como /memory alterna, e quando escolhê-lo em vez de CLAUDE.md.