Claude Code — шпионское ПО?
Скрытый Unicode-отпечаток Anthropic

Если вы крутите Claude Code или Claude Desktop, разобраться нужно сразу в двух вещах: стeganография промпта (июнь 2026) и тихая инъекция в браузер (апрель) — это разные инциденты. Первый подменяет Unicode-апострофы в строке Today's date при прокси; второй пре-записывает манифесты Native Messaging на macOS. По RE-отчётам Anthropic вырезал код в 2.1.197; цель — anti-distillation, метод — скрытый и необъявленный. Ниже — матрица A/B, таблица Unicode, HN-дебаты, чеклист из 6 шагов и FAQ. Тарифы нод — на странице цен.

Суть: 30 июня 2026, по thereallo.dev RE, Claude Code (CLI, не веб) переписывал строку Today's date is... в system prompt, когда ANTHROPIC_BASE_URL указывал не на api.anthropic.com. Меняя разделитель даты (- vs /) и подставляя визуально идентичные Unicode-апострофы (U+0027 / U+2019 / U+02BC / U+02B9), клиент кодировал China-TZ и совпадения с China-доменами или AI-lab keywords в каждый запрос. Классический covert channel. Anthropic выпустил 2.1.197 1 июля без упоминания в changelog.

  • Две истории путают: Desktop browser injection (Hanff, апрель) и Code prompt steganography (RE, июнь) — разные продукты, триггеры, механика; смешивание бьёт по E-E-A-T.
  • Не все затронуты: инцидент B только при неофициальном Base URL; официальный endpoint — без изменений.
  • Цель vs метод: консенсус — anti-distillation/reselling; цель понятна, сокрытие — нет.
  • HN раскол: front page за часы, 350+ points — «разумная anti-distillation» vs «malware-adjacent для dev-tool».
  • Тон: «по отчётам», «RE нашёл» — намерения вендора не как доказанный факт.

Инцидент A (silent browser injection) vs инцидент B (system prompt steganography)
Измерение Инцидент A: silent browser injection Инцидент B: prompt steganography
Продукт Claude Desktop (macOS client) Claude Code (CLI coding tool)
Источник Alexander Hanff (privacy consultant, The Register) Developer RE на thereallo.dev, Reddit → HN
Дата Апрель 2026 (~18 апр. onward) 30 июня 2026
Поведение Тихо пишет com.anthropic.claude_browser_extension.json в Chrome/Edge/Brave/Arc/Vivaldi/Opera/Chromium; 3 extension ID для sandbox-external chrome-native-host; создаёт dirs без браузера; файл регенерируется после удаления При ANTHROPIC_BASE_URL ≠ api.anthropic.com переписывает Today's date is... через steganography
Метки spyware / backdoor prompt steganography / covert channel
Триггер Install/start Claude Desktop Только неофициальный Base URL; не каждый разговор
Ответ Anthropic Без формального ответа; позже consent toggle; permission model не снят полностью Признали код; удалили в 2.1.197 (1 июл.); changelog молчит

По инциденту A Noah Kenney (Digital 520) подтвердил воспроизводимость Hanff; Antiy Labs опубликовали risk analysis. По B — RE подтвердил логику в 2.1.193 / 2.1.195 / 2.1.196.

Предусловие: ANTHROPIC_BASE_URL указывает не на api.anthropic.com (proxy, gateway, reseller, OpenAI-compatible layer). Официальный endpoint — без модификаций.

При срабатывании два сигнала прячутся в безобидной строке Today's date is ...:

  1. Разделитель даты: при TZ Asia/Shanghai или Asia/Urumqi 2026-06-302026/06/30.
  2. Swap апострофа: апостроф в Today's становится Unicode look-alike, кодирующим match.
Unicode fingerprint mapping system prompt Claude Code (thereallo.dev RE)
Условие Формат даты Апостроф Unicode
Default (no match) 2026-06-30 ' ASCII apostrophe U+0027
China-linked org/reseller domain 2026-06-30 ' right single quote U+2019
AI-lab keyword (deepseek, moonshot, zhipu, minimax, baichuan, stepfun, 01ai…) 2026-06-30 ʼ modifier letter apostrophe U+02BC
Domain и lab 2026-06-30 ʹ modifier letter prime U+02B9
+ China timezone 2026/06/30 (правила апострофа как выше)

По RE: domain/keyword lists — base64 + XOR (key 91), ~147 domain patterns. Человеку prompt выглядит обычным; backend Anthropic по code point одного апострофа видит: VPN, China TZ, возможно Chinese AI lab.

check-base-url.sh
echo "$ANTHROPIC_BASE_URL"
claude --version

Консенсус: почти наверняка anti-distillation и anti-unauthorized-reselling. Anthropic, OpenAI, Google публично беспокоятся, что конкуренты собирают API outputs для smaller models. China-linked resellers, proxies, labs — prime suspects.

Intent может быть defensible; method — нет. Превращать классификацию в невидимую пунктуацию, обфусцировать в binary и шипить в каждом запросе dev-tool на trust — это over the line.

На HN thread split: «reasonable anti-distillation defense» vs «malware-adjacent behavior for a dev tool.» Mainstream read: цель — unauthorized reselling + distillation, не personal surveillance; спор — о means (covert, obfuscated, undisclosed).

«Spyware» — loaded word. Точнее:

  • Инцидент A ближе к unauthorized tampering with third-party software + dormant pre-positioned attack surface. Даже unexploited — pre-install high-privilege channel вне browser sandbox; Anthropic numbers для Claude for Chrome prompt-injection: 23.6% (unmitigated) / 11.2% (mitigated).
  • Инцидент B ближе к undisclosed telemetry / covert user classification — не classic exfiltration malware, но undisclosed covert channel.

Какой бы label ни выбрали, core issue один: no informed consent, deliberately hidden.

  1. Check Base URL: echo $ANTHROPIC_BASE_URL; non-official proxies могли триггерить B; production — api.anthropic.com или audited enterprise gateways.
  2. Upgrade Claude Code: version ≥ 2.1.197 (1 июля 2026 — public reports: steganography removed).
  3. Scan Native Messaging manifests (A): macOS ~/Library/Application Support/<browser>/NativeMessagingHosts/com.anthropic.claude_browser_extension.json across Chrome, Edge, Brave, Arc, Vivaldi, Opera.
  4. Delete и watch regeneration: remove JSON, restart Claude Desktop, log recreate — evidence permission model fix.
  5. Audit timezone + proxy combo: VPN + China TZ (Asia/Shanghai / Asia/Urumqi) на old Claude Code + non-official Base URL = full fingerprint vector.
  6. Enterprise / sensitive envs: desktop agents как high-privilege software — least privilege, explicit authorization, auditable behavior; host на isolated 24/7 servers, не personal laptops.

Урок не в «апострофе». Когда model capability обгоняет security boundaries, consent, auditability, vendors пересекают trust boundary под «UX» или «abuse prevention». Ранние ошибки PC/smartphone security replay на desktop AI agents.

Cite-ready technical facts (июнь–июль 2026, public reports + RE):

  • Rule set size: base64 + XOR(91) obfuscation, ~147 domain/keyword patterns.
  • Affected versions: Claude Code 2.1.193 / 2.1.195 / 2.1.196 contained logic; 2.1.197 removed.
  • HN traction: front page в hours, 350+ points, 100+ comments.
  • Claude for Chrome injection success (Anthropic disclosed): 23.6% unmitigated, 11.2% mitigated.

Что реально делать:

  1. Default to distrust; demand evidence. Reproducible, auditable, switchable-off — bar.
  2. Disclosure over concealment. Fight distillation in the open — document, ship toggle — not bury in punctuation.
  3. Least privilege + isolation для каждого desktop agent.
  4. Vote with feet, back with regulation. GDPR-style law и market choice — ultimate check.

Technology может быть neutral; company — нет. Чем capable модель, тем сильнее vendor должен constrain itself — и это не secret, который находишь только reverse-engineering binary.

Q: Claude Code — spyware?
Не classic sense, но RE нашёл undisclosed obfuscated fingerprint; Anthropic removed в 2.1.197. Best label: undisclosed covert channel.

Q: Claude Code track timezone?
Per RE checked Asia/Shanghai / Asia/Urumqi only с non-default ANTHROPIC_BASE_URL; official endpoint users untouched.

Q: Apostrophe / Unicode trick?
Apostrophe в «Today's» switched among U+0027, U+2019, U+02BC, U+02B9 для China domain hits, AI-lab keywords, both, neither.

Q: Why Anthropic add this?
Most likely anti-distillation и unauthorized reselling — legitimate goal, illegitimate implementation и disclosure.

Q: Same as Claude Desktop spyware?
No — April Desktop Native Messaging is A; June Code steganography is B.

Q: Web Claude users affected?
B only Claude Code с non-official ANTHROPIC_BASE_URL.

Q: Remove Claude Desktop browser injection?
Delete com.anthropic.claude_browser_extension.json under ~/Library/Application Support/<browser>/NativeMessagingHosts/; Claude Desktop may recreate.

Q: Why keep A and B separate?
Conflating produces factual errors HN/Reddit/security readers spot instantly — hurts E-E-A-T и SEO credibility.

Primary references — re-check links после upstream updates:

thereallo.dev: Claude Code prompt steganography (original RE report)

The Register: Claude Desktop changes software permissions without consent (Apr 2026)

Hacker News: Claude Code steganography discussion

Long Claude Code sessions, MCP toolchains, multi-model routing на sleeping laptop — interrupted jobs, OAuth expiry, Native Messaging regeneration eat audit work. Local-only checks help, но lack predictable 24/7 host; moving agents to isolated cloud Macs needs stable Apple Silicon и SSH.

Нужны 24/7 agent hosting, stable SSH, predictable Apple Silicon capacity — перенос Claude Code scheduled jobs, MCP configs, multi-vendor fallbacks на dedicated bare-metal servers beats firefighting на unreliable laptop: NOVAKVM — multi-region Mac Mini M4 / M4 Pro, flexible terms, fixed bandwidth, default SSH — ideal для iOS CI/CD и AI agent automation на одной машине. См. страницу цен, оформление заказа, центр помощи.