Steganography Claude Code: как Anthropic пометила вас одной кавычкой

30 июня 2026 reverse engineering бинарника Claude Code показал: при ANTHROPIC_BASE_URL, указывающем на неофициальный endpoint, клиент незаметно подменяет Unicode-апостроф и разделитель даты в строке Today's date system prompt — по отчётам reverse engineering для маркировки proxy/gateway-пользователей. Claude web не затронут; логика удалена в 2.1.197.

TL;DR: речь о терминальном инструменте Claude Code (npm @anthropic-ai/claude-code), не о веб-чате Claude. По отчётам reverse engineering: если ANTHROPIC_BASE_URL указывает не на api.anthropic.com, клиент в system prompt, отправляемом в Anthropic, делает в строке Today's date is … невидимые глазу правки Unicode и формата даты — по утечкам для anti-distillation и идентификации неофициальных маршрутов. Логика удалена в 2.1.197 (2026-07-01), но в официальном changelog не упомянута. Для разработчиков и tech lead, использующих Claude Code, Cursor, Copilot и terminal Agent: разделение двух независимых скандалов 2026 (апрель Desktop Native Messaging vs июнь steganography), таблица кодировки, 6-шаговый Runbook, принципы доверия к вендору и FAQ. Если вы уже смотрите сравнение AI coding assistant 2026, эта статья — дополнение про trust boundary terminal Agent.

00Кризис доверия Anthropic 2026: два события, не смешивать

В первой половине 2026 Anthropic последовательно вызвала споры о privacy и security на линиях desktop-клиента и terminal coding Agent. Сообщество часто сводит их к «Claude spyware», но механизмы, scope и пути исправления разные. Таблица «событие A / событие B» — обязательный шаг перед Runbook и внутренним security bulletin.

ИзмерениеСобытие A: Claude Desktop Native Messaging (апрель 2026)Событие B: steganography в system prompt Claude Code (раскрытие 30.06.2026)
ПродуктClaude Desktop macOS (Claude.app)Claude Code CLI (@anthropic-ai/claude-code)
Первое раскрытиеPrivacy-консультант Alexander Hanff (апрель 2026); Antiy Labs — отчёт о рискахРазработчик Thereallo (thereallo.dev); Reddit LegitMichel777; обсуждение на Hacker News
ПоведениеПри установке тихо записывает Native Messaging manifest в Chromium-браузеры, предварительно авторизуя расширение Claude для связи с локальным binary — даже если браузер не установленПри нестандартном ANTHROPIC_BASE_URL в строке Today's date is … system prompt встраивает варианты Unicode-апострофа и timezone-зависимый разделитель даты
Условие срабатыванияУстановка/запуск Claude DesktopТолько при custom base URL (proxy, gateway, resale API и т.д.)
Независимое подтверждениеNoah Kenney (Digital 520) подтвердил находку HanffThe Register, TechTimes; сотрудник Anthropic Thariq Shihipar ответил в X
РезонансPrivacy, ePrivacy; Malwarebytes, gHacksHacker News 350+ points, 100+ comments; раскол «anti-distillation оправдан» vs «скрытые метки недопустимы»
Статус fixВ последующих версиях добавлен auth switch; attack surface обсуждается2.1.197 (2026-07-01) — merged PR на удаление; changelog молчит

В паре с кризисом доверия Gemini CLI и стратегией Anthropic AI for Science событие B показывает компромисс вендора между anti-model distillation и прозрачностью dev tools. По публичным заявлениям Anthropic эксперимент блокировал несанкционированный resale и distillation, но steganographic marking и удаление без changelog усилили erosion доверия.

БольПочему «одна кавычка» тревожит разработчиков

Claude Code — high-privilege terminal Agent на локальной машине или в CI: читает repo, вызывает tools, через MCP подключается к внешним системам. Разумное ожидание: system prompt, уходящий в модель, совпадает с тем, что видно в UI, а env vars влияют только на routing, не на скрытую правку prompt. По отчётам reverse engineering событие B ломает эту модель:

  • Скрытый канал: fingerprint не в отдельном telemetry-поле, а в строке даты, которая есть в каждом запросе — глаз и diff почти не видят.
  • Условный trigger: при прямом api.anthropic.com ветка, по отчётам, не активируется; custom ANTHROPIC_BASE_URL (SiliconFlow, DeepSeek gateway, corporate reverse proxy) — активирует; пересекается с экосистемой API-relay.
  • Obfuscation списка: domain list в base64 + XOR(91), по reverse engineering ~147 правил с deepseek, moonshot, zhipu и gateway-доменами.
  • Version drift: логика с 2.1.91 (начало апреля 2026); воспроизводилась в 2.1.193 / 2.1.195 / 2.1.196; снята только в 2.1.197.
  • Disclosure gap: PR на удаление merged, release notes не упоминают steganography — enterprise compliance и SBOM audit не закрываются по changelog.

На HN одни считают защиту модели от distillation законным business need; другие — что steganography в платном dev tool без уведомления конфликтует с «Ask for trust». Спор сам по себе показывает: trust model terminal Agent ещё не стандартизирован.

01Механизм steganography: как строка Today's date кодирует fingerprint

По thereallo.dev и reverse engineering Vincent Schmalbach pipeline — четыре шага: (1) читать process.env.ANTHROPIC_BASE_URL; (2) если пусто или official API — обычная строка даты; (3) иначе parse hostname, сверка с XOR-decoded таблицей domain/keyword; (4) по match выбрать Unicode-апостроф и по system timezone заменить - на / в дате.

Условие (по reverse engineering)Апостроф в Today'sUnicodeПример формата даты
Non-default base URL, host вне списка, без lab keywordASCII apostropheU+0027 '2026-06-30 (вне CN timezone)
Host в списке известных gateway/resaleRight single quotation markU+2019 'то же
Host вне списка, но с AI lab keywordModifier letter apostropheU+02BC ʼто же
Одновременно domain list и keywordModifier letter primeU+02B9 ʹто же
System timezone Asia/Shanghai или Asia/Urumqi(комбинируется с таблицей выше)2026/06/30 (-/)

Таблица domain/keyword в binary хранится как base64 + XOR(91), по reverse engineering ~147 правил: deepseek, moonshot, zhipu, siliconflow и relay-домены. Если сервер Anthropic при ingest нормализует или сохраняет raw Unicode, из одной английской строки читаются сигналы «proxy или нет», «похоже на CN AI routing», «CN timezone» — по утечкам для anti-distillation и resale detection, не доказанный community verdict «активный шпионаж».

Псевдокод (реконструкция по reverse engineering, не official source)
function renderDateLine(date) {
  if (!customBaseUrl()) return `Today's date is ${date}.`;
  const { knownHost, labKeyword, cnTZ } = classifyRoute();
  const apostrophe = pickApostrophe(knownHost, labKeyword);
  const rendered = cnTZ ? date.replaceAll("-", "/") : date;
  return `Today${apostrophe}s date is ${rendered}.`;
}
  • Цитируемые данные 1: steganography logic с Claude Code 2.1.91; на момент раскрытия детектировалась в 2.1.196.
  • Цитируемые данные 2: obfuscated domain/keyword table ~147 правил, скрыта XOR(91) и base64.
  • Цитируемые данные 3: Hacker News thread 350+ points, 100+ comments; community split «anti-distillation OK» vs «dev tools без скрытых меток».

02Timeline версий и мотивация: утечки vs официальный ответ

Версия / датаПо публичной информации и reverse engineering
2.1.91 (около 2026-04-02)Reddit LegitMichel777 сообщает о логике в этой версии
2.1.193 / 2.1.195 / 2.1.196Community воспроизводит steganography branch в npm package и embedded chunk
2026-06-30Thereallo публикует reverse engineering; HN/Reddit escalation
2.1.197 (2026-07-01)Merged PR на удаление; official changelog молчит об удалении steganography

Сотрудник Anthropic Thariq Shihipar в X назвал это экспериментом, запущенным в марте, против несанкционированного resale и distillation; команда планировала rollback в следующем релизе. The Register и другие СМИ пишут, что Anthropic признала код и обещала fix. Это публичные заявления; потребляет ли server-side эти метки, влияет ли на account risk — Anthropic не раскрывает; ниже не делаем factual claims о нераскрытых последствиях.

Параллельно source leak показал ANTI_DISTILLATION_CC и другие anti-distillation механизмы (например injection шумных tool data). По утечкам steganography в том же «protect the model» toolbox, но скрытая правка system prompt бьёт по dev trust сильнее, чем документированное API-поле.

03Это «spyware»? Как квалифицировать оба события

Событие A: несанкционированный локальный channel preset

Hanff и Antiy Labs: Claude Desktop без уведомления пишет в Chrome, Edge, Brave, Arc, Vivaldi, Opera путь com.anthropic.claude_browser_extension.json, предварительно авторизуя extension ID и local helper; после удаления при restart приложения файл воссоздаётся. Noah Kenney подтвердил: persistent pre-authorized bridge «browser extension → binary вне sandbox».

Risk chain: документация Anthropic для Claude for Chrome указывает prompt injection risk — success rate 23.6% без mitigation, ~11.2% с mitigation. При установленном extension и preset manifest по security analysis malicious page injection теоретически может через extension и Native Messaging достичь local capabilities уровня user — combo несанкционированная правка local config + известная high-success injection surface, не классический trojan, но с сильным compliance и ePrivacy спором.

Событие B: недисклosed telemetry на уровне prompt

Событие B не трогает local files, а встраивает classification signals в невидимый пользователю system prompt без отдельного opt-in. По reverse engineering это нераскрытый telemetry/classification channel: плохо для transparency и data minimization. «Spyware» зависит от jurisdiction и contract; инженерно точнее: скрытые classification marks в dev tool, удалённые без changelog entry.

Discipline формулировок: мотивы Anthropic — «по утечкам», «по reverse engineering», «по их публичным заявлениям»; без verdict о server-side use и account sanctions. Enterprise audit должен покрыть manifest paths (A) и base URL / version (B).

046-шаговый Runbook (Claude Code + Desktop)

  1. 01
    Проверить ANTHROPIC_BASE_URL: inventory всех Claude Code instances в shell, ~/.claude/settings.json, CI secrets. Non-official API, по reverse engineering, активировал steganography branch; corporate gateway — document + security approval.
  2. 02
    Upgrade Claude Code ≥ 2.1.197: claude --version или npm ls -g @anthropic-ai/claude-code. Ниже 2.1.197, по отчётам, steganography ещё есть; после upgrade changelog молчит — verify binary или pin version.
  3. 03
    Audit Claude Desktop Native Messaging: на macOS проверить ~/Library/Application Support/Google/Chrome/NativeMessagingHosts/ и аналоги Edge, Brave, Arc на com.anthropic.claude_browser_extension.json. Без browser automation — удалить manifest и log, пересоздаёт ли Desktop.
  4. 04
    Проверить system timezone: событие B при Asia/Shanghai, Asia/Urumqi меняет date separator. CI и cloud dev box — expected timezone; при необходимости зафиксировать TZ=UTC в docs.
  5. 05
    Enterprise least privilege: кто ставит Desktop, кто конфигурирует base URL и API Key; approval для MCP и browser extensions; изоляция Claude Code от production secrets.
  6. 06
    Изолировать dev environment и audit: Agent на отдельном Mac или cloud bare-metal node, отдельно от daily browsing и personal Apple ID; periodic grep outbound system prompt samples (MITM lab) или vendor SBOM. Для стабильного resettable Mac CI/Agent host — цены NUKCLOUD и страница заказа для dedicated node.

05Доверие к AI-вендору: четыре procurement-принципа

Terminal Agent читает code, дергает tools, хранит API Key. Steganography Claude Code и Desktop manifest 2026 показывают: vendor docs ≠ runtime behavior. Procurement и platform teams могут принять четыре принципа (Anthropic, Google, OpenAI, Cursor):

  1. Observable behavior: public docs или SBOM для system prompt injection, env-trigger logic, local file writes; changelog покрывает security-related removals.
  2. Data minimization: classification и anti-abuse через explicit API fields или opt-in telemetry, не steganography.
  3. Local changes need consent: Native Messaging, browser extensions, LaunchAgent presets — violation без itemized consent при first use.
  4. Verifiable supply chain: pin version, verify npm hash, diff в isolated env; partition Agent host и production network для one-click rebuild.

Trust risk desktop Agent и Claude Code редко в quality ответов модели — в неаудированных local side effects и invisible outbound payload. Shared laptop или oversubscribed VPS для 7×24 Agent добавляет neighbor noise и long-connection drops; для auditable SSH, Xcode и Claude Code на production или CI plane мультирегиональные bare-metal Mac / cloud Mac nodes NUKCLOUD дают dedicated hardware, root и elastic daily/monthly billing — Agent env отделён от corporate daily machine, меньше leak surface. Сверьте spec на странице цен, trial isolated dev на странице заказа; детали provisioning — консоль и центр помощи.

06FAQ

Steganography Claude Code — это spyware?
Legal qualification зависит от jurisdiction. Инженерно: событие B — undisclosed system prompt classification mark; событие A — unauthorized local Native Messaging preset. Оба сильно бьют по trust; «spyware» — через contract и local law; enterprise mitigates по Runbook, не только brand reputation.
Затронет ли обычный Claude web?
Нет. Logic в Claude Code CLI, не в browser chat. Только claude.ai — upgrade CLI для B не обязателен; если параллельно Claude Code или Desktop — версии и manifest отдельно.
Как удалить Native Messaging injection от Claude Desktop?
На macOS в NativeMessagingHosts каждого Chromium-browser удалить com.anthropic.claude_browser_extension.json, проверить regeneration после restart Desktop. По Hanff удаление может быть перезаписано; long-term — disable browser integration или version без behavior, monitor directory changes.
CN timezone alone — достаточно для tag?
Нет. По reverse engineering замена -/ только если ANTHROPIC_BASE_URL уже non-official и timezone Asia/Shanghai или Asia/Urumqi. Direct official API — branch не входит, по отчётам.
Что такое apostrophe trick?
В слове Today's ASCII U+0027 заменяется на визуально идентичные U+2019, U+02BC, U+02B9, кодируя «domain list hit / AI lab keyword hit» и комбинации. Human eye не видит; Unicode-aware log или server-side decode читает.
Апрель Desktop и июнь steganography — одно и то же?
Нет. A — Claude Desktop и browser bridge; B — Claude Code system prompt при custom API route. Product, trigger, fix version разные; internal bulletin и security scan — отдельные line items.
Зачем Anthropic это добавила (по публичным заявлениям)?
Thariq Shihipar — эксперiment против unauthorized resale и model distillation; The Register пишет об investment в classifiers и behavioral fingerprinting. Community спор: цель понятна, скрытая правка prompt из dev tool — нет; removal без changelog усиливает backlash.
Нужен ли upgrade до 2.1.197?
Да, рекомендуется. 2.1.197 merged removal PR. После custom ANTHROPIC_BASE_URL — re-check env и CI images; changelog молчит — compliance retention upgrade record и version pin policy.
API relay (domestic gateway) — всегда mark?
По reverse engineering: non-official ANTHROPIC_BASE_URL + host match rules или keywords → date line rewrite; до 2.1.197 behavior был. После upgrade logic снята; другие anti-distillation (например ANTI_DISTILLATION_CC) — track vendor updates и community reverse engineering.

07Источники

  • The Register — Anthropic удаляет covert code в Claude Code
  • thereallo.dev — reverse engineering steganography в system prompt
  • Antiy Labs — risk analysis Native Messaging Claude Desktop
  • Alexander Hanff — original disclosure silent manifest install (That Privacy Guy и др.)
  • Hacker News — discussion конец июня 2026 (350+ points, 100+ comments)
  • Reddit — LegitMichel777 и др. про behavior 2.1.91
  • Vincent Schmalbach, TechTimes — technical follow-up по ANTHROPIC_BASE_URL и Unicode marks

Terminal Agent превращается в «intern с root». Steganography Claude Code напоминает: при выборе Cursor vs Claude Code vs Copilot помимо SWE-bench и pricing спросите — меняет ли tool prompt незаметно? Держать Agent на rebuildable isolated Mac — pragmatic vote 2026. Spec и trial — цены, заказ.