Пароли и API ключове, които разработчиците са въвели в команди, одобрени от тях в Claude Code, се намират в публични хранилища в GitHub, където всеки може да ги прочете.
Когато потребител избере „Yes, and don't ask again“ (Да, и не питай отново), AI асистентът за програмиране на Anthropic може да запази командата дума по дума, включително тайната информация, във файл с настройки на проекта.
Компанията за софтуерна сигурност Apiiro съобщи вчера, че 1122 публични копия на този файл съдържат поне една тайна, въпреки че не е тествала дали някоя от тях все още работи. Една от компаниите, които изследователите са уведомили по-рано тази седмица, е потвърдила, че нейният ключ е бил активен.
Въпросният файл е .claude/settings.local.json. Премахването му от проекта не заличава изтичането на данни, тъй като по-старите версии остават в историята на git и в разклоненията (forks) на хранилището. Съветът на изследователите е първо да се извърши ротация: сменете всяка парола, токен и ключ, които файлът някога е съдържал, и едва след това разчистете.
Как тайната попада във файла
По подразбиране Claude Code пита, преди да изпълни повечето shell команди. Ако потребителят избере „Yes, and don't ask again“, инструментът запазва правило за разрешаване в .claude/settings.local.json вътре в проекта, според документацията му за права на достъп. След това съвпадащите команди се изпълняват без питане в следващите сесии.
Правилото покрива само това, което е предложил въпросът за потвърждение. Понякога това е шаблон, като например npm test *, а понякога е една точна команда. Когато става въпрос за точната команда, всяка парола или токен, въведени в нея, също се запазват в чист текст.
В публичните файлове изследователите са открили запазени команди, в които тайната все още присъства, и са възпроизвели това поведение с най-новите модели – Opus 5.5 и Fable 5.1.
Claude Code се опитва да държи файла извън git. Първия път, когато запише файла в git хранилище, той го добавя към глобалните изключения на git за потребителя, се казва в документацията за настройките му. След това Git на този компютър игнорира файла във всяко хранилище.
Тази защита остава в настройките на git на един потребител и на един компютър. Тя не помага по никакъв начин за файл, който вече е бил качен (committed), казват изследователите. Claude Code никога не добавя файла към собствения .gitignore на проекта, така че защитата не се пренася заедно с проекта.
В 539 от 1105-те хранилища, които изследователите са проследили, комит, посочващ Claude като съавтор, е променил файла. Те тълкуват това като знак, че Claude често сам качва файла в хранилището.
Какво открива Apiiro
Търсенето на Apiiro в публичния GitHub е открило 104 185 копия на файла в 103 617 хранилища, показва докладът от проучването. Около 1,1% от тях, или 1122 копия, съдържат поне една тайна. Общо те съдържат 1379 различни тайни.
Дадена стойност се е брояла за тайна, когато е съвпадала с известен формат на ключ или когато парола или токен са се намирали до адреса на публичен сървър. AI проверяващ също е трябвало да потвърди това. Изследователите не казват дали някой се е възползвал от тези тайни.
Повече от една трета от тайните отварят директно база данни, включително 379 пароли за бази данни. Други включват 43 SSH данни за вход в публични сървъри, 42 токена за GitHub, GitLab и npm, както и 23 AWS ключа.
Сред собствениците на тези файлове са 63 организации, предимно софтуерни компании от всякакъв мащаб. Най-сериозните случаи включват собствен облачен ключ с администраторско ниво на доставчик на бази данни и парола на собственика за база данни с медицински досиета, казват изследователите.

Към понеделник всеки файл с тайна все още се е намирал в основния клон (default branch) на съответното хранилище, а в половината от тези хранилища е стоял там от поне 217 дни.
По-старите версии на файла съдържат още 734 тайни в 509 хранилища, които не присъстват в нито едно текущо копие, обикновено защото файлът е бил изтрит. Разклоненията (forks) разпространяват файловете още повече: 211 разклонения на 74 хранилища носят същите тайни като оригиналите.
Тайни се крият и в 298 от 76 011 копия на споделения файл .claude/settings.json, който екипите качват умишлено в хранилищата, най-често вътре в правила за разрешаване. Включвайки тях, по-старите версии и запазените логове от чатове с агента, общият брой достига 2539 тайни в 1994 хранилища.
От 16 агента за програмиране, чиято документация изследователите са сравнили, Claude Code е единственият, за който е потвърдено, че по подразбиране запазва пълната одобрена команда във файл на проекта.
Какво да предприемете
За разработчиците изследователите препоръчват следните стъпки:
- Претърсете вашата GitHub организация за .claude/settings.local.json и .claude/settings.json и проверете историята на git във всяко хранилище за тях, дори когато файловете вече ги няма.
- Сменете всяка парола, токен и ключ, които файловете някога са съдържали, преди да пристъпите към изчистване.
- Спрете проследяването на локалния файл с git rm --cached .claude/settings.local.json и го добавете към собствения .gitignore на хранилището.
- Отворете файла на собствения си компютър, дори ако никога не е бил качван в git, и изтрийте всяко правило, което съдържа тайна.
- Дръжте тайните извън командите. Използвайте ги като променливи от мениджър на тайни, като например $DB_URL, така че запазеното правило да съдържа името на променливата, а не самата тайна.
- Одобрявайте шаблони, като например Bash(npm run:*), вместо единични команди.
Копията, които никога не стигат до GitHub, също имат значение, казват изследователите. Файлът е в чист JSON формат в папката на проекта и може да остане вътре в npm пакет, Docker изображение, zip архив или синхронизирана папка.
Зловреден софтуер и преди е търсил тайни на машините на разработчици. През септември 2025 г. червеят Shai-Hulud стартира скенера за тайни TruffleHog върху заразени компютри и скенерът отбеляза повече от половината от файловете като съдържащи тайни.
Масовите скенери за тайни пропускат много от тези файлове. Изследователите са пуснали gitleaks и TruffleHog върху всяко копие, без стъпката за верификация на инструментите. От 1122 файла с тайна, gitleaks е отбелязал 564, а TruffleHog – 643, като нито един от двата не е отбелязал 215.
Повечето пропуски са пароли, въведени вътре в команди. Скенерите търсят известни формати на ключове, а парола след PGPASSWORD=, sshpass -p или mysql -p изглежда като обикновена дума в обикновен команден ред.
За екипите по сигурност изследователите препоръчват:
- Третирайте папките на агенти като .claude/, .cursor/, .gemini/ и .specstory/, както и файловете с памет на агентите, като съдържащи тайни – подобно на .env файловете – както на лаптопите, така и в хранилищата.
- Добавете ги към сканирането за тайни преди комит (pre-commit) и в CI процесите, включително историята на git, и се уверете, че скенерът улавя пароли вътре в команди, а не само известни формати на ключове.
- Добавете .claude/settings.local.json към шаблоните за .gitignore на организацията.
- Проверете първо идентификационните данни, свързани с публичен сървър, тъй като те са тези, които дават реален достъп.
Предишни доклади
Потребителите на Claude Code са докладвали за това поведение и преди. В по-ранен доклад за грешка, подаден на 11 август 2025 г., се посочва, че одобрените команди с API ключове и токени се съхраняват дума по дума в settings.local.json.
Автоматизиран бот е затворил този доклад като „непланиран“ (not planned) на 3 януари след 60 дни без активност.
Към днешна дата четирите свързани доклада, които изследователите цитират, са били затворени от същия бот, последният от които вчера. Нито един от тях не е получил отговор от Anthropic, казват те.