Wie met Claude Code werkt en commando's goedkeurt met "ja, en vraag het niet meer", kan ongemerkt wachtwoorden op GitHub zetten. Dat gebeurt als het lokale instellingenbestand van Claude Code mee naar een openbare repository gaat. Beveiligingsonderzoekers van Apiiro vonden zo in openbare repositories duizenden geheimen, zoals databasewachtwoorden, API-tokens en root-inloggegevens. Ars Technica bracht het onderzoek naar buiten.

Hoe het lek ontstaat

Claude Code, de programmeeragent van Anthropic, vraagt toestemming voordat hij een shellcommando uitvoert. Kies je voor "Yes, and don't ask again", dan schrijft Claude Code een regel weg in het lokale bestand .claude/settings.local.json. Soms staat daar een algemeen patroon in, maar volgens Ars Technica vaak ook het volledige commando. Zat daar een wachtwoord of token in, bijvoorbeeld in een databaseverbinding, dan staat dat er dus letterlijk in.

Op je eigen computer is dat niet direct een probleem. Volgens de documentatie van Anthropic zet Claude Code het bestand de eerste keer dat het dit aanmaakt in je globale git-uitsluitingen, zodat het niet mee wordt gecommit. Maar die instelling geldt niet op het niveau van de repository zelf. Kloon je een project naar een andere machine, of wordt een map later pas een Git-repository, dan kan het bestand alsnog worden geüpload. Volgens Apiiro commit Claude Code wijzigingen in dat bestand in veel gevallen zelf, zonder dat de gebruiker erom vraagt.

Ruim 100.000 gevallen, ongeveer 1.100 met geheimen

De onderzoekers vonden meer dan 100.000 gevallen waarin het lokale instellingenbestand in een openbare GitHub-repository stond. In ongeveer 1.100 daarvan, van 63 verschillende organisaties, zaten echte geheimen. Het verwijderen van het bestand lost het probleem niet altijd op: in forks van een project en in de Git-geschiedenis kunnen de gegevens blijven staan.

Wat je nu kunt doen

  • Zet .claude/settings.local.json expliciet in de .gitignore van elk project, niet alleen in je globale instellingen.
  • Zoek in je eigen repositories en hun geschiedenis naar dit bestand. Staat het erin met een geheim, behandel dat geheim dan als gelekt en vervang het (roteren), ook als je het bestand al verwijderd hebt.
  • Geef liever geen permanente toestemming voor commando's waar wachtwoorden of sleutels in staan. Laad geheimen via omgevingsvariabelen of een secrets-manager.
  • Gaf een gelekte sleutel toegang tot persoonsgegevens, ga dan na of je het als datalek moet melden.

Het probleem zit deels in het gedrag van de tool en deels in hoe teams met geheimen omgaan. Volgens Ars Technica kijkt het Claude Code-team wat het kan doen om dit te voorkomen, maar dat is geen reden om je eigen repositories niet nu al na te lopen.