Volgens de beveiligingsonderzoekers van Apiiro lekt Claude Code geheimen in openbare GitHub-repositories. Het probleem begint bij een lokaal instellingenbestand dat online terechtkomt zonder dat de ontwikkelaar het merkt. Tussen de gevonden gegevens zitten databasewachtwoorden, API-tokens en root-toegang. Dit is belangrijk voor iedereen die een AI-programmeerassistent gebruikt, want één onachtzame commit kan nog geldige inloggegevens openbaar maken.
Enkele begrippen, voordat we de feiten bespreken. .gitignore is het bestand dat Git vertelt welke bestanden niet mee moeten in commits. Repository is de projectmap die door Git wordt bijgehouden. Geheim is een inloggegeven, zoals een wachtwoord, API-token of privésleutel. Fork is een kopie van een project die een andere gebruiker op GitHub maakt. Commit is het opslaan van een reeks wijzigingen in de geschiedenis van het project.
Wat is er ontdekt over Claude Code en GitHub?
Dit vertelt Ars Technica, dat het onderzoek van Apiiro verslaat. De onderzoekers vonden meer dan 100.000 gevallen waarin het lokale instellingenbestand van Claude Code was geüpload naar een openbare GitHub-repository.
Niet alle bestanden bevatten gevoelige gegevens. Slechts ongeveer 1.100 bestanden, afkomstig van 63 verschillende organisaties, bevatten geheimen zoals openbare API-tokens, databasewachtwoorden of privésleutels. Het aantal is klein ten opzichte van het totaal, maar het gaat om echte inloggegevens, niet om voorbeelden.
Waarom komt het bestand online terecht?
Wanneer de gebruiker de optie «Ja, en vraag niet meer» kiest om een shell-commando goed te keuren, wordt die keuze een regel in het lokale bestand .claude/settings.local.json. Soms wordt de regel als generiek patroon opgeslagen. Vaak wordt het commando echter precies zo bewaard als het is, met alles wat erin staat, inclusief eventuele inloggegevens.
Zolang het bestand op de computer blijft, is het risico beperkt, tenzij de machine zelf gecompromitteerd is. Het probleem begint wanneer het bestand in een commit terechtkomt.
Zou het .gitignore niet voldoende moeten zijn?
In theorie wel. Volgens Ars Technica geeft de documentatie van Anthropic aan dat dit bestand aan het globale .gitignore van de ontwikkelaar wordt toegevoegd, wat publicatie meestal voorkomt.
Het zwakke punt is dat die regel niet op repositoryniveau geldt. Als het project op een andere machine wordt gekloond, of als een map later een repository wordt, kan het bestand per ongeluk worden geüpload. Apiiro voegt toe dat Claude Code in veel gevallen zelf de wijzigingen aan de instellingen commit, zonder tussenkomst van de gebruiker.
De officiële documentatie van GitHub legt het verschil uit. Een .gitignore in de hoofdmap van de repository geldt, eenmaal gecommit, voor iedereen die het project kloont. Die in ~/.config/git/ignore geldt alleen op jouw computer.
Is het genoeg het bestand te wissen?
Nee. Volgens Apiiro kunnen de geheimen, ook nadat de bestanden zijn ontdekt en uit een repository zijn verwijderd, in forks van het oorspronkelijke project blijven staan, als de gebruiker niet oplet.
De documentatie van GitHub herinnert er bovendien aan dat een bestand dat al wordt bijgehouden eerst uit de tracking moet worden gehaald met git rm --cached BESTANDSNAAM, en pas daarna heeft de uitsluitingsregel effect. Een regel toevoegen aan het .gitignore wist niet wat al in de geschiedenis staat. Als een inloggegeven eenmaal online is gekomen, moet je het daarom als gecompromitteerd beschouwen en vervangen.
Beperkingen om te kennen
De cijfers komen uit de analyse van Apiiro, zoals Ars Technica die beschrijft, en wij hebben de gegevens niet zelf geverifieerd. We weten niet hoeveel van de gevonden inloggegevens nog geldig waren, en ook niet of derden ze hebben gebruikt. In de bronnen staat geen reactie van Anthropic over mogelijke wijzigingen aan het gedrag van Claude Code. Het beeld kan veranderen als het bedrijf ingrijpt in de manier waarop goedgekeurde commando's worden opgeslagen.
Wat verandert voor wie met digitale tools werkt
Als je Claude Code gebruikt, controleer dan meteen of .claude/settings.local.json in een repository wordt bijgehouden, ook een privérepository. Een privéproject kan openbaar worden, of elders gekloond worden. Voeg het bestand toe aan het .gitignore van het project en commit dat, zodat de regel voor iedereen geldt. Wil je een bestand alleen op je eigen kopie uitsluiten, dan wijst GitHub op .git/info/exclude.
Let daarnaast op de gewoonte om wachtwoorden in commando's te zetten. Gebruik beter omgevingsvariabelen of een geheimenbeheerder. In een bedrijf is het zinvol om vóór elke push automatisch op geheimen te laten scannen.
Ons oordeel
Deze casus laat een beperking van het ontwerp zien, en niet alleen een onoplettendheid van gebruikers. Een bestand dat inloggegevens kan bevatten, hoort uitgesloten te worden waar het er toe doet, dus in de repository en niet alleen in de persoonlijke configuratie. Alles op de gebruiker afwentelen werkt slecht, zeker wanneer het hulpmiddel zelfstandig commits maakt. Toch blijft er ook een verantwoordelijkheid voor onszelf. Een commando met een wachtwoord in platte tekst is een gewoonte die je moet afleren, met of zonder AI-assistent. De snelheid die deze hulpmiddelen beloven, maakt discipline rond geheimen juist urgenter.
Veelgestelde vragen
Welk bestand van Claude Code bevat de geheimen?
Het bestand is .claude/settings.local.json. Daarin staan de regels die worden aangemaakt wanneer je een commando goedkeurt met «Ja, en vraag niet meer». Soms wordt het commando volledig opgeslagen, inclusief de inloggegevens.
Hoeveel blootgestelde bestanden vond Apiiro?
Meer dan 100.000 bestanden die op openbare GitHub-repositories waren geüpload. Ongeveer 1.100, afkomstig van 63 organisaties, bevatten geheimen zoals API-tokens, databasewachtwoorden of privésleutels.
Beschermt een globaal .gitignore tegen dit probleem?
Alleen gedeeltelijk. Het werkt op je eigen computer, maar niet binnen de repository. Als het project elders wordt gekloond, of een map later een repository wordt, kan het bestand alsnog in een commit terechtkomen.
Verwijdert het wissen van het bestand uit de repository de geheimen?
Nee. Volgens Apiiro kunnen de geheimen blijven bestaan in forks van het project. Als een inloggegeven eenmaal openbaar is gemaakt, moet je het als gecompromitteerd beschouwen en vervangen.
Hoe sluit ik een bestand uit dat al door Git wordt bijgehouden?
Haal het eerst uit de tracking met git rm --cached BESTANDSNAAM. Voeg daarna de regel toe aan het .gitignore. Zonder die eerste stap heeft de regel geen effect op een bestand dat al wordt bijgehouden.
Waar je de komende maanden op moet letten bij de beveiliging van Claude Code
De vraag is of Anthropic de manier verandert waarop goedgekeurde commando's worden opgeslagen. Houd tot die tijd de updates van het hulpmiddel in de gaten.
- Lees de releasenotes van Claude Code om te zien of het beheer van settings.local.json verandert, te beginnen bij ons artikel over versie 2.1.319.
- Zoek in de geschiedenis van je repositories naar .claude-bestanden die al zijn gecommit, en draai de inloggegevens die je daarin vindt opnieuw.
- Controleer je regels voor branchbescherming, aan de hand van onze gids over pull requests op GitHub.




