19 pontos por GN⁺ 2026-04-01 | 3 comentários | Compartilhar no WhatsApp
  • A Anthropic distribuiu um pacote npm incluindo source maps, o que acabou expondo todo o código do Claude Code e revelando funções internas e flags experimentais
  • O código inclui injeção de ferramentas falsas para impedir imitação de modelo (anti-distillation), modo undercover para esconder a identidade de IA e uma regex de frustração para detectar palavrões
  • Há uma estrutura de atestado de cliente nativo e verificação de hash em nível de DRM, projetada para bloquear o acesso à API por ferramentas não oficiais
  • Comentários internos mostram 250 mil chamadas de API com falha por dia, o inacabado modo de agente autônomo KAIROS e um sistema de companheiro no estilo Tamagotchi, entre outros recursos experimentais
  • Este vazamento expôs a estrutura central do produto e o roadmap da Anthropic, e levanta a hipótese de que um bug de source maps no runtime Bun tenha sido a causa

Estrutura interna do Claude Code revelada por vazamento de source maps

  • A Anthropic distribuiu um pacote npm incluindo source maps, o que expôs todo o código-fonte do Claude Code
    • O pacote depois foi removido, mas o código foi espelhado em vários lugares e passou a ser analisado
    • Foi o segundo vazamento em uma semana; antes disso, um documento de especificação do modelo já havia sido exposto
    • Isso aconteceu logo após a Anthropic bloquear legalmente o uso de APIs internas por ferramentas de terceiros
  • Anti-distillation: injeção de ferramentas falsas para impedir imitação

    • Em claude.ts, existe a flag ANTI_DISTILLATION_CC; quando ativada, ela inclui anti_distillation: ['fake_tools'] na requisição da API e injeta definições de ferramentas falsas no prompt de sistema
      • O objetivo é contaminar tentativas de capturar tráfego da API para imitar o modelo
      • Só funciona em sessões primárias de CLI com a flag do GrowthBook tengu_anti_distill_fake_tool_injection ativada
    • Em betas.ts, há um segundo mecanismo: uma proteção do lado do servidor baseada em resumos
      • O texto entre chamadas de ferramentas é resumido e retornado com uma assinatura criptográfica, podendo depois ser restaurado
      • Mesmo registrando o tráfego externamente, não é possível ver todo o processo de raciocínio
    • Esse recurso exige várias condições ao mesmo tempo e pode ser neutralizado removendo campos via proxy MITM
      • Também pode ser desativado com a variável de ambiente CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS
      • Pela condição USER_TYPE === 'ant', é exclusivo para usuários internos da Anthropic
    • Na prática, a defesa se parece mais com uma restrição legal do que com uma barreira técnica forte
  • Undercover mode: modo para ocultar a identidade de IA

    • undercover.ts remove codinomes internos da Anthropic, canais do Slack e a expressão “Claude Code” quando usado em repositórios externos
      • A frase "There is NO force-OFF" indica que não pode ser desativado
      • Pode ser forçado com a variável de ambiente CLAUDE_CODE_UNDERCOVER=1
    • Em builds externas, a função é reduzida a um retorno sem efeito, formando uma estrutura de mão única
    • Com isso, quando funcionários da Anthropic contribuem para projetos open source, não há indicação de que o conteúdo foi escrito por IA
      • Embora ocultar informações internas seja compreensível, isso também faz a IA se passar por humana
  • Frustration regex: regex para detectar palavrões

    • Em userPromptKeywords.ts, há padrões de regex para detectar insatisfação e xingamentos do usuário
      • Expressões como “wtf”, “this sucks” e “fuck you” são detectadas
    • Isso mostra a ironia de uma empresa de LLM usar regex para análise de sentimentos,
      • mas faz sentido em custo e velocidade quando comparado a chamar um LLM
  • Native client attestation: autenticação do cliente abaixo do runtime JS

    • Em system.ts, as requisições de API incluem o placeholder cch=00000, e
      • a stack HTTP nativa do Bun, baseada em Zig, substitui isso por um hash
      • o servidor verifica esse hash para confirmar se o binário é o Claude Code oficial
    • Isso funciona como base técnica da disputa legal com o OpenCode,
      • realizando uma verificação em nível de DRM para impedir que ferramentas de terceiros chamem a API diretamente
    • Porém, isso não funciona se a flag NATIVE_CLIENT_ATTESTATION estiver desligada ou
      • se CLAUDE_CODE_ATTRIBUTION_HEADER estiver desativado
      • a substituição do hash em Zig só funciona no binário oficial do Bun, sendo inválida em ambiente Node
    • Não está claro se o servidor rejeita hashes incorretos,
      • e há um comentário de que _parse_cc_header permite “unknown extra fields”
  • 250 mil chamadas de API desperdiçadas

    • Segundo um comentário em autoCompact.ts,
      • cerca de 250 mil chamadas de API por dia estavam sendo desperdiçadas em loops de falha
      • em 1.279 sessões houve mais de 50 falhas consecutivas, com máximo de 3.272
    • A correção tinha apenas 3 linhas: ao definir MAX_CONSECUTIVE_AUTOCOMPACT_FAILURES = 3,
      • a compactação automática passa a ser desativada após 3 falhas seguidas
  • KAIROS: modo de agente autônomo ainda não lançado

    • Ao longo do código existe um modo sob feature gate chamado KAIROS
      • Segundo main.tsx, ele parece ser um recurso de agente autônomo
      • inclui a skill /dream (destilação de memória noturna), webhook do GitHub, daemon em segundo plano e refresh por cron a cada 5 minutos
    • A implementação está incompleta, mas já existe uma estrutura baseada em agente em segundo plano sempre ativo
  • Outras descobertas

    • Easter egg de 1º de abril: em buddy/companion.ts existe um sistema de companheiro no estilo Tamagotchi
      • Com 18 criaturas, raridade, atributos de RPG e uma versão “shiny” com chance de 1%
      • Determinado por PRNG baseada no ID do usuário, com codificação de strings para evitar detecção na build
    • O motor de renderização de terminal (ink/screen.ts, ink/optimizer.ts)
      • implementa buffer ASCII baseado em Int32Array, metadados em estilo bitmask e cache com ganho de desempenho de 50x
    • A verificação de segurança (bashSecurity.ts) tem 23 etapas,
      • bloqueando comandos embutidos do Zsh, impedindo bypass com =curl e barrando injeções com zero-width Unicode e null byte
      • É um caso raro com modelo de ameaça específico para Zsh
    • O gerenciamento de cache de prompt (promptCacheBreakDetection.ts)
      • rastreia 14 vetores de quebra de cache e usa um “sticky latch” para manter o cache durante trocas de modo
      • Há um comentário DANGEROUS_uncachedSystemPromptSection()
      • refletindo uma filosofia de design focada em reduzir custo por token
    • O coordenador multiagente (coordinatorMode.ts)
      • usa um algoritmo de orquestração baseado em prompts, não em código
      • com diretrizes como “não aprovar trabalho fraco” e “não delegar sem entender”
    • Também há problemas de qualidade de código
      • print.ts tem 5.594 linhas, e uma única função chega a 3.167 linhas
      • Requisições HTTP usam Axios, coincidindo no tempo com o recente caso de versão maliciosa no npm
  • Significado e impacto

    • Diferentemente do SDK público do Google Gemini CLI ou do OpenAI Codex,
      • este vazamento expôs toda a estrutura interna do principal produto da Anthropic
    • O maior dano talvez não seja o código em si, mas a exposição de feature flags e do roadmap
      • recursos estratégicos como KAIROS e Anti-distillation ficaram visíveis para concorrentes
    • No ano passado, a Anthropic adquiriu o Bun, e o Claude Code roda sobre ele
      • um bug de source maps do Bun (oven-sh/bun#28001) pode ter sido a causa
      • o problema expõe source maps até em modo de produção e ainda não foi corrigido
    • No fim, a Anthropic acabou vazando seu próprio produto por causa de um bug na própria cadeia de ferramentas
      • como resumiu uma reação no Twitter, foi o tipo de ironia em que “ao distribuir código escrito por IA, o código vazou por causa de um bug criado por IA”

3 comentários

 
kaydash 28 일 전

Inteligente

 
bbulbum 29 일 전

Foi um problema que aconteceu ao fazer commit com IA...?!

 
GN⁺ 2026-04-01
Opiniões do Hacker News
  • Há muitos comentários interpretando errado que “Undercover mode” seria apenas um recurso para ocultar informações internas
    No prompt real, está explicitamente dito para nunca incluir “Claude Code” nem menções a IA em mensagens de commit ou descrições de PR
    Ou seja, parece um recurso para agir como humano e esconder a própria identidade
    É especialmente preocupante que essas diretrizes se apliquem ao contribuir para repositórios públicos
    Link para o código relacionado

    • Sempre que o Claude aparece como coautor de um commit, isso me dá vergonha alheia
      O histórico do Git serve para rastrear responsabilidade e autoria, não para registrar a lista de ferramentas usadas
      Então será que eu também deveria colocar meu linter ou minha IDE como coautores nos meus PRs?
    • Imagino que outras pessoas, como eu, já tenham adicionado esse tipo de instrução no arquivo CLAUDE.md
      Na prática, isso é um problema resolvível com uma linha trivial de configuração
    • Parece menos uma tentativa de fingir ser humano e mais um esforço para evitar que Claude vire alvo de zombaria quando a qualidade do código for ruim
      No fim, a responsabilidade continua sendo do desenvolvedor humano
    • O objetivo do código é evitar vazamento de informação, mas a implementação real é mais ampla do que isso
      Talvez tenham definido isso de propósito para atingir o objetivo, ou talvez exista uma intenção oculta
      Ainda assim, em vez de concluir logo que está “fingindo ser humano”, faz mais sentido interpretar literalmente a frase “escreva como um desenvolvedor humano”
      Quanto mais cético se é, mais convincente fica uma crítica baseada em fatos
    • Eu também já vi a frase “coauthored by Claude Code” em PRs
      Sinceramente, não quero esse tipo de coisa
  • Com os recentes vazamentos do Mythos em sequência e agora a exposição de toda a base de código do Claude Code, a questão da confiança está crescendo
    Cada incidente isolado é interessante, mas, ocorrendo em série, começa a parecer um padrão
    No fim, isso leva à pergunta: “dá para continuar confiando esse tipo de ferramenta à base de código?”

    • Acho essa preocupação exagerada
      Eu ainda pago 140 dólares e uso CC
      Na verdade, vejo esse tipo de vazamento como algo ligado ao modelo ético da Anthropic — dá uma sensação de crescimento por meio dos fracassos
    • Não acho que o impacto seja grande
      O valor real não está no código, e sim no acesso ao modelo
      A base de código é bagunçada, mas o acesso ao modelo por assinatura continua atraente, então sigo usando Claude Code todos os dias
    • Para ser sincero, o próprio Claude parece um vibe coded slop
      Há erros pequenos demais na web UI e no CC
      O controle de tmux também não funciona como na documentação, e as sessões não são limpas direito
      Mesmo assim, continua sendo um produto de que gosto — desajeitado, mas com charme
  • Meu fork de anthropics/claude-code no GitHub foi removido por DMCA
    Mesmo sem conter o código vazado, a rede inteira (8,1 mil repositórios) foi bloqueada de uma vez
    Link para o aviso de DMCA
    É ingênuo da parte da Anthropic achar que pode tocar o sino e depois fazê-lo parar

    • De qualquer forma, os honorários dos advogados provavelmente já estão sendo cobrados, então no fundo é só uma forma de usar o jurídico
      Como o vazamento não pode ser revertido, o mais realista é tratar isso como parte do roadmap do produto
  • Fiquei surpreso ao ver coisas que empresas antigamente chamariam de segredos comerciais escritas diretamente no código-fonte
    Há até contexto de negócio nos comentários
    Ex.: dados operacionais como “desperdício de 250 mil chamadas de API por dia” expostos sem filtro

    • Comentários são, na prática, o hack central da codificação com agentes
      Como eles leem comentários melhor do que documentação, isso pode ser usado quase como memória de longo prazo
    • A maioria das grandes bases de código privadas é parecida
      A Anthropic só não esperava que vazasse
    • É um bom comentário explicando o motivo da configuração
      Do ponto de vista de um concorrente, isso quase não tem valor
    • É prático colocar o máximo de informação possível dentro do código
      Afinal, eles provavelmente não esperavam um vazamento
    • Colocar todo o contexto dentro do código parece o ponto final de um design amigável a agentes
      Some a necessidade de explicar em documentação separada
  • Algumas funções estão bloqueadas pela condição process.env.USER_TYPE === 'ant'
    Ou seja, as instruções para funcionários da Anthropic são mais rígidas e mais francas — uma estrutura interessante

  • O post original no HN já está popular, então fica a dúvida se fazia sentido publicar também um blog resumindo comentários do HN

    • Esse blog parece ter traços de ter sido escrito em parte por IA
    • Também houve quem achasse que um resumo era necessário porque o post original estava disperso
    • A cultura do HN tem certa tendência a se tornar autorreferencial
  • Ainda acho que Claude Code é excelente
    Não vejo motivo para trocar por OpenAI ou Gemini

    • Eu me decepcionei com Claude Code e migrei para o Codex, e no desenvolvimento web e mobile ele funciona quase no mesmo nível
  • O nome “Undercover mode” e a frase “proibido mencionar Claude Code” soam sinistros, mas olhando o código real parece haver mais a intenção de proteger codinomes internos
    Link da fonte

    • Proteger codinomes eu entendo, mas apagar vestígios de conteúdo gerado por IA tem outro significado
      Isso me parece uma mudança bem importante
    • A frase-chave é “escreva a mensagem de commit como um desenvolvedor humano”
    • O fato de proibir frases sobre Claude nos exemplos “BAD” mostra que a intenção é claramente evitar a exposição de IA
    • Provavelmente a ideia é permitir que desenvolvedores usem IA em projetos da empresa sem chamar atenção
    • Parece ter sido projetado para que Claude não revele automaticamente sua identidade ao contribuir em open source
  • A ideia de “Anti-distillation: inserir ferramentas falsas para impedir cópia” é interessante
    Seria uma reviravolta se concorrentes chineses de fato implementassem essas ferramentas falsas

    • Em breve devem aparecer versões copiadas como zAI, Qwen, Minimax CC
      Hoje em dia, acho que o diferencial competitivo está mais em dados e custo de inferência do que no modelo em si
      Gostaria de conversar mais sobre esse tema
    • Essa própria discussão sobre distillation me parece vazia
      Afinal, essas empresas também construíram seus impérios usando dados alheios
    • Na prática, os dois lados estão destilando (copiando) um ao outro
      A qualidade está estagnada, e a diferença real está no nível de acabamento do tooling
      Esse vazamento pode até reduzir essa diferença
    • Ferramentas falsas são só uma isca que dá para filtrar com regex
      Hoje em dia, a própria distillation está ficando menos comum
    • É engraçada a postura irônica de “nós roubamos o conteúdo dos outros, mas vocês não podem roubar o nosso”
  • Estou compartilhando o guia visual que eu fiz
    ccunpacked.dev