Apiiro meldde dat Claude Code een opdracht die met “Yes, and don’t ask again” is goedgekeurd, kan opslaan in .claude/settings.local.json. Staat er een wachtwoord of token in die opdracht en belandt het bestand in een openbare GitHub-repository, dan kan die inloggegeven daar zichtbaar worden. In een steekproef van openbare kopieën trof Apiiro geheimen aan in 1.122 van de 104.185 onderzochte bestanden.

Hoe een goedgekeurde opdracht een geheim kan bewaren

Engelstalig commentaar van SavvyNik over de gemelde bevindingen van Apiiro, Git-geschiedenis en herstelmaatregelen

De keuze “Yes, and don’t ask again” kan een goedgekeurde shellopdracht als toegestane regel bewaren in het projectbestand .claude/settings.local.json. Een geheim dat letterlijk in die opdracht staat, kan daardoor ook in het bestand terechtkomen. Als het bestand vervolgens in een openbare repository wordt opgenomen, is die waarde mogelijk openbaar. Apiiro rapporteerde dit mechanisme; het gaat om de combinatie van een opdracht met een geheim en een gepubliceerd instellingenbestand.

Wat Apiiro’s cijfers tellen

Apiiro verzamelde tussen 1 en 3 november 2026 gegevens uit openbare GitHub-repositories. In 1.122 van de 104.185 onderzochte kopieën van .claude/settings.local.json vond het bedrijf minstens één echt geheim, ongeveer 1,1 procent. Die bestanden bevatten samen 1.379 afzonderlijke geheimen.

Een ruimer onderzoek telde 2.539 geheimen in 1.994 repositories en 63 organisaties. Dat totaal omvatte ook Git-geschiedenis en andere bestanden voor programmeeragents. Het gaat dus om een andere verzameling dan de 1.122 bestanden met geheimen. Apiiro publiceerde de studie op 5 november 2026.

De steekproef betrof openbare GitHub-gegevens. Apiiro meldde dat één bedrijf één blootgestelde sleutel als actief bevestigde. Het bedrijf testte de overige gevonden inloggegevens niet.

Waarom verwijderen niet hetzelfde is als intrekken

Een instellingenbestand van de huidige versie verwijderen, trekt een wachtwoord of sleutel niet in. Oudere versies kunnen in de Git-geschiedenis blijven staan; ook forks en clones kunnen kopieën bevatten. De meldingen over het onderzoek beschrijven bovendien een lokale, algemene Git-uitsluitregel. Die wordt niet automatisch een regel in de .gitignore van het project, reist niet mee met de repository en beschermt geen bestand dat al wordt bijgehouden door Git.

Bij een mogelijke blootstelling komt het intrekken of vervangen van de inloggegeven vóór het opruimen van bestanden en Git-geschiedenis.

Welke bescherming scanners bieden

Apiiro meldde dat 215 bestanden met geheimen niet werden gevonden door Gitleaks of TruffleHog. Wachtwoorden die in shellopdrachten of aanvraagheaders zijn opgenomen, kunnen afwijken van herkenbare patronen voor API-sleutels. Een scanner kan daarom een geheim missen, ook als die bekende sleutelvormen herkent.

Wat te doen bij een mogelijke blootstelling

  1. Trek de mogelijk blootgestelde sleutel of het wachtwoord in, of vervang die eerst. Het verwijderen van een bestand maakt een nog geldige inloggegeven niet onbruikbaar.
  2. Doorzoek de repository en de Git-geschiedenis op .claude/settings.local.json en andere bestanden waarin opdrachten of geheimen kunnen zijn opgeslagen.
  3. Haal het instellingenbestand uit Git-tracking en voeg een passende uitsluitregel toe aan de .gitignore van het project. Een lokale algemene Git-uitsluiting vervangt die projectregel niet.
  4. Controleer het lokale instellingenbestand en zet geen wachtwoorden of tokens letterlijk in opdrachten die je blijvend toestaat.