DEV Community

Cover image for Внутри Claude Code нашли невидимую метку: 4 апострофа и список на 147 доменов
Promptra Team for Promptra

Posted on

Внутри Claude Code нашли невидимую метку: 4 апострофа и список на 147 доменов

Применить: 10 минут на проверку своей версии · Сэкономит: час на разбор первоисточника · Уровень: средний · Чтение: ~22 минуты · Данные актуальны на 09.07.2026

Что узнаешь:

  • Что нашёл Thereallo 30 июня 2026 в бинарнике клод код: апостроф в системном промпте, который тихо меняется по скрытому признаку
  • Как устроена метка: 4 варианта апострофа (U+0027 / U+2019 / U+02BC / U+02B9) плюс слэш вместо дефиса в дате по таймзоне
  • Что зашито в список: 147 доменов и 11 кейвордов лабораторий, XOR с ключом 91 поверх base64
  • У кого метка включалась, а у кого нет: официальный API и пустой base URL проходили мимо
  • Почему сюжет закрылся за неделю: Anthropic признала эксперимент, PR на удаление влили 1 июля, механизм ехал ~3 месяца с версии 2.1.91
  • Что сказали 747 комментариев на Hacker News, почему Alibaba забанила клод код с 10 июля и что это значит для тех, кто ходит через шлюз

Главное. Клод код (Claude Code) три месяца тихо метил исходящие запросы: в строке системного промпта «Today's date is 2026-06-30» бинарник подменял апостроф на визуально похожий символ - один из четырёх, в зависимости от того, на какой сервер ты завернул ANTHROPIC_BASE_URL и какая у тебя таймзона (часовой пояс системы). Официальный API и пустой base URL метку не получали. Нашёл это разработчик Thereallo 30 июня 2026, Anthropic признала «эксперимент» и убрала механизм 1 июля. Сейчас метки нет - чем обернулась неделя после находки, от треда на HN до бана в Alibaba, разбираю ниже по первоисточникам.

Ты завернул клод код на свой шлюз, чтобы платить за токены удобным способом, и думаешь, что от Anthropic до тебя идёт ровно то, что ты набрал. 30 июня выяснилось, что не совсем. В каждый запрос клиент подшивал крохотный маркер - подменял один символ на неотличимый глазом двойник, и по этому двойнику бэкенд мог классифицировать, откуда ты ходишь.

Сразу дам развязку, чтобы не держать в напряжении: механизм уже удалён. PR на удаление влили 1 июля 2026, Anthropic назвала это экспериментом против ресейлеров (перекупщиков доступа) и дистилляции - обучения чужой модели на ответах Claude, подробности дальше. Так что весь разбор ниже - в прошедшем времени: «метила», «включалась», «подменял». Читать это стоит ради главного вывода: клиент любого вендора - чужой бинарь на твоей машине, и он может нести свои сигналы.

Все модели из разбора - Claude Opus 4.8, DeepSeek v4 и остальные флагманы - доступны из России в одном API через provod.ai, без VPN и зарубежных карт.

Что нашли внутри Клод код и почему Hacker News взорвался?

Главное. 30 июня 2026 разработчик под ником Thereallo вскрыл локальную установку клод код версии 2.1.196 и описал находку в посте на своём блоге. Внутри бинарника нашлась функция, которая тихо меняла символы в строке даты системного промпта. Пост попал на Hacker News и собрал 2444 балла и 747 комментариев - для темы «безопасность ИИ-инструмента» это очень много.

Началось буднично. Thereallo решил разобраться, что клод код делает у него на машине с полным доступом - здравый рефлекс для инструмента с такими правами. Coding-агент читает репозиторий, дёргает shell, лезет в git и браузер. Он сам это формулирует так:

«If a coding agent can read your repo and run commands, the binary that ships it should be boring.» - если coding-агент может читать твой репозиторий и запускать команды, то бинарник, который его поставляет, должен быть скучным.

  • Thereallo, блог thereallo.dev, 30 июня 2026, перевод с английского.

«Скучным» тут значит предсказуемым: делает ровно то, что заявлено, без сюрпризов. Клод код версии 2.1.196 скучным не оказался. В системном промпте есть невинная строка вида Today's date is 2026-06-30. Внутри бинарника Thereallo нашёл функцию, которая умела незаметно менять в этой строке две вещи - апостроф в слове Today's и разделитель даты с дефиса на слэш. Пользователь и модель видят обычную дату, а в сыром запросе сидит маркер.

Сам автор называет приём прямо:

«This is prompt steganography, a technique used to hide data in plain sight.» - это стеганография в промпте, техника прятать данные у всех на виду.

  • Thereallo, блог thereallo.dev, 30 июня 2026, перевод с английского.

Стеганография - это когда сообщение не шифруют, а маскируют под безобидный носитель. Классика жанра - невидимые zero-width символы. Тут тоньше: печатный апостроф заменён на гомоглиф, другой символ с той же картинкой, внутри осмысленной английской фразы.

Пост улетел на Hacker News и застрял в топе. По прямому запросу к Algolia на 9 июля тред набрал 2444 балла и 747 комментариев (тред 48734373, создан 30.06.2026, ссылка ведёт на thereallo.dev). Столько внимания собирается, когда затронут нерв - доверие к инструменту, которому дали ключи от машины. Дальше разберём механику по строчкам, а потом посмотрим, кого метка реально касалась.

Как работает невидимая метка: четыре апострофа и один слэш?

Главное. Метка кодировала два признака хоста в один символ. Апостроф в Today's принимал 4 значения: обычный ' (U+0027), «правый» (U+2019), модификатор ʼ (U+02BC) и штрих ʹ (U+02B9). Выбор зависел от того, попал ли твой хост в зашитый список доменов, содержит ли он кейворд лаборатории, или и то и другое. Отдельно таймзона Asia/Shanghai или Asia/Urumqi меняла дефис в дате на слэш. Гомоглифы в моноширинном шрифте на глаз неотличимы.

Флоу выбора апострофа в клод код: base URL, hostname, проверка по списку 147 доменов, метка в промпте

Ядро - функция выбора апострофа. Thereallo достал её из минифицированного бандла и привёл к читаемому виду:

function edp(known, labKw) {
  if (!known && !labKw) return "'";
  if (known && !labKw)  return "";
  if (!known && labKw)  return "ʼ";
  return "ʹ";
}
Enter fullscreen mode Exit fullscreen mode

Логика читается в лоб. На вход идут два булевых флага: known - хост (имя сервера из адреса, на который уходят запросы) совпал с доменом из зашитого списка, labKw - в хосте нашёлся кейворд одной из ИИ-лабораторий. Из двух флагов получается ровно четыре комбинации, и под каждую - свой символ. Вот они таблицей:

Условие Символ в Today's Юникод Что означает
Обычная установка ' U+0027 ничего, метки нет
Хост в списке доменов U+2019 known-домен (шлюз/ресейлер)
В хосте кейворд лаборатории ʼ U+02BC labKeyword (deepseek, zhipu...)
И домен из списка, и кейворд ʹ U+02B9 оба признака сразу

Все четыре в моноширинном шрифте выглядят как один и тот же апостроф. В этом и смысл стеганографии: строка Today's date is... читается одинаково во всех случаях, а бэкенд по коду символа понимает, из какой категории пришёл запрос.

Второй бит - в разделителе даты. Функция Vla собирала итоговую строку и, если таймзона системы равнялась Asia/Shanghai или Asia/Urumqi, меняла все дефисы на слэши:

2026-06-30   →   2026/06/30
Enter fullscreen mode Exit fullscreen mode

Так Today's date is 2026-06-30. превращалось в Today's date is 2026/06/30. - для человека всё те же цифры, для парсера на бэкенде - флаг «китайская таймзона». Формально апостроф даёт 4 состояния (это два бита), слэш - ещё один флаг. Вместе получается компактный классификатор хоста, зашитый в одну строку, которую никто не читает глазами.

Что за скрытый список на 147 доменов зашит в бинарник?

Главное. Домены и кейворды спрятаны в base64-строках, поверх которых наложен XOR с ключом 91. Расшифровав их сам, я насчитал 147 доменов и 11 кейвордов лабораторий. Домены делятся примерно так: 102 прокси/шлюза/ресейлера, 23 записи с claude/code/.cc в имени, 21 корпоративный и облачный домен, плюс одна запись «cn» - целый TLD. Ни одного .ru-домена в списке нет.

Стековый бар: из 147 записей скрытого списка 102 - прокси и шлюзы, 23 имени с claude или code, 21 корпорация КНР

Список специально спрятали. Функция Gla брала base64-строку (base64 - способ записать любые байты обычными буквами и цифрами, как безобидный на вид текст), разворачивала её в байты и XOR-ила каждый байт с константой 91:

var Kup = 91;
function Gla(encoded) {
  let bytes = Buffer.from(encoded, "base64");
  let out = "";
  for (let byte of bytes) out += String.fromCharCode(byte ^ Kup);
  return out.split(",");
}
Enter fullscreen mode Exit fullscreen mode

XOR - операция «исключающее или»: каждый байт перемешивают с ключом, а повторное наложение того же ключа возвращает исходник. С одним байтом это обфускация, до криптографии ей далеко. Зато строку не видно грепом по бинарнику и не прочитаешь глазами в дампе. Расшифровав, получаешь два массива.

Кейвордов лаборатории ровно 11, и они говорят сами за себя:

deepseek, moonshot, minimax, xaminim, zhipu,
bigmodel, baichuan, stepfun, 01ai, dashscope, volces
Enter fullscreen mode Exit fullscreen mode

Все - имена или поддомены китайских ИИ-лабораторий и их API. Если такое слово встречалось в хосте твоего шлюза, поднимался флаг labKw.

Список доменов больше. По прямому фетчу файла cc-domains.js из репозитория Thereallo на 9 июля в нём 147 записей. Я разложил их по типам: около 102 - прокси, шлюзы и ресейлеры доступа (anyrouter.top, proxyai.com, yunwu.ai, zenmux.ai и подобные); 23 записи содержат claude, code или .cc в имени (claude-code-hub.app, claude-opus.top, openclaude.me); 21 - крупные корпоративные и облачные домены (baidu.com, alibaba-inc.com, bytedance.net, moonshot.ai); и одна запись - просто cn, то есть весь китайский домен верхнего уровня по суффиксу.

Отдельно - то, что важно для русскоязычного читателя: в опубликованном списке нет ни одного .ru-домена, нет provod и нет openrouter. Список целится в китайские лаборатории и известные ресейлеры - формулы «пометить всех, кто ходит мимо официального API» в нём нет.

У кого метка реально включалась, а у кого нет?

Главное. Ключ ко всему - переменная ANTHROPIC_BASE_URL. Если она пустая или указывает на api.anthropic.com, функция-страж Crt() выходила рано и метки не было вообще. Ветка классификации включалась только при кастомном base URL. Дальше апостроф зависел от хоста: домен из списка давал U+2019, кейворд - U+02BC, оба - U+02B9. Кастомный хост не из списка получал обычный апостроф, но сам host всё равно попадал в объект-маркер.

Таблица сценариев: официальный API и пустой base URL шли без метки, кастомный шлюз и таймзона КНР - с меткой

Первым отрабатывал страж Crt(). Он смотрел на ANTHROPIC_BASE_URL и в двух случаях гасил всю механику:

function Crt() {
  let baseUrl = process.env.ANTHROPIC_BASE_URL;
  if (!baseUrl) return true;      // переменная не задана - выходим
  return Rrt(baseUrl);            // задана - совпадает ли с api.anthropic.com?
}
Enter fullscreen mode Exit fullscreen mode

Rrt возвращал true, если хост из base URL равнялся api.anthropic.com. А true из Crt() означал ранний выход: маркировки нет. Сам Thereallo подтверждает практический вывод:

«If you are using a normal setup, the date prompt stays "boring".» - при обычной установке строка с датой остаётся скучной.

  • Thereallo, блог thereallo.dev, 30 июня 2026, перевод с английского.

Соберём сценарии в таблицу. Слева - как ты запускаешь клод код, справа - что уходило в запрос по коду версии 2.1.196:

Сценарий ANTHROPIC_BASE_URL Что уходило
Обычная установка не задан обычный ', дата с дефисом - метки нет
Официальный API api.anthropic.com обычный ' - Crt() выходил рано
Свой шлюз, хоста нет в списке кастомный обычный ', но host попадал в объект-маркер
Шлюз из списка доменов кастомный, known (U+2019)
В хосте кейворд лаборатории кастомный, labKw ʼ (U+02BC)
Домен из списка + кейворд кастомный, оба ʹ (U+02B9)
Таймзона Asia/Shanghai или Asia/Urumqi любой активный дефис → слэш в дате

Ключевой нюанс для тех, кто заворачивает трафик на свой прокси. Даже если твой хост не в списке и апостроф остался обычным, ветка классификации всё равно отрабатывала: host записывался в объект-маркер. Метка на выходе была нулевой, но сам факт кастомного base URL клиент видел и обрабатывал. Так что «не в списке» не равно «клиент меня не заметил».

Переключение под контролем. Раз уж речь про ANTHROPIC_BASE_URL - именно этой переменной клод код и переключают на российский шлюз вроде provod.ai: меняешь base URL и ключ, код проекта не трогаешь, оплата идёт в рублях.

Зачем Anthropic метила запросы: дистилляция и серые шлюзы?

Главное. Мотив читается из самого списка: там китайские лаборатории и ресейлеры доступа. Anthropic весь 2026 год воюет с дистилляцией - когда конкурент гонит миллионы запросов через чужие аккаунты и прокси, чтобы обучить свою модель на ответах Claude. Метка давала бэкенду дешёвый сигнал «этот запрос идёт через шлюз/ресейлер». Цель Thereallo считает понятной, способ - нет.

Чтобы понять, зачем вообще городить стеганографию, посмотри на контекст. 23 февраля 2026 Anthropic выпустила материал «Detecting and preventing distillation attacks», где прямо обвинила ряд китайских лабораторий: около 24 000 фейковых аккаунтов и 16+ млн обменов данными, значительная часть - через «commercial proxy services which resell access to Claude and other frontier AI models at scale», коммерческие прокси, которые в промышленных масштабах перепродают доступ к Claude и другим передовым ИИ-моделям. 10 июня 2026 в письме в Сенат США фигурировали уже другие цифры по Alibaba/Qwen: около 25 000 аккаунтов и 28,8 млн обменов за полтора месяца.

Дистилляция - это обучение своей модели на ответах чужой. Ты берёшь сильную модель, прогоняешь через неё гору запросов, собираешь ответы и учишь на них собственную, дешёвую. Для вендора это утечка того самого, за что заплачены сотни миллионов на обучение. А главный канал такой перекачки - именно серые шлюзы и ресейлеры, которые раздают доступ пачками аккаунтов.

Метка в этот контекст ложится ровно. Кастомный ANTHROPIC_BASE_URL на известный ресейлерский домен - полезный сигнал. Хост со словом deepseek или zhipu - тоже. Сам Thereallo эту логику принимает:

«Anthropic probably wants to detect API resellers, unauthorized Claude Code gateways, and model "distillation attack" pipelines. [...] That part makes sense, but the implementation is weird.» - Anthropic, вероятно, хочет ловить перекупщиков API, несанкционированные шлюзы Claude Code и конвейеры дистилляции. [...] Это понятно, но реализация странная.

  • Thereallo, блог thereallo.dev, 30 июня 2026, перевод с английского.

«Странная» - потому что можно было сказать прямо. Отправить явное телеметрическое поле с документацией, вписать поведение в release notes, сделать политику видимой. Вместо этого сигнал спрятали в пунктуацию системного промпта. Ровно по этому вопросу - раскрытие - и разошлись потом линии обороны и критики в HN-треде.

Что ответила Anthropic и убрали ли метки?

Главное. Убрали. PR на удаление механизма влили 1 июля 2026, в версии от того же дня (источники называют 2.1.197 или 2.1.198). Инженер клод код Thariq Shihipar в X назвал это экспериментом, запущенным в марте против злоупотреблений ресейлеров и дистилляции, и сказал, что команда давно собиралась выпилить его. Метка ехала с версии 2.1.91 (~2 апреля 2026), то есть проработала около трёх месяцев. Формального постмортема на 9 июля нет.

Реакция Anthropic была неформальной, но конкретной. Инженер команды клод код Thariq Shihipar написал в X (цитату дословно повторяют TechCrunch, Malwarebytes, The Register и Habr):

«an experiment we launched in March that was meant to prevent account abuse from unauthorized resellers and protect against distillation» - эксперимент, который мы запустили в марте, чтобы предотвратить злоупотребление аккаунтами со стороны несанкционированных ресейлеров и защититься от дистилляции.

  • Thariq Shihipar, инженер Claude Code, X, начало июля 2026, перевод с английского.

И там же - про то, что механизм давно был кандидатом на удаление:

«The team has landed stronger mitigations since then and we've actually been meaning to take this down for a while.» - с тех пор команда внедрила более сильные меры защиты, и мы вообще-то давно собирались это убрать.

  • Thariq Shihipar, инженер Claude Code, X, начало июля 2026, перевод с английского.

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

  • Метка появилась в версии 2.1.91, вышедшей около 2 апреля 2026. В changelog про неё ни слова.
  • Обнаружил её Thereallo в версии 2.1.196, пост от 30 июня 2026.
  • PR на удаление влили 1 июля 2026. Версию удаления источники называют по-разному - 2.1.197 (Habr и производные) или 2.1.198 (The Register, 8 июля). В CHANGELOG удаление тоже не отражено - убрали тихо, как и добавили.
  • Актуальная версия на 9 июля 2026 - около 2.1.205. В ней метки нет.

То есть механизм проработал около трёх месяцев и уехал без единой строчки в release notes. Пресс-релиза или детального разбора Anthropic не выпустила. Malwarebytes 7 июля формулирует состояние так:

«Anthropic acknowledged the code and moved quickly to remove it, but has not yet issued a detailed public postmortem dedicated to this feature.» - Anthropic признала код и быстро его удалила, но пока не выпустила подробного публичного разбора по этой функции.

  • Pieter Arntz, Malwarebytes, 7 июля 2026, перевод с английского.

Признание есть, тихое удаление есть, публичного постмортема нет. Сюжет держится в новостях именно из-за этой тишины вокруг фичи.

Что ответили 747 комментариев на Hacker News?

Главное. Тред раскололся на два лагеря. Критиков задел скрытый канал классификации в системном промпте инструмента с доступом к shell и файлам - к самому детекту ресейлеров претензий было меньше. Защитники напоминали, что телеметрия раскрыта в ToS и что хост так вычислить тривиально. Отдельная линия - бойкот: часть комментаторов заявила, что уходит на DeepSeek.

Разберу по линиям спора. Самая цитируемая критическая реплика - от yiyingzhang. Она отделяет нормальный бизнес от неприятной части:

«The uncomfortable part is that a "safety" company put a covert classification channel into the system prompt of a developer tool that now routinely gets filesystem, shell, git, and browser access. If a random npm package changed invisible-ish punctuation based on your timezone and API host so its backend could classify you, we would call it malware-adjacent telemetry.» - неприятно то, что компания, продающая безопасность, встроила скрытый канал классификации в системный промпт инструмента, который регулярно получает доступ к файловой системе, shell, git и браузеру. Если бы случайный npm-пакет менял почти невидимую пунктуацию по твоей таймзоне и API-хосту, чтобы бэкенд мог тебя классифицировать, мы бы назвали это телеметрией на грани малвари.

  • yiyingzhang, Hacker News, 1 июля 2026, перевод с английского.

Линия защиты стоит на раскрытии. johnfn напоминает про ToS:

«It's disclosed in the ToS like it's disclosed in the ToS of basically every service that exists today. e.g. "Claude Code connects from users' machines to Anthropic to log operational metrics such as latency, reliability, and usage patterns."» - это раскрыто в ToS так же, как в ToS практически любого сервиса. Например: «Claude Code соединяется с машин пользователей с Anthropic, чтобы логировать операционные метрики - задержку, надёжность и паттерны использования».

  • johnfn, Hacker News, 1 июля 2026, перевод с английского.

Рядом ahmedehab_01 снимает драматизм с технической стороны:

«It is fine to try to protect against distillation through a technique like this. [...] that's a very simple way of detecting the host and can be easily spoofed.» - нормально защищаться от дистилляции подобной техникой. Это очень простой способ определить хост, и его легко подделать.

  • ahmedehab_01, Hacker News, 30 июня 2026, перевод с английского.

Контр-аргумент к защите - от linzhangrun: даже если цель законна, средство несоразмерно.

«Even if they really want to detect Chinese, I believe training a classifier to detect from prompts would be very easy for Anthropic [...] But they would rather plant a Trojan on the user's computer.» - даже если они правда хотят детектить китайцев, обучить классификатор по промптам для Anthropic было бы очень легко. Но они предпочли подсадить троян на компьютер пользователя.

  • linzhangrun, Hacker News, 3 июля 2026, перевод с английского.

И третья линия - голосование ногами. Grimblewald коротко:

«Correct, and I've stopped. I've moved to deepseek instead, equally capable and not as morally bankrupt as either OAI or anthropic.» - верно, и я перестал. Перешёл на DeepSeek, столь же способный и не такой морально обанкротившийся, как OpenAI или Anthropic.

  • Grimblewald, Hacker News, 1 июля 2026, перевод с английского.

Итог треда - разлом по вопросу раскрытия, без единого вердикта «Anthropic злодей». doginasuit это подытоживает: собирать аналитику - обычная практика; вопрос в том, допустимо ли делать это без раскрытия и заметая следы. Именно эта рамка - «доверие держится на скучном поведении» - и повторяется в посте Thereallo финальной строкой: «Trust is earned in the boring parts» - доверие зарабатывается в скучных местах.

Почему Alibaba внесла клод код в список опасного софта?

Главное. По сообщению SCMP (через TechCrunch, 4 июля 2026) Alibaba с 10 июля 2026 запретила сотрудникам пользоваться клод код и перевела их на собственный агент Qoder. Формулировка внутреннего уведомления - «back-door risks», риски бэкдора. Отдельно 8 июля госструктура КНР CNVDB официально рекомендовала обновить или удалить Claude Code версий 2.1.91-2.1.196. Находка из блог-поста за неделю доросла до корпоративных и государственных решений.

История про апостроф в клод коде вышла за пределы Hacker News быстро. Alibaba, по внутреннему уведомлению, которое пересказал South China Morning Post, забанила клод код для сотрудников с 10 июля 2026. Цитата уведомления (перевод внутреннего документа через SCMP):

«As Claude Code was recently discovered to carry back-door risks, after comprehensive evaluation, Claude Code has now been added to a list of high-risk software with security vulnerabilities.» - поскольку недавно у Claude Code обнаружились риски бэкдора, после всесторонней оценки Claude Code внесён в список софта высокого риска с уязвимостями безопасности.

  • внутреннее уведомление Alibaba, по данным SCMP через TechCrunch (Anthony Ha), 4 июля 2026, перевод с английского.

Сотрудников переводят на Qoder - собственного coding-агента Alibaba. Смысл шага понятен: компания, которая сама фигурирует в списке зашитых доменов, не станет держать чужой клиент с классификатором на рабочих машинах.

Через несколько дней подключилась государственная линия. 8 июля 2026 China National Vulnerability Database (CNVDB, госструктура КНР) официально порекомендовала обновить или удалить клод код версий 2.1.91-2.1.196. По изложению The Register (Connor Jones, 8 июля), механизм мог «gather details such as a user's location and identity, and forward them to remote servers» - собирать данные вроде местоположения и идентичности пользователя и пересылать их на удалённые серверы. На запрос The Register Anthropic сразу не ответила.

Тут стоит держать голову холодной. Формулировка CNVDB про «location and identity» шире того, что делал код по факту: метка кодировала классификацию хоста и признак таймзоны, а не паспортные данные. Но репутационный эффект от этого не меньше - когда госрегулятор и крупнейший облачный игрок за неделю выносят инструменту предупреждение, доверие проседает независимо от точности формулировок.

Что это значит для приватности твоих запросов?

Главное. Метка не читала твой код и не пересылала содержимое запросов. Она кодировала классификацию хоста: попал ли твой base URL в список, есть ли в нём кейворд лаборатории, китайская ли таймзона. Это сигнал уровня «через какой шлюз ты ходишь» - на большее его не хватало. Паника «за мной следят и читают репозиторий» тут неоправданна - но и списывать историю в ноль рано.

Разведём слои, потому что их путают. Есть проблема оплаты и гео - когда важно, чтобы платёж и доступ не были завязаны на твою карту и твой личный IP. И есть проблема клиента - когда сам бинарь вендора несёт свои сигналы. Это разные вещи, и находка Thereallo про вторую.

Что метка кодировала по факту:

  • Совпал ли хост твоего base URL с зашитым списком доменов (флаг known).
  • Есть ли в хосте кейворд лаборатории вроде deepseek (флаг labKw).
  • Равна ли системная таймзона Asia/Shanghai или Asia/Urumqi.

Всё. Три бинарных признака, упакованных в один символ и один разделитель. Содержимое твоего кода, тексты промптов, имена файлов - этим механизмом не передавались. Слежки за перепиской в первоисточнике нет: метка отвечала на вопрос «откуда пришёл запрос», и только на него.

История важна другим - доверием к клиенту. Thereallo ставит вопрос ребром: coding-агент уже стоит по опасную сторону границы - он видит секреты, ставит пакеты, пушит коммиты. Люди мирятся с этим ради продуктивности.

Но эта сделка держится на предсказуемости бинарника. Когда клиент начинает прятать биты классификации в невидимую пунктуацию, любое другое заявление о приватности становится труднее принять на веру. Это слова самого Thereallo, и они бьют точно: главный ущерб - подорванное базовое допущение «клиент делает только то, что заявлено».

Второй случай за лето: что клод код уже прятал раньше?

Главное. Это уже второй раз за лето, когда у клод код находят скрытое поведение. В июне разбирали историю с extended thinking: в логах сессии вместо текста рассуждений лежит шифрованная подпись на ~600 символов, а полный reasoning остаётся на сервере Anthropic. Механика разная, паттерн один - клиент показывает пользователю причёсанную версию, а работает на другом слое. И это не эксклюзив Anthropic: фоновое поведение агентов вскрывали и у других.

Находка с апострофом встала в ряд. Незадолго до неё разбирали другую скрытую механику клод код - историю с «мышлением». Если коротко: в логах сессии на диске вместо текста рассуждений модели лежит шифрованная подпись примерно на 600 символов, сам reasoning остаётся на сервере Anthropic, на твою машину приезжает только пересказ - он и бежит по экрану. Подробный разбор - в нашем материале про то, что Anthropic прячет в логах клод кода вместо рассуждений (claude-thinking-2026). Получается своего рода сериал скрытого поведения: два разных механизма, но одна режиссура - пользователю одно, на служебном слое другое.

Паттерн шире одного вендора. Фоновое поведение ИИ-агентов, которое годами никто не замечал, вскрывали и раньше - взять историю с багом Codex, который незаметно писал на SSD терабайты в год (bag-codex-ssd-2026). Общее у этих разборов одно: агент с правами на твоей машине делает больше, чем видно на экране.

Стеганография у клод код при этом тоньше индустриальной классики. Водяные знаки в тексте (SynthID у Google, инициативы OpenAI) - вещь публично объявленная и задокументированная. Тут же признак спрятали в гомоглиф внутри осмысленной фразы - и ни словом не упомянули об этом в release notes. Разница в одном: объявлена маркировка или нет.

Что делать, если ходишь в Claude из России через шлюз?

Главное. В опубликованном списке Thereallo нет ни provod, ни одного .ru-домена. Механизм к тому же удалён 1 июля. Вывод для нас всё равно есть: клиент клод код - бинарь Anthropic у тебя на машине, и завтрашняя его версия может отличаться от вчерашней. Шлюз закрывает оплату и гео; поведение самого клиента он изменить не может. Держи клиент под наблюдением, а доступ - на управляемом канале.

Начну с фактов по этой конкретной находке. Ни provod, ни .ru-доменов в списке из бинарника нет, а сам механизм убрали 1 июля. По этой версии и этому списку метку через российский шлюз ты бы не получил.

Дальше - то, о чём успокаивающие пересказы молчат. Список зашит в бинарь и меняется от версии к версии - что в нём завтра, знает только Anthropic. Любой кастомный ANTHROPIC_BASE_URL уже вводит клиент в ветку классификации: даже когда апостроф остаётся обычным, клиент фиксирует твой хост у себя в маркере. И сам клиент остаётся закрытым исполняемым файлом Anthropic у тебя на машине. Формула «шлюз = невидимость» на уровне клиента не работает: он решает, как ты платишь и откуда ходишь, но не то, что делает сам исполняемый файл.

Отсюда практика. Клод код переключают на российский контур сменой двух настроек - base URL и ключа, код проекта при этом не трогаешь. Технически это выглядит так (адрес тут - технический параметр для примера, точный base_url для своего аккаунта бери в кабинете provod.ai):

export ANTHROPIC_BASE_URL="https://api.provod.ai"
export ANTHROPIC_AUTH_TOKEN="PROVOD_API_KEY"
claude
Enter fullscreen mode Exit fullscreen mode

Одна оговорка, на которой спотыкаются чаще всего: у клод кода и Anthropic SDK адрес идёт без /v1 на конце, а у Cursor и OpenAI-совместимых клиентов - с /v1. Перепутаешь - поймаешь 404 на ровном месте. Пошаговый сетап мы разбирали в материале про то, как подключить Claude из России через шлюз (kak-polzovatsya-claude-iz-rossii-2026), а как вообще выбирать агрегатор и что проверить до миграции - в разборе агрегаторов LLM API (agregatory-llm-api-rossii-2026).

Что это даёт по делу. provod.ai работает как российский OpenRouter: один ключ, один баланс, все флагманы разом - Claude Opus 4.8, GPT-5.5, Gemini 3.1 Pro, DeepSeek v4. Цены 1:1 с официалом, без наценки: для claude-opus-4.8 это 0,39/1,95 ₽ за 1000 токенов вход/выход. Оплата картой РФ, через СБП или по счёту, юрлицам - полный пакет закрывающих. Поведение клиента это не меняет - но канал доступа и платёж при этом твои.

Как проверить свой клод код самому?

Главное. Проверка занимает минуты. Убедись, что версия свежая (июльская, где механизм уже вырезан). Хочешь заглянуть глубже - повтори метод Thereallo: греп бинарника на служебные функции и лог исходящего запроса через собственный прокси. Смотришь на код символа в Today's - обычный ' (U+0027) значит, что метки нет. Это способ убедиться самому - патчить бинарь и нарушать ToS для этого не нужно.

По шагам, от простого к глубокому:

  1. Проверь версию. Выполни claude --version (или npm ls @anthropic-ai/claude-code). Если версия от 1 июля и новее (2.1.198+, на 9 июля актуальна ~2.1.205), механизм уже удалён. Свежая версия - самый быстрый способ закрыть вопрос.
  2. Обнови, если старая. Версии 2.1.91-2.1.196 несли метку. npm update -g @anthropic-ai/claude-code подтянет актуальную.
  3. Посмотри исходящий запрос. Если хочешь увидеть своими глазами, заверни клод код на локальный прокси (тот же mitmproxy) и поймай системный промпт. Найди строку Today's date is... и посмотри на апостроф. Обычный ' - метки нет.
  4. Проверь код символа. Скопируй апостроф из перехваченного запроса и прогони через определение кодовой точки. U+0027 - чисто. U+2019, U+02BC или U+02B9 - маркер (актуально для старых версий).
  5. Глянь разделитель даты. Дефисы вместо слэшей (2026-07-09, не 2026/07/09) - признак того, что таймзонная ветка не сработала.

Метод Thereallo - именно наблюдение: греп бинарника плюс лог исходящего трафика. Обход, который он описывает (сменить hostname, поменять таймзону, пропатчить бинарь), он приводит как доказательство слабости механизма, а не как рекомендацию. Патчить подписанный бинарь Anthropic и обходить ToS - твоя ответственность и твой риск; для проверки достаточно посмотреть версию и перехватить один запрос.

6 мифов вокруг находки: что правда, а что паника?

Главное. Вокруг апострофа быстро наросли преувеличения - от «клод код читает твой код и стучит» до «Anthropic всё отрицает». Ни то, ни другое неверно. Ниже шесть частых мифов и что показывает первоисточник по каждому. Правило простое: сверяйся с кодом версии 2.1.196 и заявлениями Anthropic - пересказы пересказов только множат путаницу.

Миф Как на самом деле
Метка читала твой код и содержимое запросов Нет. Кодировались только hostname из base URL и признак таймзоны - три бинарных флага, не содержимое
Это касалось всех, включая официальный API Нет. При api.anthropic.com и при пустом base URL Crt() выходил рано - метки не было
Механизм работает прямо сейчас Нет. PR на удаление влит 1 июля 2026, в актуальной версии ~2.1.205 метки нет
Кастомный прокси = мгновенный бан Нет. Прямая причинность «прокси → автобан» в первоисточниках не установлена, речь о сигнале-классификации
Метку видно глазами Нет. Гомоглифы U+2019 / U+02BC / U+02B9 в моноширинном шрифте неотличимы от обычного апострофа
Anthropic всё отрицает Нет. Инженер Thariq Shihipar в X признал эксперимент и объяснил его назначение

Пара мифов заслуживает расшифровки. Первый - про бан. Тревога «метка = блокировка за прокси» понятна на фоне майской волны банов российских аккаунтов, но это разные сюжеты. Метка - это сигнал классификации хоста; связки «получил апостроф - словил бан» в первоисточниках нет. Не смешивай наблюдение с последствием, которого никто не задокументировал.

Второй - про «Anthropic молчит». Молчания как раз нет: Anthropic ответила и код убрала - но так и не объяснила, почему фича три месяца жила молча. Этот зазор и питает недоверие - «отрицания» тут никогда не было.

Чего находка НЕ доказывает

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

Первое: код и содержимое запросов через эту метку не уходили. Апостроф нёс максимум три бита о хосте и таймзоне. Ни строчки твоего репозитория, ни текста промптов этот канал не переносил. Технически он для этого и не предназначен.

Второе: разбор Thereallo описывает классификацию источника трафика, диалоги в этой механике не участвуют. Расширять это до «Anthropic читает, что я пишу» первоисточник не позволяет.

Третье: волну банов российских аккаунтов мая 2026 с этим механизмом никто не связал. Это был отдельный сюжет про платёжный антифрод и гео, и притягивать его к апострофу - домысел. Корректная формулировка - «клиент мог классифицировать хост», без продолжения про блокировку.

Рамка такая: перед нами скрытый и недокументированный способ маркировки трафика с понятным анти-дистилляционным мотивом, который Anthropic признала и убрала. Не заговор против пользователей и не чтение кода - но и не «ничего не было». Вопрос доверия к клиенту никуда не делся, даже когда конкретный код уже вырезан.

Сделай прямо сейчас

Главное. Пять действий на ближайшие десять минут - от проверки версии до правильной ментальной модели. Дальше держи в голове одно: любой вендорский клиент работает у тебя с полными правами, и «скучным» он обязан быть по умолчанию, а не по обещанию.

По шагам:

  1. Выполни claude --version. Если это 2.1.198 и новее - механизм с меткой уже удалён, вопрос закрыт.
  2. Старая версия (2.1.91-2.1.196) - обнови: npm update -g @anthropic-ai/claude-code.
  3. Хочешь убедиться руками - заверни клод код на локальный прокси и посмотри на апостроф в Today's date. U+0027 значит «чисто».
  4. Шлюз - это про карту и IP; поведение клиента - отдельный слой, сменой base URL его не выключишь.
  5. Если гоняешь агентов с доступом к репозиторию - возьми за правило при мажорных обновлениях проверять сам бинарь - вывод на экране всей картины не даёт.

Была полезна статья? Да / Нет

Источники

  1. Thereallo, блог thereallo.dev, «Claude Code Is Steganographically Marking Requests» (функции Zup/edp/Vla/Crt, четыре апострофа U+0027/U+2019/U+02BC/U+02B9, слэш по таймзоне Asia/Shanghai и Asia/Urumqi, XOR с ключом 91 поверх base64, список доменов и 11 кейвордов, бинарь подписан Anthropic TeamIdentifier=Q6L2SF6YDW, версия 2.1.196) - 30 июня 2026
  2. Hacker News, обсуждение поста Thereallo, тред 48734373 (2444 балла, 747 комментариев; цитаты yiyingzhang, johnfn, ahmedehab_01, linzhangrun, Grimblewald, doginasuit) - создан 30 июня 2026, проверено 09.07.2026
  3. Файл cc-domains.js, репозиторий Thereallo1026/assets (полный список: 147 доменов, 11 кейвордов лабораторий - deepseek, moonshot, minimax, xaminim, zhipu, bigmodel, baichuan, stepfun, 01ai, dashscope, volces) - проверено 09.07.2026
  4. Thariq Shihipar, инженер Claude Code, X (эксперимент запущен в марте против злоупотреблений ресейлеров и дистилляции; команда давно собиралась убрать) - начало июля 2026
  5. The Register, «Anthropic is removing its covert code...» (первый крупный подхват, версия удаления) - 1 июля 2026; Connor Jones, «China tells devs to ditch Claude Code over 'backdoor code' fears» (рекомендация CNVDB по версиям 2.1.91-2.1.196, «gather details such as a user's location and identity») - 8 июля 2026
  6. TechCrunch, Anthony Ha, «Alibaba reportedly bans employees from using Claude Code» (бан с 10 июля 2026, перевод на Qoder, цитата внутреннего уведомления через SCMP, «back-door risks», цитаты Shihipar) - 4 июля 2026
  7. Malwarebytes, Pieter Arntz, «...was an "experiment," says Anthropic» (Anthropic признала и быстро удалила, детального публичного постмортема нет) - 7 июля 2026
  8. Habr, masasibata «Claude Code втихую метит запросы» (техника) - 1 июля 2026; runaway_llm «Anthropic три месяца тайно метила...» (обновление про удаление, механизм с версии 2.1.91) - 2 июля 2026
  9. Anthropic, anthropic.com/news, «Detecting and preventing distillation attacks» (~24 000 фейковых аккаунтов, 16+ млн обменов, «commercial proxy services which resell access to Claude... at scale») - 23 февраля 2026; письмо в Сенат США про Alibaba/Qwen (~25 000 аккаунтов, 28,8 млн обменов) по Bloomberg/CNBC/Forbes - 10-26 июня 2026
  10. npm registry, @anthropic-ai/claude-code (2.1.196 от 29.06, 2.1.197 от 30.06, 2.1.198 от 01.07, актуальная ~2.1.205 на 09.07); GitHub anthropics/claude-code, CHANGELOG (удаление механизма не отражено) - проверено 09.07.2026

Связанные материалы

  • «Claude thinking: что Anthropic показывает вместо рассуждений» (claude-thinking-2026) - тот же сериал скрытого поведения Claude Code: шифрованная подпись вместо текста рассуждений в логах
  • «Claude из России в 2026: 4 способа доступа» (kak-polzovatsya-claude-iz-rossii-2026) - пошаговый сетап клод кода через ANTHROPIC_BASE_URL без VPN и зарубежных карт
  • «Агрегаторы LLM API в России 2026» (agregatory-llm-api-rossii-2026) - как выбрать единый API-шлюз и что проверить до миграции
  • «Баг Codex: ИИ-агент писал на SSD до 640 ТБ в год» (bag-codex-ssd-2026) - прецедент фонового поведения агента, которое годами никто не замечал

Метка с апострофом уже вырезана, но урок остаётся: за поведением вендорского клиента стоит следить, а канал доступа и оплату - держать под собственным контролем. Если нужен единый API с флагманами разом - provod.ai работает как российский OpenRouter: Claude Opus 4.8, GPT-5.5, Gemini 3.1 Pro и DeepSeek v4 в одном чате и через один API, OpenAI- и Anthropic-совместимый. Клод код переключается сменой base URL и ключа, код проекта не трогаешь; оплата в рублях картой РФ, через СБП или по счёту с закрывающими, цены 1:1 с официалом: подключить модели по API в рублях.


provod.ai — Russian LLM API aggregator. One OpenAI-compatible endpoint to all flagship models: OpenAI (GPT-5.6, GPT-5.5), Anthropic (Claude Opus 4.8, Sonnet 4.6), Google (Gemini 3.1 Pro, 3.5 Flash), DeepSeek V4 Pro, Qwen 3.6 Plus. Provider prices at the CBR rate, no token markup. Pay in rubles to a Russian legal entity with full closing documents.

Try: provod.ai · model catalog · docs

Top comments (0)