Azok a jelszavak és API-kulcsok, amelyeket a fejlesztők a Claude Code-ban jóváhagyott parancsokba írtak, most nyilvános GitHub tárolókban hevernek, bárki számára olvashatóan.
Ha a felhasználó a „Yes, and don't ask again” lehetőséget választja, az Anthropic AI-alapú kódsegédje elmentheti a parancsot szó szerint, a benne lévő titkokkal együtt, egy projektbeállítási fájlba.
Az Apiiro nevű szoftverbiztonsági cég tegnap közölte, hogy 1 122 nyilvános példányban találtak ilyen fájlt, amelyek mindegyike legalább egy titkot tartalmaz. Nem vizsgálták, hogy ezek közül bármelyik még működik-e. Az egyik, a héten értesített cég megerősítette, hogy a kulcsa valóban aktív volt.
A kérdéses fájl neve: .claude/settings.local.json. Ha ezt eltávolítják a projektből, az nem szünteti meg a szivárgást, mert a korábbi verziók megmaradnak a Git előzményeiben és a tároló forkjaiban. A kutatók azt javasolják, hogy először forgassák meg a titkokat: cseréljenek le minden jelszót, tokent és kulcsot, ami valaha szerepelt a fájlban, és csak ezután kezdjenek takarítani.
Hogyan kerül a titok a fájlba
Alapértelmezés szerint a Claude Code rákérdez, mielőtt a legtöbb shell parancsot lefuttatja. Ha a felhasználó a „Yes, and don't ask again” opciót választja, a program engedélyező szabályt ment a projekt .claude/settings.local.json fájljába, a jogosultságokról szóló dokumentáció szerint. A későbbi munkamenetekben az ehhez illeszkedő parancsok már rákérdezés nélkül futnak.
A szabály csak arra vonatkozik, amit a prompt felkínált. Ez néha egy minta, például npm test *, máskor egyetlen konkrét parancs. Ha konkrét parancsról van szó, akkor minden jelszó vagy token, amit a felhasználó beleír, szintén elmentődik, egyszerű szövegként.
A kutatók olyan nyilvános fájlokat találtak, amelyekben a mentett parancsok még mindig tartalmazták a titkot, és a jelenséget a legújabb modellekkel, az Opus 5.5-tel és a Fable 5.1-gyel is sikerült reprodukálniuk.
A Claude Code megpróbálja távol tartani a fájlt a Git-től. Amikor először írja ki a fájlt egy Git tárolóban, hozzáadja azt a felhasználó globális Git kizárásaihoz, a beállításokról szóló dokumentáció szerint. Az adott gépen futó Git ezután minden tárolóban figyelmen kívül hagyja a fájlt.
Ez a védelem csak az adott felhasználó Git beállításaiban, azon az egy gépen érvényes. A kutatók szerint semmit nem ér azoknál a fájloknál, amelyeket már korábban elköteleztek. A Claude Code soha nem teszi be a fájlt a projekt saját .gitignore-jába, így a védelem nem utazik együtt a projekttel.
A kutatók által vizsgált 1 105 tárolóból 539-ben olyan commit módosította a fájlt, amelynél Claude társszerzőként szerepelt. Ebből arra következtetnek, hogy a fájlt sokszor maga Claude commitolja.
Mit talált az Apiiro
Az Apiiro keresése 104 185 példányt talált a fájlból a nyilvános GitHub-on, összesen 103 617 tárolóban, a kutatási beszámoló szerint. Ezek körülbelül 1,1%-a, vagyis 1 122 példány tartalmaz legalább egy titkot. Összesen 1 379 különböző titkot azonosítottak.
A kutatók akkor számoltak egy értéket titoknak, ha ismert kulcsformátumra hasonlított, vagy ha egy jelszó vagy token egy nyilvános szerver címe mellett szerepelt. Egy AI-alapú ellenőrzőnek is jóvá kellett hagynia. Nem derül ki a beszámolóból, hogy bárki ténylegesen használta-e ezeket a titkokat.
A titkok több mint harmada közvetlenül adatbázist nyit meg, köztük 379 adatbázis-jelszóval. Emellett 43 SSH-hozzáférés nyilvános szerverekhez, 42 token GitHub-hoz, GitLabhoz és npm-hez, valamint 23 AWS-kulcs is előkerült.
A fájlok tulajdonosai között 63 szervezetet azonosítottak, többségük különböző méretű szoftvercég. A legerősebb esetek között szerepel egy adatbázisgyártó saját, admin szintű felhőkulcsa, valamint egy orvosi nyilvántartásokat tároló adatbázis tulajdonosi jelszava – állítják a kutatók.
Hétfőig minden titkot tartalmazó fájl továbbra is ott volt a tároló alapértelmezett ágán, és ezek felében legalább 217 napja szerepelt ott.
A fájl régebbi verziói további 734 titkot tartalmaznak 509 tárolóban, amelyek egyik jelenlegi példányban sem szerepelnek, többnyire azért, mert a fájlt időközben törölték. A forkok tovább terjesztik ezeket: 74 tároló 211 forkja hordozza ugyanazokat a titkokat, mint az eredeti.
76 011 megosztott .claude/settings.json példány közül 298-ban is vannak titkok, ezeket a csapatok szándékosan commitolják, többnyire allow szabályokban. Ha ezeket, a régebbi verziókat és a mentett agent chat naplókat is beleszámítjuk, összesen 2 539 titok található 1 994 tárolóban.
A kutatók 16 kódoló agent dokumentációját hasonlították össze, és ezek közül egyedül a Claude Code-ról tudni biztosan, hogy alapértelmezés szerint a teljes jóváhagyott parancsot elmenti egy projektfájlba.
Mit érdemes tenni
A kutatók a fejlesztőknek az alábbi lépéseket javasolják:
- Keresd meg a GitHub szervezetben a .claude/settings.local.json és .claude/settings.json fájlokat, és nézd át mindegyik tároló Git előzményeit is, még ott is, ahol a fájlokat már törölték.
- Cserélj le minden jelszót, tokent és kulcsot, amely valaha ezekben a fájlokban szerepelt, még a takarítás előtt.
- Állítsd le a helyi fájl követését a Git rm --cached .claude/settings.local.json paranccsal, és vedd fel a tároló saját .gitignore fájljába.
- Nyisd meg a fájlt a saját gépeden is, akkor is, ha soha nem commitoltad, és törölj minden olyan szabályt, amely titkot tartalmaz.
- Ne írj titkokat a parancsokba. Hivatkozz rájuk változóként egy secrets managerből, például $DB_URL formában, így a mentett szabályban csak a változónév szerepel, nem maga a titok.
- Egyedi parancsok helyett mintákat hagyj jóvá, például bash(npm run:*).
A kutatók szerint azok a példányok is számítanak, amelyek soha nem kerülnek fel GitHub-ra. A fájl sima JSON a projekt mappájában, és bennmaradhat egy npm csomagban, egy Docker image-ben, egy zip archívumban vagy egy szinkronizált mappában is.
Korábban is voltak olyan kártevők, amelyek titkokat kerestek a fejlesztői gépeken. 2025 szeptemberében a Shai-Hulud féreg a TruffleHog secret scannert futtatta a fertőzött gépeken, és a scanner a fájlok több mint felét titokként jelölte meg.
A megszokott secret scannerek sok ilyen fájlt nem vesznek észre. A kutatók minden példányon lefuttatták a gitleaks és a TruffleHog eszközöket, a beépített ellenőrző lépésük nélkül. Az 1 122 titkot tartalmazó fájlból a gitleaks 564-et jelölt meg, a TruffleHog 643-at, 215-öt pedig egyik sem.
A legtöbb kimaradt találat jelszó, amit közvetlenül a parancsokba írtak. A scannerek ismert kulcsformátumokat keresnek, és egy jelszó a PGPASSWORD=, az sshpass -p vagy a mysql -p után úgy néz ki, mint egy átlagos szó egy átlagos parancssorban.
Biztonsági csapatoknak a kutatók ezt javasolják:
- Kezeljék az agent mappákat, például a .claude/, .cursor/, .gemini/ és .specstory/ könyvtárakat és az agent memóriát tartalmazó fájlokat titkokat tároló helyekként, ugyanúgy, mint a .env fájlokat – laptopokon és tárolókban is.
- Vegyék fel ezeket a pre-commit és CI secret scanning lépésekbe, beleértve a Git előzményeket is, és győződjenek meg róla, hogy a scanner a parancsokba írt jelszavakat is észreveszi, nem csak az ismert kulcsformátumokat.
- Vegyék fel a .claude/settings.local.json fájlt a szervezet .gitignore sablonjaiba.
- Először azokat a hitelesítő adatokat ellenőrizzék, amelyek nyilvános szerverrel vannak összepárosítva, mert ezek adnak tényleges hozzáférést.
Korábbi jelentések
A Claude Code felhasználói már korábban is jelezték ezt a viselkedést. Egy korábbi hibajelentés, amelyet 2025. augusztus 11-én nyújtottak be, arról számolt be, hogy a jóváhagyott, API-kulcsokat és tokeneket tartalmazó parancsokat szó szerint elmenti a settings.local.json.
Ezt a jelentést egy automata bot zárta le „nem tervezett” státusszal január 3-án, 60 nap inaktivitás után.
A kutatók szerint ma már mind a négy, általuk hivatkozott kapcsolódó jelentést lezárta ugyanaz a bot, a legutóbbit tegnap. Egyikre sem érkezett válasz az Anthropic részéről.

