Le impostazioni locali di Claude Code possono finire per errore in repository GitHub pubblici e rivelare credenziali, token API e chiavi private. Una ricerca di Apiiro ha individuato oltre 100.000 caricamenti del file coinvolto; in circa 1.100 casi erano presenti segreti appartenenti a 63 organizzazioni.
Il problema nasce dalle regole con cui Claude Code memorizza l’autorizzazione permanente a eseguire comandi shell. Il file dovrebbe restare escluso dai repository, ma questa protezione non sempre segue il progetto quando viene copiato o inizializzato in un secondo momento.
Il file locale che può finire nel repository
Quando in Claude Code si approva un comando scegliendo l’opzione equivalente a “Sì, e non chiedere più”, il consenso viene salvato come regola nel file .claude/settings.local.json del computer. L’obiettivo è evitare di richiedere ogni volta la stessa autorizzazione per i comandi automatizzati.
Il punto critico è che la regola può contenere il comando in forma estesa. Se quel comando include una password di database, un token o un’altra credenziale, anche quel dato può essere scritto nel file delle impostazioni locali.
Finché il file rimane soltanto sul computer dello sviluppatore, l’esposizione non avviene attraverso GitHub. Il rischio emerge quando viene aggiunto a un repository e pubblicato senza che chi lo gestisce si accorga del suo contenuto.
Perché il .gitignore non basta in ogni scenario
La documentazione di Anthropic indica che .claude/settings.local.json viene aggiunto al .gitignore globale dello sviluppatore, così da escluderlo normalmente dal controllo di versione. Tuttavia, questa impostazione non è riportata automaticamente nel file .gitignore del singolo repository.
Secondo Apiiro, l’esclusione può quindi mancare, per esempio, se una cartella viene trasformata in repository in un momento successivo oppure se il progetto viene clonato su un altro computer. In alcuni casi, Claude Code può anche includere modifiche al file nelle operazioni di commit senza un intervento diretto dell’utente.
I numeri rilevati da Apiiro
I ricercatori hanno trovato oltre 100.000 casi in cui il file di impostazioni locali di Claude Code era stato caricato in un repository pubblico su GitHub. Non tutti contenevano informazioni sensibili: il gruppo più grave riguarda circa 1.100 file di 63 organizzazioni.
Fra i dati rintracciati figurano token API pubblici, password per database, accessi root e chiavi private. Sono credenziali che, se ancora valide, possono consentire l’accesso a servizi o infrastrutture collegate al progetto.
Rimuovere il file non chiude sempre l’esposizione
Eliminare un file dal repository principale non garantisce che i segreti smettano di circolare: anche dopo la rimozione, possono persistere nelle fork del progetto originale.
FAQ
Quale file di Claude Code è coinvolto?
È .claude/settings.local.json, il file locale che può registrare le regole di approvazione dei comandi shell.
Tutti i file pubblicati contenevano segreti?
No. Apiiro ha rilevato oltre 100.000 file caricati pubblicamente, ma ha individuato segreti in circa 1.100 file riferiti a 63 organizzazioni.
Che cosa può essere esposto?
La ricerca cita token API, password di database, accessi root e chiavi private inseriti nei comandi memorizzati dalle regole locali.
Perché un file locale può arrivare su GitHub?
Il file è normalmente escluso dal .gitignore globale, ma tale esclusione non viene necessariamente trasferita nel .gitignore del repository quando cambiano cartella, computer o configurazione del progetto.
Considerazioni finali
Il caso mostra un limite concreto dei flussi di sviluppo assistiti dall’IA: automatizzare l’approvazione dei comandi è utile, ma diventa rischioso quando la configurazione conserva anche le credenziali passate a quei comandi. La distinzione fra file locale e file del progetto deve restare netta, soprattutto in ambienti destinati a GitHub.
La parte più seria non è il numero complessivo dei file caricati, ma la presenza documentata di token, password e chiavi in una parte di essi. Anche la rimozione dal repository non risolve necessariamente la diffusione del dato, perché le fork possono conservarne una copia pubblica.

