Meteora Web

Claude Code, arquivos de configuração expõem milhares de segredos no GitHub

A Apiiro encontrou mais de 100.000 arquivos settings.local.json do Claude Code no GitHub, cerca de 1.100 com segredos. Veja o que checar nos seus repositórios.

Ing. Calogero Bono 6 min de leitura
Claude Code, arquivos de configuração expõem milhares de segredos no GitHub

Segundo os pesquisadores de segurança da Apiiro, o Claude Code está deixando segredos em repositórios públicos do GitHub. O problema nasce de um arquivo de configurações local, que acaba online sem que o desenvolvedor perceba. Entre os dados encontrados há senhas de banco de dados, tokens de API e acessos root. Isso importa para quem usa um assistente de programação com IA, porque um único commit desatento pode tornar públicas credenciais ainda válidas.

Alguns termos, antes de entrarmos nos fatos. .gitignore é o arquivo que diz ao Git quais arquivos não salvar nos commits. Repositório é a pasta de projeto rastreada pelo Git. Segredo indica uma credencial, como uma senha, um token de API ou uma chave privada. Fork é a cópia de um projeto feita por outro usuário no GitHub. Commit é o registro de um conjunto de alterações no histórico do projeto.

Zenithby Meteora Web O sistema operacional do seu negócio. Redes sociais, clientes, reservas e notas fiscais em uma só plataforma. Academias, barbearias, profissionais. Conheça o Zenith → Demo grátis · sem cartão

O que foi descoberto sobre o Claude Code e o GitHub?

A informação vem do Ars Technica, que relata o trabalho da Apiiro. Os pesquisadores encontraram mais de 100.000 casos em que o arquivo local de configurações do Claude Code tinha sido enviado a um repositório público do GitHub.

Nem todos contêm dados sensíveis. Apenas cerca de 1.100 arquivos, vindos de 63 organizações diferentes, incluíam segredos como tokens de API públicos, senhas de banco de dados ou chaves privadas. O número é pequeno em relação ao total, mas são credenciais reais, não exemplos.

Por que o arquivo acaba online?

Quando o usuário escolhe a opção «Sim, e não perguntar mais» para aprovar um comando de shell, a escolha vira uma regra no arquivo local .claude/settings.local.json. Às vezes a regra é escrita como um padrão genérico. Com frequência, porém, o comando é salvo exatamente como foi digitado, com tudo o que contém, incluindo eventuais credenciais.

Enquanto o arquivo ficar no computador, o risco fica contido, salvo se a máquina for comprometida. O problema começa quando o arquivo entra em um commit.

O .gitignore não deveria bastar?

Em teoria, sim. Segundo o Ars Technica, a documentação da Anthropic indica que esse arquivo é adicionado ao .gitignore global do desenvolvedor, o que normalmente evita a publicação.

O ponto fraco é que a regra não se reflete no nível do repositório. Se o projeto for clonado em outra máquina, ou se uma pasta virar repositório depois, o arquivo pode ser enviado por engano. A Apiiro acrescenta que, em muitos casos, é o próprio Claude Code que faz o commit das alterações nas configurações, sem intervenção do usuário.

A documentação oficial do GitHub explica a diferença. O .gitignore na raiz do repositório, uma vez commitado, vale para quem clonar o projeto. O global, em ~/.config/git/ignore, vale só no seu computador.

Basta apagar o arquivo para resolver?

Não. Segundo a Apiiro, mesmo depois de os arquivos serem descobertos e removidos de um repositório, os segredos podem permanecer nos forks do projeto original, se o usuário não tomar cuidado.

A documentação do GitHub lembra ainda que um arquivo já rastreado precisa primeiro ser removido do rastreamento com git rm --cached NOME_ARQUIVO, e só depois a regra de exclusão passa a valer. Acrescentar uma linha ao .gitignore não apaga o que já está no histórico. Por isso, se uma credencial foi parar online, deve ser tratada como comprometida e substituída.

Limites a conhecer

Os números vêm da análise da Apiiro, relatada pelo Ars Technica, e não verificamos os dados. Não sabemos quantas das credenciais encontradas ainda estavam válidas, nem se foram usadas por terceiros. As fontes não trazem resposta da Anthropic sobre eventuais mudanças no comportamento do Claude Code. O quadro pode mudar se a empresa decidir intervir na forma como os comandos aprovados são salvos.

O que muda para quem trabalha com o digital

Se você usa o Claude Code, verifique agora se .claude/settings.local.json está rastreado em algum repositório, mesmo privado. Um projeto privado pode se tornar público ou ser clonado em outro lugar. Adicione o arquivo ao .gitignore do projeto e faça commit, para que a regra valha para todos. Para excluir arquivos apenas no seu clone, o GitHub indica o .git/info/exclude.

Depois, há o hábito de escrever senhas dentro dos comandos. Prefira variáveis de ambiente ou um gerenciador de segredos. Em empresas, vale incluir uma verificação automática de segredos antes de cada push.

Nossa opinião

O caso mostra uma falha de projeto, não apenas uma distração dos usuários. Um arquivo que pode conter credenciais deveria ser excluído onde importa, ou seja, no repositório, e não só na configuração pessoal. Deixar tudo nas mãos do usuário funciona mal, principalmente quando a ferramenta faz commits sozinha. Dito isso, também há uma responsabilidade nossa. Um comando com senha em texto puro é um hábito a corrigir, com ou sem assistente de IA. A velocidade que essas ferramentas prometem torna a disciplina com segredos mais urgente, não menos.

Perguntas frequentes

Qual arquivo do Claude Code contém os segredos?

O arquivo é .claude/settings.local.json. Ele guarda as regras criadas quando você aprova um comando com «Sim, e não perguntar mais». Às vezes o comando é gravado por inteiro, com as credenciais dentro.

Quantos arquivos expostos a Apiiro encontrou?

Mais de 100.000 arquivos enviados a repositórios públicos do GitHub. Cerca de 1.100, de 63 organizações, continham segredos como tokens de API, senhas de banco de dados ou chaves privadas.

O .gitignore global protege contra o problema?

Só em parte. Vale no seu computador, mas não dentro do repositório. Se o projeto for clonado em outro lugar ou uma pasta virar repositório depois, o arquivo pode acabar no commit.

Apagar o arquivo do repositório elimina os segredos?

Não. Segundo a Apiiro, os segredos podem permanecer nos forks do projeto. Se uma credencial foi publicada, deve ser considerada comprometida e substituída.

Como excluo um arquivo que o Git já rastreia?

Primeiro remova o rastreamento com git rm --cached NOME_ARQUIVO. Depois adicione a regra ao .gitignore. Sem o primeiro passo, a regra não tem efeito sobre um arquivo já rastreado.

O que acompanhar nos próximos meses sobre a segurança do Claude Code

A questão é se a Anthropic vai mudar a forma como salva os comandos aprovados. Enquanto isso, vale acompanhar as atualizações da ferramenta.

  • Leia as notas de lançamento do Claude Code, para ver se a gestão de settings.local.json muda, a partir do nosso artigo sobre a versão 2.1.319.
  • Procure no histórico dos seus repositórios arquivos .claude já commitados, e troque as credenciais que aparecerem.
  • Revise as regras de proteção das branches, usando nosso guia sobre pull requests no GitHub.

Fontes

Zenithby Meteora Web O sistema operacional do seu negócio. Redes sociais, clientes, reservas e notas fiscais em uma só plataforma. Academias, barbearias, profissionais. Conheça o Zenith → Demo grátis · sem cartão

Leia também

Do blog

Últimos artigos