Claude Code від Anthropic записує паролі, API-ключі й SSH-логіни у відкритому вигляді у файл .claude/settings.local.json. Дослідники Apiiro знайшли 1122 такі файли з реальними секретами в публічних репозиторіях GitHub.
Для білдера важлива механіка, а не кількість. Файл з'являється після звичайного кліку «Yes, and don't ask again», а чистка репозиторію проблему не знімає. Навіть сканери секретів знаходять не все, тож лишається ротація ключів.
Як секрет потрапляє у файл налаштувань?
Секрет потрапляє у файл, коли користувач дозволяє Claude Code виконувати shell-команду без повторних запитів, а команда містить пароль чи токен. За даними за даними iTnews, вибір «Yes, and don't ask again» зберігає правило дозволу в .claude/settings.local.json у папці проєкту. Якщо правило записує точну команду, а не шаблон, разом із нею зберігається все, що в неї вписали.
Локально це не катастрофа. Але, за даними Ars Technica, документація Anthropic додає файл у глобальний .gitignore, а на рівні репозиторію цього запису немає. Тому файл може потрапити в коміт, якщо репозиторій клонували на іншу машину або папку згодом зробили репозиторієм. Ars із посиланням на Apiiro пише, що Claude Code іноді сам комітить зміни в цьому файлі без участі користувача.
Борис Черні, керівник Claude Code в Anthropic, бачить це інакше. Він заявив на Hacker News, що Claude Code додає файл у gitignore при створенні, а отже, публічні копії хтось створив вручну й закомітив. Ці твердження суперечать одне одному, і за наявними матеріалами перевірити, хто правий, неможливо.
Скільки секретів знайшли і чому цифри різняться?
Apiiro знайшла 104 185 копій файла в 103 617 репозиторіях, і 1122 з них містили щонайменше один реальний секрет (усього 1379 унікальних). Це дані iTnews. Ars Technica пише про «понад 100 000» випадків і «близько 1100» файлів із секретами та зазначає, що вони походять із 63 організацій.
iTnews уточнює, що більшість файлів належала окремим розробникам, а 63 організації постраждали додатково. Серед секретів було 379 паролів до баз даних, 122 service-role ключі Supabase, 43 SSH-логіни до публічних серверів (частина з root-паролями), 42 токени GitHub, GitLab і npm та 23 ключі AWS. Якщо додати старіші версії файла, спільний файл налаштувань команди й збережені чати агента, підсумок зростає до 2539 секретів у 1994 репозиторіях.
Apiiro не перевіряла, чи ключі ще працюють. Одна з повідомлених організацій підтвердила, що її ключ був активним. Серед прикладів iTnews називає хмарний API-ключ вендора баз даних з правами керування та production-токен Square програмної агенції.
Чи допоможуть сканери секретів і що відповів Anthropic?
Сканери секретів допомагають лише частково: gitleaks позначив 564 із 1122 файлів, TruffleHog 643, а 215 із 1122 (близько 19%) не помітив жоден. Apiiro відтворила поведінку на Opus 5.5 і Fable 5.1 та наголошує, що це властивість Claude Code, а не моделі.
Черні сказав, що Claude Code історично не чистить секрети, бо для цього є окремі інструменти, але команда шукає способи запобігти витоку. Вона планує прототипувати перехоплення таких команд в auto mode та базове сканування секретів, хоча це може не вирішити проблему. Коли читач вказав, що в auto mode можливий такий самий витік, Черні відповів: «Yeah good catch». Сам він радить auto mode замість правил дозволів і сканування секретів на боці GitHub та інших хостингів.
Загроза не обмежується GitHub: файл лежить на машині розробника як звичайний JSON. У вересні 2025 року npm-черв'як Shai-Hulud запускав TruffleHog по файлах жертв. Користувачі повідомляють про проблему в GitHub issues із серпня 2025 року, а у квітні Lakera (належить Check Point) знайшла облікові дані у 33 таких файлах у 30 пакетах npm.
Що робити зараз
Apiiro радить такі кроки:
- Змініть усі облікові дані, які будь-коли потрапляли у файл, перш ніж чистити репозиторій. Видалення лишає секрети в git-історії, форках і клонах.
- Приберіть .claude/settings.local.json з індексу git і додайте його в .gitignore кожного репозиторію, а не лише в глобальний.
- Передавайте секрети через змінні середовища, а не вписуйте їх у команди.
- Схвалюйте шаблони команд, а не буквальні команди.








