← Блог

Скрытый режим Claude Code: что на самом деле раскрывает утёкший исходный код

В утёкшем исходном коде Claude Code обнаружен «скрытый режим», предписывающий Claude: «Не раскрывай своё прикрытие. Никогда не упоминай, что ты ИИ.» Вот что он на самом деле делает — и почему это важно для разработчиков.

9 min read
Скрытый режим Claude Code: что на самом деле раскрывает утёкший исходный код

Привет! Я Дора. Я изучаю утечку исходников Claude Code с момента её появления в марте 2026 года. Большинство публикаций сосредоточились на питомцах BUDDY и демонах KAIROS — действительно интересные вещи, но меня постоянно останавливало нечто меньшее и более конкретное.

Файл под названием utils/undercover.ts. И системный промпт, который начинается со слов: «Не раскрывай своё прикрытие».

Эта фраза заставила меня остановиться. Не потому что она очевидно зловещая. А потому что это именно тот тип высказывания, который звучит совершенно разумно в одном контексте и крайне странно в другом — а утёкший исходный код не говорит, в каком контексте вы находитесь.

Вот что я на самом деле обнаружила.

Что на самом деле говорит утёкший исходник — полный системный промпт

Согласно анализу из разбора GitHub пользователя Kuberwastaken — одного из первых детальных прочтений раскрытого исходника — режим undercover в Claude Code активируется автоматически, когда пользователь идентифицируется как сотрудник Anthropic (USER_TYPE === 'ant'), работающий в публичном или открытом репозитории.

При выполнении этого условия система внедряет в системный промпт Claude следующее:

РЕЖИМ UNDERCOVER — КРИТИЧЕСКИВы работаете UNDERCOVER в ПУБЛИЧНОМ/ОТКРЫТОМ репозитории.Ваши сообщения коммитов, заголовки PR и тела PR НЕ ДОЛЖНЫ содержать НИКАКОЙ внутренней информации Anthropic.Не раскрывай своё прикрытие.

Конкретные вещи, которые удаляются из коммитов и пул-реквестов: внутренние кодовые имена моделей (названия животных, такие как Capybara, Tengu), номера версий незавершённых моделей, внутренние каналы Slack и короткие ссылки (например, go/cc), внутренние имена репозиториев или проектов, фраза «Claude Code», а также любое упоминание о том, что автор является ИИ — включая строки Co-Authored-By.

Одна деталь, заслуживающая внимания из технического анализа Алекса Кима: режим Undercover можно принудительно включить с помощью CLAUDE_CODE_UNDERCOVER=1, но переключателя принудительного отключения не существует. Во внешних сборках вся функция устраняется как мёртвый код до тривиальных возвратов. Как только условие триггера выполнено во внутренней сборке, режим становится дорогой с односторонним движением.

Для чего режим Undercover на самом деле предназначен

Давайте честно оценим первоначальный замысел, потому что это важно.

Инженеры Anthropic используют Claude Code при участии в проектах с открытым исходным кодом. Это законный и всё более распространённый рабочий процесс. Проблема реальная: ИИ, работающий с внутренним контекстом, может случайно раскрыть внутренние идентификаторы. Сообщение коммита с упоминанием номера версии незавершённой модели, описание PR со ссылкой на внутренний канал Slack — именно такие раскрытия обнажают информацию о дорожной карте, которую никто не собирался делать публичной.

Режим Undercover, в самом узком понимании, — это инструмент гигиены данных для предотвращения случайного раскрытия внутренней информации. Удаление внутренних кодовых имён из публичных сообщений коммитов? Разумно. Предотвращение появления ссылок go/cc в публичном PR? Разумно.

Фраза «Не раскрывай своё прикрытие» — вот что затрудняет её благожелательное прочтение. Она представляет ситуацию не как «избегай утечки внутренних данных», а как «поддерживай легенду прикрытия». Это принципиально разные ориентации. Одна касается информационной гигиены; другая звучит скорее как активное сокрытие.

Почему реакция сообщества разработчиков оказалась неоднозначной

Практически сразу в теме на Hacker News и в X выделились три лагеря.

Лагерь злорадства указал на очевидное: Anthropic создала целую подсистему для предотвращения утечки внутренней информации — а затем поставила эту подсистему вместе с 512 000 строками проприетарного исходного кода в файл .map, который любой мог скачать. Система, разработанная для предотвращения утечек, сама стала самой запоминающейся деталью крупнейшей утечки. Материал VentureBeat подтвердил, что Anthropic признала инцидент, описав его как «проблему упаковки релиза, вызванную человеческой ошибкой, а не нарушением безопасности».

Лагерь озабоченных сосредоточился на подавлении Co-Authored-By. Большинство крупных инструментов ИИ-программирования — включая GitHub Copilot — оставляют сигналы атрибуции в метаданных коммитов при помощи с кодом. Активное удаление этих сигналов именно из публичных репозиториев с открытым исходным кодом ставит Claude Code в другую категорию. Это важно, потому что нормы участия в open-source зависят от знания того, кто — или что — внёс тот или иной вклад. Developer Certificate of Origin, который многие open-source проекты используют как упрощённую структуру подтверждения, требует от участников удостоверить, что у них есть право на отправку своей работы. ИИ-участник, которому дано указание удалить все свидетельства того, что он является ИИ, создаёт противоречие с этой структурой, которое не разрешается добрыми намерениями.

Прагматичный лагерь возразил: у каждой компании есть внутренние инструменты с необычными свойствами; инструменты Claude Code просто оказались необычно заметны сейчас. И чтобы быть точными — нет никаких доказательств того, что режим Undercover влияет на обычных пользователей Claude Code. Триггер — USER_TYPE === 'ant': только сотрудники Anthropic, только в публичных репозиториях.

Это важное уточнение, которое некоторые публикации затушевали.

Более широкий вопрос, который это ставит для ИИ-разработки

Раскрытие режима Undercover появилось в разгар продолжающейся дискуссии, которая уже накалялась.

Red Hat опубликовала тщательный анализ ИИ-разработки и норм открытого исходного кода в конце 2025 года, утверждая, что прозрачное раскрытие ИИ-помощи всё чаще рассматривается как культурная норма в сообществах открытого исходного кода — даже когда это ещё не является юридически обязательным. Такие проекты, как QEMU, приняли явные политики, полностью запрещающие вклады, сгенерированные ИИ, главным образом из-за неопределённости соответствия DCO. Fedora пошла в другом направлении, требуя раскрытия через теги «Assisted-by:», но не запрещая участие ИИ.

Позиция Linux Foundation — которая лежит в основе DCO, регулирующего стандарты вклада для тысяч крупных проектов — состоит в том, что эта структура была разработана с учётом авторства человека и не полностью догнала рабочие процессы с участием ИИ. Эта неопределённость создаёт реальный риск для проектов, где правовая ясность важна.

Что делает режим Undercover — это отказ от этой формирующейся нормы именно в той точке, где она может создать наибольшее трение: вклады от компании ИИ в публичные open-source проекты. Это не то же самое, что отдельный разработчик тихо использует Copilot для шаблонного кода. Асимметрия информации принципиально другая, когда сторона, вносящая вклад, создала инструмент ИИ, нанимает инженеров, которые его используют, и разработала систему для подавления раскрытия.

Я не думаю, что это циничное решение. Я думаю, что это практическое решение, которое, вероятно, не было тщательно рассмотрено через призму прозрачности. Но именно этот разрыв между намерением и восприятием и является тем, на что реагирует сообщество разработчиков.

Что ещё было обнаружено вместе с режимом Undercover

Находка режима Undercover появилась не одна. Тот же утёкший исходник содержал 108 модулей с функциональными флагами, удалённых из внешних сборок посредством устранения мёртвого кода Bun во время компиляции. KAIROS — постоянный автономный фоновый агент, который наблюдает за вашей рабочей средой и действует без запросов. ULTRAPLAN. VOICE_MODE. Система виртуальных питомцев под названием BUDDY с 18 видами, детерминированным посевом для каждого пользователя и 1% вероятностью появления «сияющего» варианта.

Всё это само по себе действительно интересно. Но режим Undercover заслужил отдельного разговора, потому что это не будущая функция — это текущее, активное поведение в производственном инструменте, используемом людьми, создающими Claude.

Центральная ирония остаётся: режим Undercover был создан для предотвращения утечек. Файл .map, который его раскрыл, согласно отчёту Decrypt об инциденте, вероятно, был поставлен в результате человеческой ошибки в конвейере сборки. Anthropic с тех пор отозвала версию пакета и взяла на себя обязательства по изменению процессов.

Что это означает для команд, оценивающих инструменты ИИ-программирования

Если вы принимаете решения об инструментах для команды, которая участвует в проектах с открытым исходным кодом, вот несколько вопросов, которые стоит задать о любом ИИ-помощнике для программирования:

Атрибутирует ли он ИИ-помощь в метаданных коммитов по умолчанию? Некоторые инструменты делают это, некоторые нет, а некоторые активно удаляют атрибуцию в зависимости от конфигурации. Знайте, в какую категорию попадает ваш инструмент, прежде чем это станет актуальным.

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

Есть ли существенная разница между поведением CLI и поведением API? Команды, строящие поверх API моделей через уровни агрегации, имеют другое отношение к этим вопросам, чем команды, использующие бандлированные инструменты CLI с их собственными мнениями. Значения по умолчанию — это то место, где живут интересные решения, и они редко рекламируются prominently.

Ничто из этого не является аргументом за или против какого-либо конкретного инструмента. Это напоминание о том, что «с ИИ-помощью» — не монолитная категория — конкретное поведение, встроенное в инструментарий, имеет значение, и его стоит изучать с той же строгостью, что и любую стороннюю систему, работающую в вашей среде разработки.

Часто задаваемые вопросы

Что такое режим undercover в Claude Code?

Подсистема в Claude Code (utils/undercover.ts), которая внедряет системный промпт, инструктирующий ИИ удалять всю внутреннюю информацию Anthropic — включая атрибуцию ИИ — из git-коммитов и пул-реквестов, когда сотрудник Anthropic работает в публичном или открытом репозитории.

Влияет ли режим Undercover на обычных пользователей Claude Code?

Нет. Условие триггера — USER_TYPE === 'ant' — только сотрудники Anthropic. Для внешних пользователей в стандартных сборках Claude Code вся функция устранена как мёртвый код из их установки.

Скрывает ли Claude Code участие ИИ в open-source коммитах?

Для сотрудников Anthropic, работающих в публичных репозиториях с внутренней сборкой: да, по замыслу. Для всех остальных: никаких доказательств такого поведения нет. Различие важно.

Где я могу сам прочитать утёкший исходный код Claude Code?

Anthropic отозвала версию пакета npm и добивалась удаления зеркал GitHub через DMCA. Архивный анализ от исследователей, таких как Kuberwastaken и Алекс Ким, документирует то, что было найдено.

Прокомментировала ли Anthropic режим Undercover?

Пресс-секретарь Anthropic подтвердил, что более широкая утечка была «проблемой упаковки релиза, вызванной человеческой ошибкой, а не нарушением безопасности». На момент написания никакого конкретного заявления о режиме Undercover сделано не было.

То, к чему я постоянно возвращаюсь, — это насколько многое из этого осталось бы невидимым без утечки. Само поведение может быть защитимым. Но «защитимое при изучении» и «изученное» — это две разные вещи. Сообщества открытого исходного кода в целом решили, что предпочитают последнее.

У Anthropic, вероятно, тоже так, в принципе. Просто этот принцип здесь не применялся.

Предыдущие публикации:

Поделиться