Uma reportagem publicada em 7 de novembro de 2026 atribuiu à empresa de segurança Apiiro a identificação de 1.122 cópias públicas de um arquivo do Claude Code com pelo menos um segredo. O risco descrito aparece quando uma pessoa aprova para sempre um comando exato que contém uma senha ou um token: esse texto pode ser salvo no arquivo de configurações do projeto e acabar em um repositório público.

Se uma credencial literal já entrou no Git, troque-a antes de limpar os arquivos: apagar a cópia atual não remove o que ficou no histórico nem nos forks.

Como um comando aprovado pode guardar um segredo

Ao escolher “Yes, and don’t ask again” para um comando exato, a pessoa permite que Claude Code registre uma regra para esse comando em .claude/settings.local.json. Se a linha aprovada tiver uma senha ou um token escrito diretamente nela, esse valor pode ficar gravado em texto simples. Uma regra baseada em padrão é diferente: ela não precisa conter uma credencial literal.

O relato também diz que Claude Code acrescenta o arquivo às exclusões globais do Git do usuário quando o grava pela primeira vez dentro de um repositório. Essa proteção fica na configuração local daquela pessoa. Ela não cria uma regra no .gitignore compartilhado com o projeto e não apaga arquivos que já foram enviados ao GitHub.

O que os números atribuídos à Apiiro incluem

A Apiiro pesquisou 104.185 cópias públicas de .claude/settings.local.json, distribuídas por 103.617 repositórios. A reportagem atribuiu à empresa 1.122 cópias com segredos, somando 1.379 credenciais distintas nesse conjunto. Uma das empresas contatadas confirmou que sua chave estava ativa.

A contagem ampliada considera outros materiais além das cópias atuais do arquivo local. Por isso, os 2.539 segredos relatados em 1.994 repositórios não são uma segunda contagem do mesmo conjunto.

EscopoMateriais incluídosResultado atribuído à Apiiro
Cópias públicas atuais de .claude/settings.local.json104.185 cópias em 103.617 repositórios1.122 cópias com segredos e 1.379 segredos distintos
Levantamento ampliadoVersões antigas, arquivos compartilhados .claude/settings.json e conversas salvas de agentes2.539 segredos em 1.994 repositórios

O histórico do Git pode manter cópias antigas

Excluir o arquivo da versão atual do projeto não apaga automaticamente versões anteriores do histórico do Git nem cópias em forks. A Apiiro também relatou 734 segredos em versões antigas, distribuídos por 509 repositórios, e os mesmos segredos em 211 forks de 74 repositórios.

Nas varreduras relatadas, feitas sem a etapa de verificação das ferramentas, gitleaks sinalizou 564 dos 1.122 arquivos com segredos; TruffleHog sinalizou 643. Nenhuma das duas ferramentas sinalizou 215 arquivos.

Resultado da varreduraArquivosCondição
Sinalizados por gitleaks564 de 1.122Varredura sem a etapa de verificação da ferramenta
Sinalizados por TruffleHog643 de 1.122Varredura sem a etapa de verificação da ferramenta
Não sinalizados por nenhuma das duas ferramentas215 de 1.122Varreduras sem as etapas de verificação das ferramentas

Como responder se o arquivo foi enviado ao repositório

A sequência recomendada pela Apiiro começa pela busca: verifique os arquivos atuais e o histórico do Git em busca de comandos ou configurações com credenciais literais. Se encontrar uma credencial exposta, rotacione-a antes de iniciar a limpeza.

Depois, remova o arquivo do controle de versão e inclua uma regra para ele no .gitignore do repositório. Apague também regras locais que contenham valores secretos e examine o histórico e os forks em busca de cópias. Para comandos futuros, a Apiiro recomenda recorrer a variáveis de um gerenciador de segredos em vez de inserir a credencial diretamente no texto, além de preferir regras baseadas em padrões a permissões para comandos exatos.

Restringir a leitura de arquivos é outro controle

Uma discussão na comunidade Claude Code citou orientações para bloquear caminhos sensíveis com regras de negação para Read e afirmou que .claudeignore não controla o acesso das ferramentas de arquivo. Essa restrição trata da leitura de arquivos; não remove uma credencial já gravada em um comando aprovado nem cópias existentes no histórico do Git.