Claude Code и кнопка «больше не спрашивать»: как пароли утекают на GitHub
Кнопка «Yes, and don't ask again» в Claude Code сохраняет команду вместе с паролем внутри прямо в папку проекта. На публичном GitHub уже нашли больше тысячи таких файлов с ключами.
Тем, кто пользуется только чатом Claude в браузере, это не грозит. Риск касается тех, кто работает в Claude Code, даёт ему команды к базе, серверу или API и выкладывает проекты на GitHub. Я прочитал исследование Apiiro, сверил настройки в документации Anthropic и блог Microsoft.
Как пароль попадает в проект и почему git его не прячет
Ответ «Yes, and don't ask again» навсегда сохраняет правило для терминала в файл .claude/settings.local.json в корне проекта как начало команды со звёздочкой. Пароль из PGPASSWORD=, sshpass -p, mysql -p или заголовка curl ложится туда открытым текстом. Это поведение самого Claude Code, не модели: Apiiro воспроизвела его на Opus 5.5 и Fable 5.1, а из 16 агентов для кода, сравнённых по документации, так по умолчанию делает только он.
Схема Apiiro: что «больше не спрашивать» записывает в файл проекта (значения замаскированы). Внизу правило-шаблон и правило с паролем.
При первой записи Claude Code прячет файл от git (системы учёта версий кода), но только в настройках одного компьютера, а не в .gitignore (списке файлов проекта, скрытых от отправки). Защита слетает, если git подключили позже, проект склонировали на другой компьютер или файл уже закоммичен. Часто его коммитит сам Claude: в 539 из 1 105 отслеженных репозиториев с секретом файл менял коммит, где Claude указан соавтором.
Почему сканеры не видят пароли, а удалить файл мало
На публичном GitHub нашли 104 185 копий этого файла, в 1 122 (1,1%) лежали настоящие секреты (всего 1 379), больше трети из них открывают базы данных напрямую (379 паролей БД и 122 ключа Supabase). Чем чаще жмут «больше не спрашивать», тем выше риск: в файлах до 500 байт секреты есть в 0,17%, а в файлах больше 8 КБ уже в 9,9%, в каждом десятом. Apiiro продаёт продукты защиты и ключи не проверяла, но одна компания подтвердила, что ключ работал.
График Apiiro «что открывают утёкшие секреты»: 1 379 секретов по видам, ни один не проверяли.
Сканеры секретов (программы поиска паролей в коде) из 1 122 файлов нашли лишь 564 (gitleaks) и 643 (TruffleHog), а 215 пропустили оба: они ищут форматы ключей, а пароль в команде выглядит обычным словом.
Удалить файл мало: в истории git (архиве правок, где остаются и стёртые файлы) лежат ещё 734 секрета, которых нет в текущих копиях, а 211 форков (чужих копий проекта) унесли их к себе. По данным Microsoft, с августа злоумышленники с агентным ИИ-фреймворком ARTEX массово ищут утёкшие на GitHub ключи и сами ими пользуются: в одном случае агент за пять минут прошёл от поиска до выгрузки данных из облачного хранилища ключей Azure Key Vault. Ключ работает, пока его не сменили. Глава Claude Code 7 ноября ответил на Hacker News, что Claude Code исторически не вычищал секреты, а команда думает над auto mode и базовым поиском секретов. Пока защиты нет:
- Пароль не вписывайте прямо в команду для агента, передавайте переменной ($DB_URL).
- Одобряйте шаблоны вроде «npm run *», а не точную команду.
- Если файл уже был на GitHub, сначала смените все ключи из него, потом удаляйте (git rm --cached) и вносите в .gitignore проекта.
А вы даёте ИИ-агентам команды с доступом к базам и серверам или запускаете такие команды только вручную?
Разборы выходят в канале Нейросеть на завтрак.