> ## Content Index
> Fetch the complete content index at: https://reinaldoferro.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Claude Code, il «Don't ask again» salva password e chiavi in chiaro: 1.122 file pubblici su GitHub
- URL: https://reinaldoferro.com/claude-code-il-dont-ask-again-salva-password-e-chiavi-in-chiaro-1-122-file-pubblici-su-github/
- Published: 2026-11-07T12:37:31.000Z
- Updated: 2026-11-07T13:31:23.000Z
- Description: Apiiro ha trovato segreti in 1.122 copie pubbliche di .claude/settings.local.json. Il file salva i comandi approvati con «Yes, and don't ask again». Non è noto se le credenziali siano state usate. Ecco cosa fare: prima ruotare, poi ripulire.
- Author: Reinaldo Ferro
- Tags: Claude Code, GitHub, Secret leak, Sicurezza AI, DevSecOps

Il 5 novembre i ricercatori di Apiiro Shmulik Cohen e Matan Giladi hanno pubblicato un'analisi su un effetto collaterale di Claude Code, l'assistente di programmazione di Anthropic. Di default lo strumento chiede conferma prima di eseguire la maggior parte dei comandi shell. Se lo sviluppatore sceglie «Yes, and don't ask again», salva una regola di autorizzazione in .claude/settings.local.json, dentro il progetto.

Il problema nasce dal contenuto della regola. Il comando letterale viene memorizzato come regola, senza togliere gli argomenti sensibili. Se una password o un token era scritto nel comando, finisce in chiaro nel JSON. Quel file può poi essere committato e pubblicato.

Il campione analizzato è questo:

- 104.185 copie del file in 103.617 repository pubblici.
- 1.122 copie, circa l'1,1%, sono state classificate come contenenti segreti. Insieme contengono 1.379 segreti distinti.
- Includendo cronologia Git, impostazioni condivise e trascrizioni degli agenti, il totale sale a 2.539 segreti distinti in 1.994 repository.

Non è una vulnerabilità nel senso classico: nessun CVE è citato nelle fonti consultate. È un difetto di progettazione, in cui un'azione di comodo crea una copia in chiaro di un segreto in un posto dove nessuno lo cerca. Un file chiamato «local» dà l'impressione di restare sulla macchina, ma basta un `git add .` perché finisca nel repository.

Secondo The Hacker News, segreti compaiono anche in 298 delle 76.011 copie del file condiviso .claude/settings.json, che i team committano di proposito. Il problema quindi non riguarda solo i file «locali».

Claude Code tenta di proteggere il file. Quando lo crea in un repository git, lo aggiunge alla lista di ignore globale dello sviluppatore. Ma l'esclusione globale appartiene alla macchina di quel developer. Inoltre la documentazione di Git spiega che le regole di ignore non toccano i file già sotto controllo di versione. Secondo Apiiro e Bromure, Claude Code non aggiunge mai il file al .gitignore del progetto. Per questo la protezione non viaggia con il repository.

Il comportamento era già noto:

- Una segnalazione del 11 agosto 2025 descriveva comandi approvati con chiavi API e token salvati alla lettera. Un bot l'ha chiusa come «not planned» il 3 gennaio, dopo 60 giorni senza attività.
- Un'altra issue pubblica (#13106) segnalava credenziali salvate in .claude/settings.local.json senza che la directory .claude/ fosse ignorata da git.
- ITWire riferisce che la società di sicurezza ironPeak ha descritto nel febbraio 2026 un caso analogo, con un file di impostazioni committato che conteneva password di database e chiavi API.

L'ordine delle operazioni conta: se un segreto è stato esposto, GitHub raccomanda prima di tutto di revocarlo o ruotarlo. Cancellare il file non basta, perché le versioni precedenti restano nella cronologia e nei fork.

**Per gli sviluppatori:**

1. Cerca .claude/settings.local.json e .claude/settings.json nella tua organizzazione GitHub e controlla la cronologia di ogni repository, anche dove i file non ci sono più.
2. Ruota ogni password, token e chiave che quei file hanno contenuto, in qualsiasi momento.
3. Smetti di tracciare il file con `git rm --cached .claude/settings.local.json` e aggiungilo al .gitignore del repository.
4. Apri il file anche sulla tua macchina e rimuovi le regole che contengono segreti, anche se non l'hai mai committato.
5. Non scrivere segreti nei comandi: usa variabili d'ambiente da un secrets manager (per esempio `$DB_URL`). Approva pattern come `Bash(npm run:*)` anziché comandi singoli.

**Per i team di sicurezza:**

- Tratta le cartelle degli agenti (`.claude/`, `.cursor/`, `.gemini/`, `.specstory/`) e i file di memoria come i file `.env`, sui laptop come nei repository.
- Estendi pre-commit e CI scanning anche alla cronologia. Verifica che lo scanner intercetti le password dentro i comandi, non solo i formati di chiave noti.
- Aggiungi .claude/settings.local.json ai template .gitignore dell'organizzazione.
- Dai priorità alle credenziali associate a un server pubblico, perché sono quelle che danno accesso immediato.

Il file può finire anche in pacchetti npm, immagini Docker, archivi zip o cartelle sincronizzate, quindi la verifica va estesa oltre GitHub.

## Fonti

- [Claude Code's “Don't Ask Again” File Exposes Passwords and Keys in 1,122 Public Copies on GitHub](https://thehackernews.com/2026/11/claude-codes-dont-ask-again-file.html?ref=reinaldoferro.com)
- [Claude Code approval files found exposing company secrets on GitHub – ITWire](https://itwire.com/business-it-news/security/claude-code-approval-files-found-exposing-company-secrets-on-github-says-apirro-researchers?ref=reinaldoferro.com)
- [Claude Code's “Don't Ask Again” Feature Exposes 2,539 Secrets Across 1,994 GitHub Repositories – GBHackers](https://gbhackers.com/claude-codes-dont-ask-again-feature-exposed/?ref=reinaldoferro.com)
- [\[BUG\] Sensitive tokens stored in .claude/settings.local.json and not ignored by git by default – anthropics/claude-code #13106](https://github.com/anthropics/claude-code/issues/13106?ref=reinaldoferro.com)
- [Most of 2,539 Leaked Secrets Sat in a Claude Code File – FourWeekMBA](https://fourweekmba.com/ai-most-of-2-539-leaked-secrets-sat-in-a-claude-code-file/?ref=reinaldoferro.com)