Skip to content
ai-toolssecurityopen-source

Исходный код Claude Code доступен 13 месяцев, и ничего не случилось — почему?

Конверт CONFIDENTIAL со схемами и документами — иллюстрация утечки исходного кода

Полный исходный код Claude Code — терминального AI-агента от Anthropic с 82 000+ звёзд на GitHub — доступен любому, кто скачает npm-пакет и распакует source map. Это не баг последней версии: source map попала в npm-пакет в день релиза продукта — 24 февраля 2025 года. За 13 месяцев его изучили десятки исследователей, извлекли из него системные промпты, скрытые фичи и product roadmap — и ничего существенного не произошло, что заставляет задуматься: почему?

Чтобы ответить на него, нужна хронология.

Волна первая: февраль–март 2025

24 февраля 2025 года Anthropic выпустила Claude Code — терминальный AI-агент, который читает и редактирует код по команде на естественном языке. Инструмент распространялся через npm как пакет @anthropic-ai/claude-code. Внутри лежал минифицированный файл cli.mjs размером 23 мегабайта.

В тот же день разработчик Дэйв Шумейкер открыл этот файл в Sublime Text и обнаружил в конце строку из 18 миллионов символов — inline source map в формате base64. Source map — это стандартный механизм, который связывает минифицированный код с оригинальным исходником. Иными словами, внутри npm-пакета лежала полная карта для восстановления всего исходного кода Claude Code.

Шумейкер уехал к ветеринару. Пока он отсутствовал, Anthropic выпустила обновление (версия 0.2.9), в котором source map была удалена. Компания также удалила предыдущую версию пакета из npm-реестра и зачистила кэш. Реакция заняла приблизительно два часа — судя по временным меткам в npm-кэше Шумейкера, зафиксированным в его блог-посте от 27 февраля.

К тому моменту код уже разошёлся: 25 февраля, в 05:08 UTC, разработчик Daniel Nakov опубликовал репозиторий dnakov/claude-code с полным извлечённым исходным кодом. В тот же день тред на Hacker News, опубликованный пользователем npace12, вызвал активное обсуждение.

Шумейкер, вернувшись домой, обнаружил, что source map исчезла отовсюду — из npm, из кэша, из файла на его машине. Но Sublime Text хранит историю отмен, и комбинация ⌘+Z вернула удалённую строку. Он описал это 27 февраля.

Дальше события развивались быстро:

  • 1 марта 2025 — Джеффри Хантли опубликовал блог-пост и репозиторий (877 звёзд) с другим подходом: он использовал LLM для cleanroom-деобфускации минифицированного JavaScript обратно в TypeScript.
  • 7 марта 2025 — Lee Han Chung опубликовал детальный разбор архитектуры: системные промпты (включая директивы megathink и ultrathink), парсинг языков через regex, MCP-интеграцию, настройку AWS Bedrock.
  • 30 марта 2025 — Рид Барбер опубликовал подробный технический анализ: агентный цикл, все инструменты (BashTool, FileEditTool, AgentTool и другие), система пермишенов, data flow.

Появились форки репозитория Nakov — leeyeel/claude-code-sourcemap, gasxia/claude-code-sourcemap — сохранившие код после того, как оригинальный репозиторий был заархивирован автором 4 марта.

Волна вторая: март 2026

Тринадцать месяцев спустя ситуация повторилась, причём по двум разным каналам.

7 марта 2026 — издание gentic.news обнаружило, что npm-пакет @anthropic-ai/claude-agent-sdk случайно содержит полный бандл CLI Claude Code — файл cli.js на 13 800 строк минифицированного JavaScript, версия 2.1.71, сборка от 6 марта 2026 года. Это другой вектор: не source map, а целый исполняемый файл внутри SDK.

30–31 марта 2026 — исследователь Chaofan Shou (@Fried_rice) обнаружил, что в npm-пакете @anthropic-ai/claude-code версии 2.1.88 снова присутствует файл cli.js.map размером 59.8 мегабайт — полная source map. На этот раз не inline (как в 2025 году), а как отдельный файл рядом с cli.js.

31 марта появились тред на Hacker News (от пользователя treexs), пост на Reddit r/LocalLLaMA (от Nunki08) и новые репозитории с извлечённым кодом, в том числе instructkr/claude-code.

Между двумя волнами Anthropic выпустила 363 версии пакета. В какой из них source map появилась снова — неизвестно.

На этом хроника заканчивается, и можно перейти к тому, что из неё реально извлекли.

Робот на столе вскрыт — иллюстрация извлечения данных из исходного кода

Что нашли в исходном коде

Конкурентная разведка

Исходный код содержит feature flags — переключатели для функций, которые ещё не выпущены. Исследователи систематически их отслеживают.

Самый показательный случай: 24 января 2026 года разработчик Mike Kelly обнаружил в версии 2.1.19 скрытую мульти-агентную систему TeammateTool (кодовое название Swarms). 26 января ASCII News и paddo.dev опубликовали подробные разборы. 6 февраля 2026 года Anthropic официально анонсировала agent teams вместе с Opus 4.6 — через две недели после того, как сообщество уже задокументировало эту функцию.

Как написал один из комментаторов в HN-треде второй волны: «The big loss for Anthropic here is how it reveals their product roadmap via feature flags» — главная потеря для Anthropic в том, что feature flags раскрывают product roadmap.

Помимо TeammateTool, в коде обнаружены: «Kairos» (assistant mode), «Buddy System» (первоапрельский тамагочи-компаньон с ASCII-артом), «Undercover mode» (режим зачистки внутренней информации Anthropic). Alex Sorokoletov ведёт трекер версий Claude Code, документируя feature gates и модели с каждым релизом. В одном из ранних разборов он обнаружил 83 недокументированных переменных окружения.

Системные промпты Claude Code тоже извлекаются из source map. Репозиторий Piebald-AI/claude-code-system-prompts обновляется с каждой новой версией и содержит все промпты, описания 18 встроенных инструментов, промпты субагентов (Plan, Explore, Task) и служебные промпты.

Безопасность

В феврале 2026 года Check Point Research раскрыла две критических уязвимости: CVE-2025-59536 (удалённое выполнение кода через hooks в файлах проекта) и CVE-2026-21852 (утечка API-ключей через подмену ANTHROPIC_BASE_URL до подтверждения доверия).

Обе уязвимости позволяли скомпрометировать машину разработчика при клонировании вредоносного репозитория. Anthropic их исправила. О находке написали The Hacker News, SecurityWeek, The Register и Dark Reading.

Прямой связи между утечкой source maps и обнаружением этих CVE не установлено — Check Point не указывает source map как источник. Однако знание внутренней архитектуры инструмента сужает область поиска уязвимостей.

Экосистема

Вокруг извлечённого кода выросла инфраструктура: hitmux/HitCC (433 звезды) — полная документация логики CLI; N1-AI/claude-hidden-toolkit — каталог 37 внутренних инструментов Claude; Yuyz0112/claude-code-reverse (2 287 звёзд) — визуализация LLM-взаимодействий.

Последствий набралось немало, однако продукт продолжает расти, и это требует объяснения.

Три барьера, которые защищают продукт без защиты кода

Код — это клиент, ценность — на сервере

Claude Code — терминальное приложение на React и Ink, которое принимает команды пользователя, отправляет их в Claude API, получает ответ и вызывает инструменты (bash, file edit, grep). Вся интеллектуальная ценность — модели Opus, Sonnet, Haiku — находится на серверах Anthropic. Скопировать клиент без доступа к API — всё равно что скопировать пульт от телевизора без телевизора.

Проприетарная лицензия

Лицензия npm-пакета указана как SEE LICENSE IN README.md — это не MIT, не Apache, не какая-либо open-source лицензия. Использование кода за пределами условий лицензии является нарушением copyright.

Anthropic судится

19 марта 2026 года Anthropic подала иск против OpenCode — стороннего инструмента, который использовал внутренние API Claude Code, чтобы пользователи подписки Max (200 долларов в месяц) могли получать токены по сниженной цене через чужой клиент. OpenCode удалил соответствующие плагины в версии 1.3.0. В феврале 2026 года Anthropic обновила Terms of Service, явно запретив использование Claude через сторонние harness-ы.

Конкуренты (Cline, Goose, Aider) пишут собственные реализации тех же архитектурных паттернов — REPL, tool use, субагенты — не копируя код Claude Code. Для этого достаточно понять архитектуру, а не воспроизводить файлы.

Витрина с экспонатами на цепи — открытый код, закрытая лицензия

Открытый код без open source

Полный исходный код коммерческого продукта лежит в публичном npm-реестре 13 месяцев. Его изучили, разобрали, задокументировали. Из него извлекли roadmap, промпты и скрытые фичи. За эти 13 месяцев продукт прошёл через 363 версии и набрал 82 000+ звёзд на GitHub, компания активно преследует тех, кто пытается использовать её API через сторонние клиенты, а лицензия остаётся проприетарной.

Возникает вопрос: это ошибка, которую не могут исправить, или ситуация, с которой можно жить? Claude Code де-факто прозрачен, но де-юре закрыт — конкуренты видят архитектуру, однако не могут воспроизвести продукт, а сообщество строит экосистему вокруг чужого кода, которым не владеет.

Для индустрии, привыкшей к бинарному выбору между open source и проприетарным кодом, это непривычная модель: код виден всем, но принадлежит одной компании, и пока ценность продукта определяется серверной стороной, эта модель, по-видимому, работает.