31 марта 2026 года в npm появился source‑map, раскрывающий более полумиллиона строк кода Claude Code. Инцидент связан с багом Bun за 20 дней и ошибкой публикации.
В декабре 2025 года Anthropic объявила о покупке Bun, JavaScript‑рантайма, разработанного Джаредом Самнером. После покупки основной продукт компании, Claude Code, был пересобран под Bun, а Самнер стал частью команды.
Баг в Bun, оставшийся незамеченным
11 марта 2026 года в баг‑трекере Bun появился тикет #28001. Он фиксировал, что даже при development: false в Bun.serve() генерируются source‑map‑файлы, хотя документация требует их отключения в продакшн‑режиме.
На момент утечки тикет оставался открытым, а исправление не вышло.
Как source map попал в npm‑пакет
Claude Code собирается в один бандл через встроенный в Bun бандлер. В процессе публикации не использовались ни .npmignore, ни ограничение поля files в package.json. Поэтому файл cli.js.map оказался в артефакте, который затем был загружен в npm. Даже если бы баг в Bun был исправлен, отсутствие фильтрации оставило бы возможность утечки.
Что раскрыла утечка
Внутри карты кода обнаружены несколько малоизвестных модулей:
- KAIROS — автономный агент, подписывающийся на GitHub‑вебхуки и собирающий “сновидения” о работе проекта.
- Undercover Mode — режим, позволяющий Claude скрывать свою ИИ‑натуру в коммитах.
- ANTI_DISTILLATION — система, вставляющая фейковые инструменты в API‑запросы для “отравления” обучающих наборов конкурентов.
- BUDDY — виртуальный питомец в терминале с RPG‑характеристиками.
- Список внутренних кодовых имён моделей (Capybara, Fennec, Numbat) и более 40 фича‑флагов.
Реакция Anthropic и отклик сообщества
Пакет был удалён в течение нескольких часов, а компания назвала инцидент «человеческой ошибкой при упаковке релиза», а не нарушением безопасности. Формального постмортема не последовало. На GitHub разработчик Сигрид Джин выпустила чисто‑комнатный порт Claude Code на Python под именем claw-code, который быстро набрал десятки тысяч звёзд.
Практические рекомендации
- Запускайте
npm pack --dry-runперед публикацией, чтобы увидеть содержимое пакета. - Исключайте все
*.mapфайлы через.npmignoreили явно указывайте разрешённые файлы в полеfilespackage.json. - Следите за тикетом #28001 в репозитории Bun и обновляйте зависимости до версии с исправлением.
- Добавьте проверку артефактов в CI/CD, гарантируя отсутствие source‑map‑файлов в финальном билде.
Итоги
Утечка Claude Code показала, как одновременно несколько небольших упущений — баг рантайма, отсутствие фильтрации при публикации и слабый контроль качества — могут привести к раскрытию ценной интеллектуальной собственности. Для команд, использующих современные инструменты сборки, это сигнал к пересмотру дефолтных настроек и усилению аудита перед релизом.