Claude Code оставил секреты в 1122 публичных файлах GitHub из-за «Don't ask again»
Когда вы нажимаете в Claude Code «Don't ask again», агент записывает разрешение в файл настроек проекта. Если в команде был токен или пароль, он уезжает в файл вместе с ней. Аналитики Qodo нашли такие секреты в 1122 публичных файлах настроек на GitHub. Настройки агента — это уже код, и ревьюить их нужно как любой другой коммит.
AI-обработка оригинала Qodo Blog; редакция Hamidun News
Вы просите агента дёрнуть API, он спрашивает разрешения на команду, а вы устали нажимать «Yes» в десятый раз и выбираете «Don't ask again». Удобно. Но Qodo выяснил, что у этой кнопки есть побочный эффект: в 1122 публичных файлах настроек на GitHub нашлись секреты, которые туда сохранил сам Claude Code.
Как секрет попадает в конфиг
У Claude Code есть система разрешений. Когда вы соглашаетесь «больше не спрашивать» про конкретную команду, агент дописывает правило в файл настроек внутри папки .claude. Есть общий settings.json, который обычно коммитят вместе с проектом, и локальный settings.local.json для личных правил.
Проблема в том, что правило описывает команду буквально, со всеми аргументами. Допустим, вы попросили агента сделать запрос через curl, а токен вставили прямо в заголовок. Агент запомнит эту строку целиком, и токен окажется в файле открытым текстом. Это иллюстрация механизма, а не цитата из отчёта. Но логика именно такая: вы ничего не «сохраняли», вы нажали кнопку удобства.
Дальше работает обычная человеческая инерция. Папку .claude кто-то коммитит целиком, потому что там «полезные настройки для команды». Репозиторий оказывается публичным, и секрет лежит на виду.
Почему это не мелочь
Мы привыкли, что секреты утекают из .env, из конфигов облака, из захардкоженных строк в коде. Файлы настроек агента в эту картину не вписывались: их воспринимали как «личные предпочтения редактора», вроде темы оформления. Но там уже лежат исполняемые разрешения: что агенту можно запускать без вопросов. Значит, у файла две роли сразу: политика безопасности и потенциальное хранилище секретов.
Ещё важнее другое. Эти файлы пишет не человек, а инструмент, причём в ответ на клик, а не на осознанное решение «сохранить конфиг». Никто не перечитывает то, что не писал сам. Отсюда и вывод Qodo: настройки агента надо ревьюить как код.
Что делать прямо сейчас
- Проверьте свои репозитории. Поищите по .claude/ строки, похожие на ключи, токены и пароли, в том числе в истории git. Удаления файла из последнего коммита недостаточно: история остаётся.
- Ротируйте всё, что нашли. Если токен хоть раз был в публичном репозитории, считайте его скомпрометированным.
- Закройте локальный файл. settings.local.json должен быть в .gitignore. Не надейтесь, что кто-то это уже сделал.
- Уберите секреты из самих команд. Передавайте их через переменные окружения или менеджер секретов, тогда в правило попадёт имя переменной, а не значение.
- Включите автоматику. Secret-сканер в pre-commit и CI, а на GitHub ещё и push protection. Добавьте .claude в CODEOWNERS, чтобы изменения разрешений агента не проходили мимо ревью.
- Не злоупотребляйте «Don't ask again». Для команд с чувствительными аргументами лучше подтверждать каждый раз или писать узкое правило вручную.
Ограничения и оговорки
Отчёт опубликовал Qodo, а это вендор инструментов для код-ревью. Тема для него родная, и подаёт он её соответственно. Кроме того, из анонса не видно, сколько из найденных секретов были действующими. И 1122 файла — это то, что нашлось в публичном поиске, а не полная картина: приватные репозитории никто не считал.
При этом претензия не только к одному продукту. Тот же механизм «запомнить команду» есть и в других агентских инструментах, и к ним применимы те же вопросы. Разумное ожидание от разработчиков агентов: маскировать или не сохранять значения, похожие на секреты, и предупреждать перед записью.
Итог
Агентные инструменты создают новый класс артефактов: конфиги, которые пишутся сами, исполняются с вашими правами и легко уезжают в git. Относитесь к ним как к коду: ревью, сканирование, .gitignore. Это дешевле, чем разбираться с последствиями утёкшего ключа.
- 12 нояб. 2026 г.Дженсен Хуанг ушёл с поста CEO Nvidia: компания потеряла $1,4 трлн за две недели
- 12 нояб. 2026 г.Claude in Chrome требует разрешать каждый клик на сайтах с категорией 3
- 12 нояб. 2026 г.AWS Quick получил шесть агентов для продактов: от жалоб клиентов до спеки
- 12 нояб. 2026 г.Anthropic с 12 ноября закрывает Claude для компаний России, даже с юрлицом за рубежом
Вопросы и ответы по материалу
Что известно по теме: как секрет попадает в конфиг?
У Claude Code есть система разрешений. Когда вы соглашаетесь «больше не спрашивать» про конкретную команду, агент дописывает правило в файл настроек внутри папки .claude. Есть общий settings.json, который обычно коммитят вместе с проектом, и локальный settings.local.json для личных правил. Проблема в том, что правило описывает команду буквально, со всеми аргументами. Допустим, вы попросили агента сделать запрос через curl, а токен вставили прямо в заголовок.
Что известно по теме: почему это не мелочь?
Мы привыкли, что секреты утекают из .env, из конфигов облака, из захардкоженных строк в коде. Файлы настроек агента в эту картину не вписывались: их воспринимали как «личные предпочтения редактора», вроде темы оформления. Но там уже лежат исполняемые разрешения: что агенту можно запускать без вопросов. Значит, у файла две роли сразу: политика безопасности и потенциальное хранилище секретов. Ещё важнее другое.
Что известно по теме: что делать прямо сейчас?
Проверьте свои репозитории. Поищите по .claude/ строки, похожие на ключи, токены и пароли, в том числе в истории git. Удаления файла из последнего коммита недостаточно: история остаётся. Ротируйте всё, что нашли. Если токен хоть раз был в публичном репозитории, считайте его скомпрометированным. Закройте локальный файл. settings.local.json должен быть в .gitignore. Не надейтесь, что кто-то это уже сделал. Уберите секреты из самих команд.
Соберите рабочего ИИ-агента или сервис своими руками без ручного кода
В Академии Жемала Хамидуна (academy.hamidun.com) открыт бесплатный 72-часовой тест-драйв: интерактивные скетч-уроки по Claude Code и Cursor, живой Tech Radar и готовые шаблоны агентов.
Главное из мира ИИ — раз в неделю
7 ключевых событий недели, отобранных вручную. Без шума, репостов и пресс-релизов.
Готово! Проверьте почту — мы отправили подтверждение.