Кнопка «Больше не спрашивать» оставила пароли на GitHub
Проверка 103 617 открытых репозиториев: в 1 122 файлах настроек Claude Code лежали настоящие пароли и ключи. Всего нашли 2 539 секретов в 1 994 репозиториях.
Компания Apiiro проверила открытые репозитории на GitHub и нашла там настоящие пароли и ключи доступа, которые попали в код из-за одной удобной кнопки в Claude Code — консольном помощнике Anthropic. Всего 2 539 секретов в 1 994 репозиториях.
Как это вышло
Claude Code спрашивает разрешение перед большинством команд. Один из вариантов ответа — «Yes, and don't ask again», то есть «больше не спрашивать». Правило сохраняется в файл .claude/settings.local.json внутри проекта. Если правило записано не шаблоном, а точной командой, и в команде был пароль (например, вход в базу данных), пароль лёг в файл открытым текстом. Дальше файл уезжает в репозиторий вместе с остальным кодом.
Что именно нашли
Apiiro просмотрела публичный GitHub: 104 185 копий такого файла в 103 617 репозиториях. В 1 122 файлах был хотя бы один настоящий секрет — 1 379 уникальных значений:
- 379 паролей к базам данных и 122 служебных ключа Supabase;
- 43 SSH-доступа к серверам, часть — с правами root;
- 42 токена GitHub, GitLab и npm, 23 ключа AWS.
С поправкой на старые версии файла, общие настройки команд и сохранённые логи переписки с агентом выходит 2 539 секретов в 1 994 репозиториях. Затронуты 63 организации — от студенческих групп до крупных вендоров. Среди находок: облачный ключ с правами управления у самого производителя баз данных, боевой токен Square у студии и пароль владельца базы медицинского приложения.
Почему сканеры не спасли
Из 1 122 файлов с секретом gitleaks обнаружил 564, TruffleHog — 643, а 215 файлов пропустили оба. То есть фраза «у нас включено сканирование» чистоту не гарантирует.
Anthropic отреагировала: руководитель Claude Code Борис Черни написал в обсуждении на Hacker News, что «исторически Claude Code не вычищал секреты» и что команда ищет решение — от авто-режима до встроенного поиска секретов. Возражение привели сразу: в авто-режиме утечка тоже возможна, и он согласился. О проблеме сообщали в трекере проекта с августа 2025 года.
Почему это важно
Агент пишет в ваш репозиторий — значит привычка «не спрашивать» превращается в канал утечки. Проверка занимает минуту: git log --all -- .claude/settings.local.json. Если файл есть в истории, сначала смените все ключи, которые могли в него попасть, и только потом удаляйте файл и добавляйте его в .gitignore: удаление не стирает историю, форки и клоны.