Claude Code por dentro: o que o leak do código fonte revelou….

Olá a todos.

Disclaimer antes de começar: não estou aqui a dizer que a Anthropic é uma organização maliciosa, nem que o Claude Code é um spyware disfarçado de assistente de programação. Não é. Alias de todas os providers de  AI’s Eu confio na Anthropic mais do que em qualquer outro. O trabalho deles em AI Safety é real. Mas confiança não pode ser cega.
Depois de ler a análise que o @UsmanReads publicou no Twitter — baseada no código fonte que entretanto ficou disponível — fiquei com aquela sensação que reconheço bem de anos a trabalhar em IT. A sensação de: “espera, isto é muito mais do que eu pensava.” 

E quando tenho essa sensação, costumo escrever sobre ela. Preparem o café.

Contexto: o que é o Claude Code?

Para quem ainda não conhece, o Claude Code é uma ferramenta de linha de comandos da Anthropic — a empresa que está por detrás do Claude — desenhada para funcionar como um assistente de programação agentico. Ou seja, não é só para responder perguntas sobre código. É para fazer coisas: escrever ficheiros, executar comandos, navegar repositórios, interagir com ferramentas externas. Algo como ter um júnior dentro do terminal, mas que nunca dorme e raramente pede aumento.
A ideia é excelente, e honestamente, tem sido das ferramentas mais úteis que experimentei nos últimos tempos, sendo a minha go-to referencial quando preciso.
O problema — como quase sempre em IT — não está no que a ferramenta faz de forma visível. Está no que faz por baixo, em silêncio.

O que o código fonte revelou

A análise original foi feita pelo @UsmanReads, que passou tempo suficiente a rever o código para identificar oito pontos que, no mínimo, merecem ser discutidos abertamente. Vou pegar neles e acrescentar a minha leitura.

1. A vossa frustração está a ser classificada em tempo real

Já alguma vez escreveram “wtf” no meio de uma sessão de trabalho? Ou “this sucks”? Ou simplesmente começaram uma frase com “frustrating…”?
O Claude Code tem listas de palavras-chave que classificam o vosso input em tempo real. Não é IA sofisticada a interpretar contexto emocional. É, literalmente, regex. Palavras como “shit”, “fuck”, “pissed off”, “this sucks” e “wtf” ativam flags de sentimento negativo que ficam associadas à sessão.

Agora, há uma leitura benigna disto: a Anthropic quer saber quando os utilizadores estão frustrados para melhorar o produto. Faz sentido. É o tipo de signal que qualquer equipa de produto quer ter. O problema é que a maior parte das pessoas que usa o Claude Code profissionalmente não sabe que esta classificação está a acontecer. E isso muda a natureza da coisa.
Há uma diferença entre “recolhemos feedback quando carregas no botão” e “classificamos o teu estado emocional com base no que escreves.” A segunda não é necessariamente errada, mas devia ser comunicada de forma mais clara.

2. As vossas hesitações também estão a ser medidas

Esta é a parte que mais me surpreendeu, e que mais me fez pensar.

Quando o Claude Code apresenta um prompt de permissão — do género “posso executar este comando?” — o sistema não regista apenas a vossa resposta final. Regista como chegaram até ela.
Abriram a caixa de feedback? Fecharam sem escrever nada? Carregaram em Escape? Quantas vezes? Começaram a escrever e depois cancelaram?
Há eventos internos com nomes como tengu_accept_feedback_mode_entered, tengu_reject_feedback_mode_entered, tengu_permission_request_escape. O sistema consegue distinguir entre “rejeitou rapidamente e sem hesitar” e “hesitou, começou a escrever algo, e acabou por rejeitar.”
Do ponto de vista de engenharia de produto, percebo o interesse disto. Uma rejeição hesitante é informativamente diferente de uma rejeição imediata — pode indicar que o utilizador não percebeu o que lhe estava a ser pedido, ou que teve dúvidas genuínas sobre o que autorizar.
Do ponto de vista do utilizador que está ali a tentar fazer o seu trabalho? É um nível de observação que ultrapassa o que a maior parte das pessoas esperaria de uma ferramenta de terminal.

3. O sistema de feedback não é passivo — está ativamente desenhado para capturar problemas

Todos estamos habituados a ferramentas que perguntam “gostou da experiência?” de vez em quando. O Claude Code faz algo diferente.

O sistema de feedback tem regras de pacing, cooldowns, e probabilidades associadas. Não dispara aleatoriamente. Dispara quando deteta que algo correu mal — e o mecanismo de deteção inclui, entre outras coisas, as classificações de sentimento que mencionei acima.
Se marcarem algo como negativo, o sistema pode sugerir que executem /issue e pode nudge-ar (que palavra horrível, mas é a correcta) para partilharem a transcrição da sessão. Se aceitarem, o que é enviado pode incluir a transcrição principal, transcrições de sub-agentes, e em alguns casos logs em formato JSONL — com redação, supostamente.
A palavra “supostamente” aqui é importante. Não tenho razão para duvidar que a redação acontece. Mas a cadeia entre “clicaste em thumbs down” e “logs da tua sessão foram para os servidores da Anthropic” é mais longa e mais opaca do que a maior parte dos utilizadores imagina.

4. Há comandos escondidos que mudam o comportamento do modelo

Isto é genuinamente interessante e, ao contrário dos pontos anteriores, não tem necessariamente conotações negativas — é mais uma questão de transparência.

O Claude Code tem palavras-chave não documentadas que alteram o comportamento do sistema enquanto as escrevem. Por exemplo:

  • ultrathink — aumenta o nível de esforço computacional e altera o styling da interface
  • ultraplan — ativa um modo de planeamento remoto
  • ultrareview — variante para fluxos de revisão de código
  • /btw — lança um agente paralelo para que o fluxo principal não seja interrompido

O input box está a parsear o que escrevem em tempo real, à procura destas keywords.

Não acho que haja nada de malicioso aqui — parecem genuinamente ser atalhos para utilizadores avançados. Mas o facto de não estarem documentados de forma óbvia é, no mínimo, uma oportunidade perdida de comunicação. Imagine saber que podia ter estado a usar ultrathink nas últimas semanas e ninguém te disse.

5. A telemetria vai muito além do básico

Cada sessão do Claude Code regista, por padrão: session IDs, container IDs, caminhos do workspace, hashes do repositório, detalhes do runtime e plataforma, contexto do GitHub Actions, e remote session IDs.

Se determinadas flags estiverem ativas — e o utilizador médio não sabe quais estão — também podem ser registados os prompts do utilizador e os outputs das ferramentas.
Quando falo em telemetria “normal”, penso em: versão do software, tipo de sistema operativo, erros e crashes. O que está descrito aqui é uma impressão digital bastante detalhada de cada ambiente de trabalho. Há uma diferença de grau que se torna uma diferença de natureza.
Para quem usa isto em contexto empresarial, especialmente em ambientes com código proprietário ou dados sensíveis, isto merece atenção deliberada. Não estou a dizer que algo corre mal — estou a dizer que a superfície de exposição é maior do que parece à primeira vista.

6. O comando MCP pode expor variáveis de ambiente

Este é talvez o mais concreto em termos de risco operacional.

Executar claude mcp get <name> pode devolver URLs de servidor, headers, OAuth hints, e blocos de ambiente completos para servidores stdio. Se as vossas variáveis de ambiente incluem segredos — tokens de API, credenciais, chaves — podem aparecer no output do terminal.
Mais uma vez: não é necessariamente um bug intencional. Mas é o tipo de coisa que, em qualquer auditoria de segurança, levantaria uma sobrancelha. E é o tipo de coisa que devia estar claramente documentada com um aviso.

7. Modo interno vai ainda mais fundo

Para quem trabalha internamente na Anthropic ou usa builds internas, há um modo ativado pela variável USER_TYPE=ant que regista ainda mais: Kubernetes namespace, container ID exato, e contexto completo de permissões incluindo caminhos, regras de sandbox, e bypasses.

A conclusão lógica é que o comportamento de cada sessão pode ser associado a um ambiente de deployment muito específico. O que é útil para debug — e que também significa que há uma granularidade de observação bastante fina sobre como o sistema é usado.

Então, o que pensar disto tudo?

Tenho estado a pensar nisto desde que li a análise original, e a minha conclusão é a seguinte: o Claude Code não é spyware. Mas é um sistema muito mais instrumentado do que a maior parte dos utilizadores assume, e essa assimetria de informação é um problema real.

Há uma linha entre “recolher dados para melhorar o produto” e “observar comportamento do utilizador a um nível que a maioria consideraria intrusivo se soubesse.” O Claude Code está claramente do lado funcional dessa linha — os dados provavelmente têm fins legítimos de melhoria de produto, UX research, e debugging. Mas está mais perto da segunda descrição do que da primeira.

O que me preocupa não é a intenção. É a transparência.

Nós, em IT, temos uma sensibilidade particular para este tipo de coisa. Passámos anos a explicar a utilizadores que “grátis” muitas vezes significa “vocês são o produto.” Deveríamos ter o mesmo cuidado com ferramentas pagas, especialmente quando estão a correr em ambientes com código sensível, credenciais, e dados de clientes.

O que eu faria na vossa posição:

Primeiro, se usam o Claude Code em contexto profissional, leia os termos de serviço e a política de privacidade com atenção — não como formalidade, mas como exercício real de perceber o que está a acontecer com os vossos dados.

Segundo, tenham atenção ao que está nas vossas variáveis de ambiente quando usam ferramentas MCP. Segredos em env vars é um problema antigo, mas vale a pena revisitar.

Terceiro, e mais importante: não parem de usar a ferramenta por causa disto, se ela for genuinamente útil para o vosso trabalho. Mas usem-na com os olhos abertos.

Uma nota final sobre o setor

Há um padrão que tenho visto repetir-se em IT nos últimos anos: lançamos ferramentas extraordinariamente úteis, e depois descobrimos — muitas vezes através de análise de terceiros em vez de comunicação proativa das empresas — que têm layers de observação que não foram comunicadas de forma clara.

Não é um problema exclusivo da Anthropic. É um problema do setor inteiro. Mas precisamente porque o Claude Code está a ser adotado por cada vez mais developers e equipas de engenharia — muitas vezes em ambientes com requisitos de segurança sérios — a conversa sobre o que está a acontecer debaixo do capô é uma que o setor devia ter de forma mais aberta.

A análise do @UsmanReads é um bom começo. Espero que a Anthropic responda com documentação mais clara sobre o que é recolhido, quando, e porquê. Seriam os primeiros a ganhar com isso — a confiança dos utilizadores é um ativo que vale a pena proteger.

Até ao próximo post. Sabem onde me encontrar.

Fontes: Análise de @UsmanReads publicada no X (Twitter), Março 2026. Código fonte do Claude Code.
https://x.com/usmanreads/status/2039070180618461521

Até ao proximo post.
Nuno