Традиционные инструменты командной строки для генерации кода, такие как GitHub Copilot CLI или OpenAI Codex, обычно предоставляли лишь минимальный набор функций и скрывали любую экспериментальную логику за закрытыми бинарниками. В случае Claude Code от Anthropic ситуация изменилась: благодаря утечке через source map наружу попали почти все внутренние модули, включая экспериментальные режимы, которые ранее были известны только авторам.
Обнаружение полной кодовой базы в публичном npm‑пакете сразу бросило вызов привычным представлениям о защите интеллектуальной собственности в JavaScript‑экосистеме. Поскольку source map содержит оригинальный код, любой, кто скачает пакет, может восстановить его полностью, что открывает доступ к скрытым возможностям и потенциальным уязвимостям.
Утечка через source map: механизм и типичные ошибки
Source map – это JSON‑файл, связывающий скомпилированный JavaScript с исходными файлами TypeScript/JSX. При ошибке в продакшн‑сборке файл .map часто попадает в npm‑пакет, если разработчик не исключил его в .npmignore или не отключил генерацию в настройках сборщика.
- Сборка проекта генерирует .map по умолчанию (в случае Claude Code – Bun).
- Файл .map содержит массив sourcesContent со строковым представлением каждого исходного файла.
- Публикация пакета в npm делает .map доступным через npm pack или просмотр в браузере.
Эта схема уже приводила к утечкам в прошлом, и Claude Code стал очередным примером, подтверждающим, что без явного исключения source map любой проект рискует раскрыть свой код.
Что скрывает Claude Code
Claude Code – официальное CLI‑приложение Anthropic для интерактивного программирования с помощью модели Claude. Основой является файл main.tsx (~785 KB), в котором реализованы более 40 вспомогательных инструментов, система оркестрации мульти‑агентов и движок памяти под названием “dream”.
Для сравнения, аналогичный инструмент GitHub Copilot CLI состоит из нескольких десятков тысяч строк, но не содержит столь обширных экспериментальных подсистем.
Buddy – виртуальный компаньон в терминале
Внутри Claude Code скрыт модуль «Buddy», представляющий собой тамагочи, живущий рядом с вводом команд. Функциональность активируется флагом BUDDY и включает генерацию персонажа на основе детерминированного генератора Mulberry32, засеянного хешем пользовательского ID.
| Редкость | Виды |
|---|---|
| Обычные | Pebblecrab, Dustbunny, Mossfrog, Twigling, Dewdrop, Puddlefish |
| Необычные | Cloudferret, Gustowl, Bramblebear, Thornfox |
| Редкие | Crystaldrake, Deepstag, Lavapup |
| Эпические | Stormwyrm, Voidcat, Aetherling |
| Легендарные | Cosmoshale, Nebulynx |
Каждому компаньону присваиваются пять характеристик (DEBUGGING, PATIENCE, CHAOS, WISDOM, SNARK), набор визуальных стилей глаз и шляп, а также уникальный «душевный» промпт, генерируемый Claude при первом появлении.
Proactive‑режим KAIROS: постоянный ассистент
Модуль KAIROS реализует постоянно работающего агента, который собирает append‑only логи, анализирует их и при необходимости инициирует проактивные действия. Флаг PROACTIVE включает этот режим, который отсутствует в обычных сборках Claude Code.
Для ограничения навязчивости KAIROS использует таймаут в 15 секунд: если действие может задержать пользователя дольше, оно откладывается. Вывод в терминал происходит в «Brief Mode», где ответы сведены к минимуму, что контрастирует с более разговорным стилем типичных чат‑ботов.
ULTRAPLAN и Dream: удалённые планировщики и «сны» ИИ
ULTRAPLAN – отдельный режим, позволяющий выгрузить сложную задачу планирования в облачную сессию CCR (Cloud Container Runtime). После запуска задача получает до 30 минут на расчёт, а пользователь наблюдает за процессом через веб‑интерфейс и может одобрить результат.
Система Dream (autoDream) представляет собой фоновый суб‑агент, периодически генерирующий «сны» – консолидацию памяти, основанную на четырёх фазах и трёх вентилях (временной, сессионный, блокировочный). Такой подход к управлению контекстом пока уникален в мире AI‑агентов и отсутствует в аналогичных инструментах.
Последствия
Утечка продемонстрировала, что даже крупные компании могут допустить простую ошибку в цепочке сборки, раскрывая целый набор закрытых функций. Для разработчиков JavaScript‑проектов рекомендуется:
- Явно исключать файлы .map из публикаций, добавив их в .npmignore или files‑поле package.json.
- Отключать генерацию source map в продакшн‑конфигурациях, если они не требуются для отладки.
- Проводить аудит публичных npm‑пакетов на наличие чувствительных данных с помощью автоматических сканеров.
Для пользователей Claude Code раскрытие скрытых режимов открывает новые возможности, но также требует осознанного подхода к безопасности и управлению конфиденциальностью.
Итоги
Утечка исходников Claude Code через source map не только продемонстрировала уязвимость типичной цепочки сборки, но и предоставила уникальный взгляд на экспериментальные функции, такие как Buddy, KAIROS, ULTRAPLAN и Dream. Сравнительно с другими AI‑CLI решениями, Claude Code оказывается более насыщенным набором возможностей, однако именно эта «нагрузка» сделала его более уязвимым. Применение строгих правил публикации и регулярный аудит кода помогут избежать подобных инцидентов в будущем.