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) подтвердил находку Hanff | The Register, TechTimes; сотрудник Anthropic Thariq Shihipar ответил в X |
| Резонанс | Privacy, ePrivacy; Malwarebytes, gHacks | Hacker 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ветка, по отчётам, не активируется; customANTHROPIC_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's | Unicode | Пример формата даты |
|---|---|---|---|
| Non-default base URL, host вне списка, без lab keyword | ASCII apostrophe | U+0027 ' | 2026-06-30 (вне CN timezone) |
| Host в списке известных gateway/resale | Right single quotation mark | U+2019 ' | то же |
| Host вне списка, но с AI lab keyword | Modifier letter apostrophe | U+02BC ʼ | то же |
| Одновременно domain list и keyword | Modifier letter prime | U+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 «активный шпионаж».
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.196 | Community воспроизводит steganography branch в npm package и embedded chunk |
| 2026-06-30 | Thereallo публикует 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)
-
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. -
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. -
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. -
04
Проверить system timezone: событие B при
Asia/Shanghai,Asia/Urumqiменяет date separator. CI и cloud dev box — expected timezone; при необходимости зафиксироватьTZ=UTCв docs. -
05
Enterprise least privilege: кто ставит Desktop, кто конфигурирует base URL и API Key; approval для MCP и browser extensions; изоляция Claude Code от production secrets.
-
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):
- Observable behavior: public docs или SBOM для system prompt injection, env-trigger logic, local file writes; changelog покрывает security-related removals.
- Data minimization: classification и anti-abuse через explicit API fields или opt-in telemetry, не steganography.
- Local changes need consent: Native Messaging, browser extensions, LaunchAgent presets — violation без itemized consent при first use.
- 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
NativeMessagingHosts каждого Chromium-browser удалить com.anthropic.claude_browser_extension.json, проверить regeneration после restart Desktop. По Hanff удаление может быть перезаписано; long-term — disable browser integration или version без behavior, monitor directory changes.- → / только если ANTHROPIC_BASE_URL уже non-official и timezone Asia/Shanghai или Asia/Urumqi. Direct official API — branch не входит, по отчётам.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 читает.ANTHROPIC_BASE_URL — re-check env и CI images; changelog молчит — compliance retention upgrade record и version pin policy.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 — цены, заказ.