Secondo i ricercatori di sicurezza di Apiiro, Claude Code sta lasciando segreti nei repository pubblici di GitHub. Il problema nasce da un file di impostazioni locale, che finisce online senza che lo sviluppatore se ne accorga. Tra i dati trovati ci sono password di database, token API e accessi root. Conta per chiunque usi un assistente di programmazione con l'IA, perché un singolo commit distratto può rendere pubbliche credenziali ancora valide.
Qualche termine, prima di entrare nei fatti. .gitignore è il file che dice a Git quali file non salvare nei commit. Repository è la cartella di progetto tracciata da Git. Segreto indica una credenziale, come una password, un token API o una chiave privata. Fork è la copia di un progetto fatta da un altro utente su GitHub. Commit è il salvataggio di un gruppo di modifiche nella cronologia del progetto.
Cosa è stato scoperto su Claude Code e GitHub?
Lo racconta Ars Technica, che riporta il lavoro di Apiiro. I ricercatori hanno trovato oltre 100.000 casi in cui il file locale delle impostazioni di Claude Code era stato caricato su un repository pubblico di GitHub.
Non tutti contengono dati sensibili. Solo circa 1.100 file, provenienti da 63 organizzazioni diverse, includevano segreti come token API pubblici, password di database o chiavi private. Il numero è piccolo rispetto al totale, ma si tratta di credenziali reali, non di esempi.
Perché il file finisce online?
Quando l'utente sceglie l'opzione «Sì, e non chiedere più» per approvare un comando di shell, la scelta diventa una regola nel file locale .claude/settings.local.json. A volte la regola è scritta come schema generico. Spesso, però, il comando viene salvato così com'è, con tutto ciò che contiene, comprese eventuali credenziali.
Finché il file resta sul computer, il rischio è contenuto, salvo compromissione della macchina. Il guaio comincia quando il file entra in un commit.
Il .gitignore non dovrebbe bastare?
In teoria sì. Secondo Ars Technica, la documentazione di Anthropic indica che questo file viene aggiunto al .gitignore globale dello sviluppatore, cosa che di solito ne evita la pubblicazione.
Il punto debole è che la regola non si riflette a livello di repository. Se il progetto viene clonato su un'altra macchina, o se una cartella diventa un repository in un secondo momento, il file può essere caricato per errore. Apiiro aggiunge che in molti casi è Claude Code stesso a fare il commit delle modifiche alle impostazioni, senza intervento dell'utente.
La documentazione ufficiale di GitHub spiega la differenza. Il .gitignore nella radice del repository, una volta committato, vale per chiunque cloni il progetto. Quello globale in ~/.config/git/ignore vale solo sul tuo computer.
Basta cancellare il file per risolvere?
No. Secondo Apiiro, anche dopo che i file vengono scoperti e rimossi da un repository, i segreti possono restare nei fork del progetto originale, se l'utente non fa attenzione.
La documentazione di GitHub ricorda inoltre che un file già tracciato va prima tolto dal tracciamento con git rm --cached NOME_FILE, e solo dopo la regola di esclusione ha effetto. Aggiungere una riga al .gitignore non cancella ciò che è già nella cronologia. Per questo, se una credenziale è finita online, va trattata come compromessa e sostituita.
Limiti da conoscere
Le cifre vengono dall'analisi di Apiiro, riportata da Ars Technica, e non abbiamo verificato i dati. Non sappiamo quante delle credenziali trovate fossero ancora valide, né se siano state usate da terzi. Nelle fonti non c'è una risposta di Anthropic su eventuali modifiche al comportamento di Claude Code. Il quadro potrebbe cambiare se l'azienda decidesse di intervenire sul modo in cui i comandi approvati vengono salvati.
Cosa cambia per chi lavora con il digitale
Se usi Claude Code, controlla subito se .claude/settings.local.json è tracciato in qualche repository, anche privato. Un progetto privato può diventare pubblico, o essere clonato altrove. Aggiungi il file al .gitignore del progetto e committalo, così la regola vale per tutti. Per escludere file solo sul tuo clone, GitHub indica .git/info/exclude.
Poi c'è l'abitudine di scrivere password dentro i comandi. Meglio variabili d'ambiente o un gestore di segreti. In azienda, vale la pena aggiungere una scansione automatica dei segreti prima di ogni push.
Il nostro parere
Il caso mostra un limite di progetto, non solo una distrazione degli utenti. Un file che può contenere credenziali dovrebbe essere escluso dove conta, cioè nel repository, non solo nella configurazione personale. Scaricare tutto sull'utente funziona poco, soprattutto quando lo strumento fa commit in autonomia. Detto questo, resta una responsabilità anche nostra. Un comando con una password in chiaro è un'abitudine da correggere, con o senza assistente IA. La velocità che questi strumenti promettono rende più urgente la disciplina sui segreti, non meno.
Domande frequenti
Quale file di Claude Code contiene i segreti?
Il file è .claude/settings.local.json. Salva le regole create quando approvi un comando con «Sì, e non chiedere più». A volte il comando viene scritto per intero, con le credenziali dentro.
Quanti file esposti ha trovato Apiiro?
Oltre 100.000 file caricati su repository pubblici di GitHub. Circa 1.100, da 63 organizzazioni, contenevano segreti come token API, password di database o chiavi private.
Il .gitignore globale protegge dal problema?
Solo in parte. Vale sul tuo computer, ma non nel repository. Se il progetto viene clonato altrove o una cartella diventa repository dopo, il file può finire nel commit.
Cancellare il file dal repository elimina i segreti?
No. Secondo Apiiro i segreti possono restare nei fork del progetto. Se una credenziale è stata pubblicata, va considerata compromessa e sostituita.
Come escludo un file già tracciato da Git?
Prima lo togli dal tracciamento con git rm --cached NOME_FILE. Poi aggiungi la regola al .gitignore. Senza il primo passaggio, la regola non ha effetto sul file già tracciato.
Cosa guardare nei prossimi mesi sulla sicurezza di Claude Code
Il punto è se Anthropic cambierà il modo in cui salva i comandi approvati. Intanto conviene guardare agli aggiornamenti dello strumento.
- Leggi le note di rilascio di Claude Code, per vedere se cambia la gestione di settings.local.json, a partire dal nostro articolo sulla versione 2.1.319.
- Cerca nella cronologia dei tuoi repository i file .claude già committati, e ruota le credenziali che compaiono.
- Rivedi le regole di protezione dei branch, usando la nostra guida alle pull request su GitHub.




