Claude Code по кнопке «Не спрашивать» сохраняет пароли в файл — 2539 секретов утекли на GitHub
Claude Code при выборе «Да, больше не спрашивать» сохраняет команду целиком, вместе с вшитыми в неё паролями и ключами, в файл .claude/settings.local.json. Если файл попадает в публичный репозиторий, секреты видны всем. Apiiro нашла 2539 секретов в 1994 репозиториях, а удаление файла не помогает, потому что Git хранит историю.
AI-обработка оригинала TG: @neuraldvig (Нейродвиж); редакция Hamidun News
Кнопка «Да, больше не спрашивать» экономит секунды, а потом может стоить вам ключей от облака. Исследователи Apiiro обнаружили, что Claude Code при таком подтверждении записывает разрешённую команду в файл настроек целиком, и если в ней были секреты, они остаются там открытым текстом.
Как это происходит
Представьте, что вы просите агента подключиться к базе данных. Он формирует команду вроде psql с паролем прямо в строке подключения или запускает curl с токеном в заголовке. Claude Code спрашивает разрешение, вы нажимаете «Да, больше не спрашивать», и чтобы не переспрашивать в будущем, агент сохраняет правило разрешения в .claude/settings.local.json. Правило содержит команду буквально, вместе с паролем.
Дальше работает обычная человеческая рассеянность. Файл лежит в проекте, разработчик делает git add . и git push, и секрет оказывается в публичном репозитории. Название файла со словом local создаёт ложное ощущение, что он никогда не покинет машину, но на практике его часто никто не исключает из индекса.
Масштаб проблемы
Apiiro нашла 2539 секретов в 1994 репозиториях. Среди них пароли от баз данных, SSH-доступы и ключи AWS. Это не теоретический сценарий, а уже случившиеся утечки, причём такие данные боты-сборщики находят в публичных репозиториях очень быстро.
Отдельная неприятность в том, что удаление файла следующим коммитом ничего не решает. Git хранит всю историю, и секрет остаётся доступен в старых коммитах. Единственный надёжный путь: считать ключ скомпрометированным, немедленно отозвать его и выпустить новый. Чистка истории через filter-repo нужна, но только как дополнительная мера.
Что делать прямо сейчас
- Проверьте репозитории на наличие .claude/settings.local.json и посмотрите, что в нём записано.
- Добавьте этот файл в .gitignore, а лучше в глобальный gitignore на машине.
- Включите pre-commit хуки и сканеры секретов вроде gitleaks или push protection на GitHub.
- Не передавайте секреты в командах: используйте переменные окружения, менеджеры секретов и профили AWS.
- Если файл уже был опубликован, ротируйте все указанные там ключи и пароли, не откладывая.
Ограничения и вывод
В этой истории нет злого умысла модели: это дефект дизайна удобной функции, в которой разрешение запоминается в виде полной строки. Остаётся вопрос, как быстро Anthropic изменит поведение, например начнёт сохранять шаблон без аргументов или маскировать чувствительные значения. Пока этого не произошло, ответственность лежит на команде.
Для продактов и основателей вывод шире: любой инструмент с функцией «запомнить моё решение» создаёт новый артефакт с чувствительными данными. Его нужно учитывать в модели угроз так же, как логи, дампы и .env. Агентам мы выдаём всё больше доступа, а гигиена вокруг их файлов настроек пока отстаёт. Потратьте десять минут на аудит сегодня, пока это не сделал кто-то другой за вас.
- 8 нояб. 2026 г.AWS запускает Claude Code удалённо: одна microVM на каждую задачу
- 8 нояб. 2026 г.Исследователи Fudan и Ant Group заставили LLM следовать юридической процедуре по графу
- 8 нояб. 2026 г.Разработчик вынес авторизацию Claude Code на VDS, оставив проекты на Mac
- 8 нояб. 2026 г.Thinking Machines выпустила Inkling 2 Small: лучшая открытая модель не из Китая
Вопросы и ответы по материалу
Что известно по теме: как это происходит?
Представьте, что вы просите агента подключиться к базе данных. Он формирует команду вроде psql с паролем прямо в строке подключения или запускает curl с токеном в заголовке. Claude Code спрашивает разрешение, вы нажимаете «Да, больше не спрашивать», и чтобы не переспрашивать в будущем, агент сохраняет правило разрешения в .claude/settings.local.json. Правило содержит команду буквально, вместе с паролем. Дальше работает обычная человеческая рассеянность. Файл лежит в проекте, разработчик делает git add .
Что известно по теме: масштаб проблемы?
Apiiro нашла 2539 секретов в 1994 репозиториях. Среди них пароли от баз данных, SSH-доступы и ключи AWS. Это не теоретический сценарий, а уже случившиеся утечки, причём такие данные боты-сборщики находят в публичных репозиториях очень быстро. Отдельная неприятность в том, что удаление файла следующим коммитом ничего не решает. Git хранит всю историю, и секрет остаётся доступен в старых коммитах. Единственный надёжный путь: считать ключ скомпрометированным, немедленно отозвать его и выпустить новый.
Что известно по теме: что делать прямо сейчас?
Проверьте репозитории на наличие .claude/settings.local.json и посмотрите, что в нём записано. Добавьте этот файл в .gitignore, а лучше в глобальный gitignore на машине. Включите pre-commit хуки и сканеры секретов вроде gitleaks или push protection на GitHub. Не передавайте секреты в командах: используйте переменные окружения, менеджеры секретов и профили AWS. Если файл уже был опубликован, ротируйте все указанные там ключи и пароли, не откладывая.
Соберите рабочего ИИ-агента или сервис своими руками без ручного кода
В Академии Жемала Хамидуна (academy.hamidun.com) открыт бесплатный 72-часовой тест-драйв: интерактивные скетч-уроки по Claude Code и Cursor, живой Tech Radar и готовые шаблоны агентов.
Главное из мира ИИ — раз в неделю
7 ключевых событий недели, отобранных вручную. Без шума, репостов и пресс-релизов.
Готово! Проверьте почту — мы отправили подтверждение.