Den mest bekväma knappen i Anthropics Claude Code - "Ja, och fråga inte igen" - har tyst förvandlats till en maskin som läcker inloggningsuppgifter, enligt ny forskning från applikationssäkerhetsföretaget Apiiro. När utvecklare godkänner ett kommando som innehåller en hemlighet, sparar Claude Code det exakta kommandot, inklusive hemlighet, till en lokal inställningsfil som ofta hamnar i offentliga GitHub-förråd. Apiiros genomsökning fann 2 539 riktiga hemligheter i 1 994 offentliga förråd: databaslösenord, moln-API-nycklar, tokens och SSH-rotinloggningar, spridda över 63 organisationer, de flesta av dem mjukvaruföretag. Ett drabbat företag bekräftade för forskare att en exponerad nyckel hade varit aktiv. Det är den andra Claude Code-integritetsincidenten den här månaden, efter verktygets avslöjande av användarnas e-postmeddelanden till webbplatser via User-Agent-rubriker – och den här berör produktionsinfrastruktur, inte bara kontaktinformation. Vi följer AI-kodningsagentens säkerhet noga i vår AI-verktygstäckning.

Hur en tillståndsregel blir en läcka

Mekanismen är en bieffekt av Claude Codes tillståndssystem, som ber om godkännande innan man kör skalkommandon - ofta flera gånger per session. Be agenten att felsöka en databasanslutning eller anropa ett internt API, och kommandot som den föreslår innehåller de uppgifter som uppgiften kräver, eftersom det inte kan fungera utan dem.

Välj "Ja, och fråga inte igen," och Claude Code kör kommandot och skriver en behörighetsregel till `.claude/settings.local.json` inuti projektmappen. Regeln är inte en abstraktion: det är den fullständiga kommandosträngen i sig, lösenord inskrivet i vanlig text och allt.

Filen är designad för att stanna kvar på utvecklarens maskin, och Claude Code försöker skydda den — genom att lägga till den i utvecklarens globala git-ignoreringslista. Det täcker det vanliga fallet, men inte kantfallen: en mapp som senare blir ett arkiv, en klon på en annan maskin där den globala ignoreringen inte finns, eller en fil som någon begick innan ignoreringsposten lades till. Avgörande är att regeln aldrig landar i förvarets egen `.gitignore`, så inget skydd följer med projektet.

För att förvärra problemet, begår Claude Code ofta filen själv. I 539 av de 1 105 arkiven där Apiiro spårade en verklig hemlighet, hade en commit som var medförfattare av Claude ändrat inställningsfilen – begår namnet på modeller som sträcker sig från Sonnet 4.5 till Opus 5.5. Apiiro noterar att beteendet är Claude Codes eget, inte modellens: företaget reproducerade det med både Opus 5.5 och Fable 5.1.

Exponeringens omfattning

Apiiro räknade 104 185 offentliga kopior av `.claude/settings.local.json` på GitHub. Av dessa innehåller 1 122 minst en riktig hemlighet. Forskarna hittade 1 160 fler hemligheter som döljer sig i repository git-historik, i de delade `settings.json`-filer som team begår medvetet och i sparade agentchattutskrifter som checkats in i repos.

Exemplen som Apiiro dokumenterar läses som en checklista för sämsta praxis. En databasleverantör exponerade sin egen moln-API-nyckel på administratörsnivå – med hantera åtkomst och utan utgång – tillsammans med sin klustervärd. En B2B-start läckte ett produktionslösenord för Azure Postgres. En mjukvarubyrå avslöjade en Square-produktionsåtkomsttoken. Ett IT-tjänstföretag som byggde en applikation för medicinska journaler läckte ägarlösenordet för databasen. Projekt med öppen källkod gick inte bättre: ett med mer än 1 000 stjärnor publicerade en API-nyckel i OpenAI-format, ett annat en npm-token.

Säkerhetskontexten gör fyndet värre. Skadlig programvara som stjäl autentiseringsuppgifter sveper redan utvecklarmaskiner i bulk – Apiiro pekar på Shai-Hulud npm-masken, som körde TruffleHog-skannern över offrens filer. Samma skanner skulle flagga 643 av de 1 122 läckta filer som Apiiro hittade. Mer oroande är resterna: en av fem av de läckta filerna flaggas av varken TruffleHog eller gitleaks, vanligtvis för att hemligheten är ett lösenord som skrivits in i ett kommando snarare än en nyckel i ett igenkännbart tokenformat. Hemliga skannrar är med andra ord strukturellt blinda för denna läckageklass.

Vad berörda team bör göra

Apiiros saneringsvägledning börjar med att avgränsa sprängradien. Sök i din GitHub-organisation efter `.claude/settings.local.json` och `.claude/settings.json` — varje träff är en fil som alla kan läsa just nu. Kontrollera varje arkivs git-historik för filen även om den har tagits bort, eftersom varje gaffel och klon bevarar allt som historiken innehåller. Granska sedan de lokala kopiorna på varje utvecklarmaskin: varje post i listan över tillåtna är ett kommando som någon godkänt, med vad som än skrevs in i det.

Företagets beställning spelar roll: rotera först, städa sedan. Att ta bort en fil från ett arkiv gör ingenting med referenser som redan var offentliga, och git-historiken håller avslöjade hemligheter vid liv på obestämd tid.

Ett mönster, inte en engångsföreteelse

För Anthropic landar fyndet en vecka efter att Claude Code ertappades med att läcka användarnas e-postadresser till varje webbplats den besökte via User-Agent-rubriker - en bugg fixad genom att skicka en integritetsändring, som kritiker kallade ett plåster. De två incidenterna delar en grundorsak: en agent som hanterar kraftfulla sammanhang – referenser, kontaktuppgifter, interna värdnamn – och fattar standardbeslut om vart sammanhanget färdas.

Lektionen generaliserar bortom Claude Code. När kodningsagenter blir standardutrustning blir filerna de skriver för att organisera sig själva ett nytt, osannat hörn av mjukvaruförsörjningskedjan. Apiiros siffror tyder på att hörnet redan läcker i en skala som de flesta organisationer inte har börjat mäta.

Ligg före AI

AI-verktyg levereras snabbare än vad deras säkerhetsrecensioner kan hänga med. Följ varje utveckling i vår AI-nyhetsbevakning.

Läs mer AI-nyheter →