Пароли из Claude Code осели в 1 122 публичных файлах

Apiiro 5 ноября опубликовала исследование: на публичном GitHub лежат 2 539 реальных секретов в 1 994 репозиториях, и все они найдены в файлах Claude Code: в настройках, их истории в git и транскриптах агента. Отдельно посчитаны текущие копии .claude/settings.local.json: секреты есть в 1 122 из 104 185, и туда они попали через одобрение команд вариантом «Yes, and don't ask again». Если пароль набран прямо в одобренной так команде, он сохраняется в этом файле открытым текстом и уходит в коммит, когда файл не исключён из git.
По документации Claude Code, такое одобрение записывается как правило allow, и в следующий раз команда выполняется без запроса. Правило бывает точной командой или префиксом вроде npm test *, а составную команду диалог делит на правила по подкомандам, до пяти на одну. Секрет утекает, если он стоит внутри сохранённого текста, как в PGPASSWORD=... psql -h host, и именно такой шаблон описывает Apiiro. Так это выглядит по документации, сами мы не замеряли. Apiiro сравнила документацию 16 агентов, и только про Claude Code подтверждено, что он по умолчанию пишет одобренную команду целиком в файл проекта.
«Реальным» Apiiro называет секрет в формате провайдера или в паре с публичным хостом, а не заведомо рабочий: учётные данные не проверяли, ни к одному хосту не подключались. Одна из уведомлённых компаний подтвердила, что её ключ был действующим. Ещё 734 секрета в 509 репозиториях остались только в прежних версиях файла, в истории git.
От коммита, по документации, защищает запись **/.claude/settings.local.json, которую Claude Code при первой записи файла в репозитории, где тот ещё не игнорируется, добавляет в глобальный файл исключений git. Это core.excludesFile, если глобальный конфиг задаёт его абсолютным путём или через ~, иначе $XDG_CONFIG_HOME/git/ignore или ~/.config/git/ignore. Глобальные исключения действуют на одной машине и вместе с репозиторием не переезжают. Папку, которая стала репозиторием позже, эта запись, по словам Apiiro, не покрывает, а одобрять исследователи советуют шаблоны вроде Bash(npm run:*) вместо буквальных команд.
За Anthropic в обсуждении на Hacker News ответил Борис Черни из команды Claude Code: «Исторически Claude Code не вычищал секреты (для этого есть много хороших инструментов), но мы смотрим, что можно сделать, чтобы это предотвратить». Из тех же 1 122 файлов gitleaks пометил 564, TruffleHog 643, а 215 не заметил ни один. По словам Черни, Claude сам добавляет файл в gitignore, когда создаёт его, так что утёкшие копии создали и закоммитили вручную. У Apiiro другой счёт: в 539 из 1 105 отслеженных репозиториев с реальным секретом файл менял коммит, где Claude значится соавтором, причём от Sonnet 4.5 до Opus 5.5.
Авторский разбор
Что мы проверили
8 ноября мы сверили цифры с текстом Apiiro, открыли тикеты на GitHub, на которые она ссылается, changelog Claude Code до версии 2.1.319 и архивную копию документации от 2 октября.
Цифры, дату и авторов исследования, Шмулика Коэна и Матана Гилади, текст Apiiro подтверждает. Подсчёт про Claude в соавторах сделала сама Apiiro: публикацию Aviatrix об этой истории мы в двух поисках не нашли. С версией Anthropic о вручную созданных файлах не сходятся два задокументированных случая, а исправление после отчёта пока не вышло.
- В тикете от 19 ноября 2025 года, на версии 2.0.46, сообщили, что Claude Code перестал добавлять файл в .gitignore при создании. Пользователи подтверждали это на 2.0.62 9 декабря и ещё раз 3 февраля, а 5 марта тикет закрыли автоматически. Судя по описанию, это сбой той самой защиты, на которую ссылается Черни, но сколько из 1 122 файлов появилось за этот период, мы сказать не можем.
- Версия 2.1.307 от 21 октября исправила коммит оставленного прошлой сессией .claude/settings.local.json в сессиях self-hosted runner с
--use-anthropic-git-proxy. Исправление касается только этого режима. - В записях changelog после 2.1.318 (3 ноября) по 2.1.319 (6 ноября) мы не нашли ничего про settings.local.json, исключения git или вычистку секретов из правил. Абзац документации о глобальных исключениях был там уже 2 октября, до отчёта.
Дальше
Мультиплеера в проектах Claude Code «пока нет»
«Мультиплеера у нас пока нет», сказала накануне Лидия Хэлли из Anthropic. А на странице проектов Claude Code уже видны сводка последних тредов и обзор проекта с запланированными задачами. В Claude Code у вас работает один человек или вся команда?
Читайте также
- Пользователь: Claude Code отправлял его email наружу
- Claude Code не вводит пароли даже в тестовой среде
- Фильтр Claude Code от утечки email видит три инструмента
- WIRED: агент Claude Code два месяца работал в сети Пентагона
- Бэкдор в Claude Code ограничился маркетплейсом Cursor
- Claude Code шлёт Anthropic хеши файлов даже с DeepSeek
Комментарии
Пока никто не написал. Будьте первым.
Присоединяйтесь к разговору
Войдите, чтобы оставить комментарий. Он появится после модерации.

