Knappen, filen och kommandot

Applikationssäkerhetsföretaget Apiiro publicerade den 6 november en undersökning som hittade 2 539 verkliga hemligheter i 1 994 publika GitHub-arkiv, nästan alla skrivna dit av en kodningsagents egen behörighetsfil.

Mekanismen är vardaglig. Claude Code frågar innan den kör ett skalkommando. Väljer man “Ja, och fråga inte igen” sparas en tillåtelseregel i .claude/settings.local.json i projektmappen. När den godkända regeln är ett bokstavligt kommando i stället för ett mönster sparas allt som skrevs in i kommandot — ett databaslösenord, en token, en SSH-inloggning — tillsammans med det, i klartext, i en fil som ligger bredvid koden.

Apiiro sökte igenom publika GitHub mellan den 1 och 3 november och hittade 104 185 kopior av filen i 103 617 arkiv. Av dem innehöll 1 122 filer, omkring 1,1 procent, en verklig hemlighet: 1 379 skilda värden totalt, varav 636 matchade ett känt leverantörsnyckelformat och 743 var lösenord eller tokens intill en publik server. Mer än en tredjedel öppnar en databas direkt, däribland 379 databaslösenord och 122 Supabase-servicenycklar, vid sidan av 43 SSH-inloggningar till publika servrar, 42 tokens för GitHub, GitLab och npm samt 23 AWS-nycklar.

Rader av serverrack i en datorhall
Apiiro uppger att man inte testat någon inloggningsuppgift och inte kontaktat någon server. Illustrationsbild. Brett Sayles · pexels · Pexels License

Varför filerna alls är offentliga

Claude Code försöker hålla filen lokal: när den skapar den inuti ett arkiv läggs den till i utvecklarens globala git-undantag. Det täcker standardfallet och inget mer. Det täcker inte en mapp som blir ett arkiv i efterhand, en klon på en annan dator eller en fil som någon redan checkat in, och regeln hamnar aldrig i arkivets eget .gitignore, så inget skydd följer med projektet.

Apiiro rapporterar också att agenten ofta checkar in filen själv: i 539 av de 1 105 arkiv med en verklig hemlighet som gick att spåra hade en commit med Claude som medförfattare ändrat den. Claude Codes commit-instruktioner säger åt modellen att inte checka in .env eller credentials.json; dess egen inställningsfil står inte på den listan. Av 16 kodningsagenter vars dokumentation Apiiro jämförde är Claude Code enligt företaget den enda som bekräftat skriver hela det godkända kommandot till en projektfil som standard.

Exponeringen är inte kortvarig. Varje berörd fil låg kvar på arkivets huvudgren när Apiiro kontrollerade, och i medianfallet hade den legat där i 217 dagar. Att radera den stänger inte hålet: äldre versioner av filen rymmer ytterligare 734 hemligheter i 509 arkiv som inte finns i någon aktuell kopia, och 211 förgreningar av 74 arkiv bär samma värden.

Ett tomt kontorslandskap med rader av skrivbord och stolar
Filerna ligger kvar även på utvecklarnas datorer, där skadlig kod redan letar efter inloggningsuppgifter. Illustrationsbild. cottonbro studio · pexels · Pexels License

Vad skannrarna missar, och vad Anthropic säger

Generiska hemlighetsskannrar fångade ungefär hälften. Körda över alla 104 185 filer flaggade gitleaks 564 av de 1 122 med en verklig hemlighet och TruffleHog 643; 215 flaggades av ingen av dem. Glappet är lösenord som skrivs in i kommandon — efter PGPASSWORD=, sshpass -p eller mysql -p — och som ser ut som vanliga ord snarare än nyckelformat.

Apiiro uppger att man underrättade varje berörd organisation den 2 och 3 november och Anthropic via den kanal företaget anvisar. Man noterar också att användare rapporterat mekanismen i Claude Codes GitHub-ärenden sedan augusti 2025, att inget fick svar och att tre stängdes automatiskt som inaktiva eller dubbletter.

Anthropics Claude Code-ansvarige Boris Cherny svarade på Hacker News den 7 november. “Historiskt har Claude Code inte gjort någon rensning av hemligheter (det finns många bra verktyg för det), men vi ser över vad vi kan göra för att förhindra detta”, skrev han och nämnde “att se till att autoläget fångar detta, att bygga in grundläggande hemlighetsskanning” bland de ansatser teamet skulle prototypa “innan vi skeppar något”. Han sade också att Claude Code lägger filen i gitignore när den skapas, så enligt honom har de exponerade kopiorna skapats för hand och checkats in.

Apiiros egna begränsningar anges rakt ut: ingen inloggningsuppgift användes eller testades, och “verklig hemlighet” betyder ett värde som matchar ett leverantörsformat eller pekar mot en publik server, inte ett som är känt att fungera. Ett underrättat företag bekräftade att dess nyckel var aktiv. Rådet som följer är föga glamoröst: rotera allt filen någonsin innehållit, sluta spåra den och godkänn mönster i stället för bokstavliga kommandon.