Разработка10.11.2026, 02:174 мин чтенияНОВОСТЬ

Claude Code оставлял секреты в публичных репозиториях GitHub

Исследователи Apiiro нашли более 100 000 загруженных файлов настроек, в примерно 1 100 из них были пароли, токены и ключи

Скриншот интерфейса Claude Code и файлов настроек в репозитории GitHub
КРАТКО

Что нужно знать

  • Исследователи Apiiro нашли более 100 000 случаев загрузки локальных файлов настроек Claude Code в публичный GitHub.
  • Примерно в 1 100 файлах из 63 организаций содержались API-токены, пароли к базам данных или приватные ключи.
  • Причина — сохранение разрешённых shell-команд в файле .claude/settings.local.json, который не всегда защищён на уровне репозитория.
  • Проблема была отмечена в баг-репортах ещё в августе 2025 года, но они закрылись без действий.
  • В Anthropic заявили, что изучают способы предотвращения утечек, и советуют использовать сканеры секретов.
ИсточникArs Technica ↗

Claude Code, инструмент Anthropic для работы с кодом из терминала, в ряде случаев приводил к публикации чувствительных данных в открытых репозиториях GitHub. Об этом сообщает Ars Technica со ссылкой на исследование специалистов по безопасности ИИ из компании Apiiro. Они обнаружили тысячи секретов — среди них пароли к базам данных, API-токены и данные root-доступа — внутри файлов настроек Claude Code, попавших в репозитории на GitHub.

Проблема важна не только для отдельных разработчиков: утечка ключей и паролей в публичный репозиторий может дать посторонним доступ к инфраструктуре и данным компаний. При этом речь идёт не о взломе Anthropic, а о том, как инструмент сохраняет разрешения на выполнение команд и как эти файлы попадают в систему контроля версий.

Как возникает утечка

По данным Ars Technica, механизм связан с обработкой подтверждений для автоматических shell-команд. Когда пользователь выбирает вариант «Yes, and don’t ask again», разрешение сохраняется как правило в локальном файле .claude/settings.local.json на компьютере разработчика. Иногда правило записывается в виде шаблона, но нередко сама команда сохраняется в файл настроек как есть — вместе со всеми чувствительными данными, которые в ней могут быть.

Пока файл остаётся на локальной машине, существенной проблемы нет. В документации Claude Code указано, что этот файл добавляется в глобальный список .gitignore разработчика, что обычно мешает его публикации. Однако, отмечает Ars Technica, эта настройка не отражается на уровне репозитория. Поэтому чувствительный файл может быть случайно загружен, например если репозиторий клонирован на другую машину или папка позже стала репозиторием. По данным Apiiro, во многих случаях Claude Code сам коммитит изменения в файл настроек без участия пользователя.

Масштаб находки

Исследователи Apiiro обнаружили более 100 000 случаев, когда локальный файл настроек Claude Code был загружен в публичный репозиторий GitHub. Примерно в 1 100 из них, относящихся к 63 разным организациям, содержались секреты: публичные API-токены, пароли к базам данных или приватные ключи.

Даже после удаления таких файлов из репозитория секреты могут сохраняться в форках исходного проекта, если пользователь GitHub не проявил осторожность, пишет Ars Technica.

Что известно о реакции Anthropic

Хотя проблема привлекла внимание только сейчас, она была отмечена в баг-репорте Claude Code ещё в августе 2025 года. Другие отчёты также указывали, что чувствительный файл настроек иногда не попадал в .gitignore пользователя или что Claude Code мог записывать чувствительные команды в другой файл, не защищённый от публикации через git. Все эти баг-репорты были закрыты без действий после 60 дней неактивности.

В обсуждении на Hacker News Борис Черный (Boris Cherny) из команды Claude Code заявил, что команда «изучает, что можно сделать, чтобы предотвратить это». При этом он отметил, что такие файлы настроек практически никогда не должны попадать в систему контроля версий git, а подобные случаи, по его словам, возникали только тогда, когда «файлы создавались вручную и добавлялись в репозиторий».

Черный рекомендовал использовать автоматический режим Claude Code, который с помощью классификаторов автоматически обрабатывает «рутинные запросы разрешений» без необходимости, по его словам, «вручную поддерживать капризные списки разрешений и запретов». Когда другой пользователь заметил, что в автоматическом режиме чувствительные команды всё равно могут сохраняться в файлы настроек, Черный назвал это «хорошим замечанием» и добавил, что команда «думает над тем, что можно улучшить».

Он также советует пользователям Claude Code применять сканеры секретов, которые ищут чувствительную информацию в файлах и удаляют её, и сообщил, что команда рассматривает возможность встроить такое сканирование в Claude Code в будущем. Однако исследователи Apiiro обнаружили, что 215 из примерно 1 100 публичных секретов в файлах настроек Claude Code не были найдены двумя популярными сканерами — gitleaks и TruffleHog.

Не единичный случай

Ars Technica отмечает, что это далеко не первый случай, когда ИИ-агент непреднамеренно раскрывает чувствительную информацию. В прошлом месяце Meta приостановила функцию обмена ссылками в своём агенте Muse после того, как исследователи безопасности обнаружили, что URL таких ссылок можно легко угадать.

Что это значит

История показывает, что удобные механизмы подтверждения в ИИ-инструментах для разработки могут создавать побочные риски для безопасности. Сохранение разрешённых команд в локальном файле само по себе не является уязвимостью, но комбинация с особенностями git и привычками разработчиков приводит к публикации секретов. Пользователям Claude Code стоит проверить, не попадали ли файлы настроек в репозитории, и оценить, какие чувствительные данные могли быть в сохранённых командах. Anthropic пока не объявила о конкретных изменениях в продукте.

ВОПРОСЫ И ОТВЕТЫ

Коротко о главном

Что именно нашла Apiiro?

Более 100 000 случаев, когда локальный файл настроек Claude Code был загружен в публичный репозиторий GitHub; примерно в 1 100 из них были секреты, включая API-токены, пароли к базам данных и приватные ключи.

Почему секреты попадают в файл настроек?

При выборе «Yes, and don’t ask again» разрешение на выполнение shell-команды сохраняется в файл .claude/settings.local.json, причём команда нередко записывается туда как есть, вместе с чувствительными данными.

Защищает ли .gitignore от публикации?

Файл добавляется в глобальный .gitignore разработчика, но эта настройка не отражается на уровне репозитория, поэтому файл может быть загружен случайно.

Что рекомендует Anthropic?

Представитель команды Claude Code Борис Черный советует использовать автоматический режим и сканеры секретов, а также говорит, что команда рассматривает встроенное сканирование в будущем.

Как подготовлен материал

Черновик был создан с помощью ИИ по указанному первоисточнику и опубликован в формате ITBlogs. Факты следует сверять с оригинальной публикацией.

С
АВТОР

Сергей

Администратор проекта

ОБСУЖДЕНИЕ

Комментарии · 0

Войдите, чтобы участвовать в обсуждении.