Phantom-токены в Claude Code Max: -40% подписки и 3 команды, чтобы поймать

Phantom-токены в Claude Code Max: -40% подписки и 3 команды, чтобы поймать

13 мая Anthropic поднял недельные лимиты Claude Code на 50% - подписчики обрадовались, лента твиттера наполнилась благодарностями. К 25 мая мой Max за $200 в месяц упёрся в недельный потолок ровно так же, как до этого. Объём работы не изменился. Я вайб-кодил столько же часов, что и в апреле, проекты в работе те же, размер CLAUDE.md тот же. Поставил ccusage, запустил daily --breakdown за прошедшую неделю и впервые увидел свою историю расхода токенов в Claude Code в нормальной разбивке.

Цифры не сошлись. На одинаковом payload между двумя серверами Anthropic отдавал разный счёт по cache_creation - и разница плыла не в мою сторону. Открыл issue #46917 на GitHub anthropics/claude-code. Там уже было документально подтверждено: версии Claude Code 2.1.100 и выше отправляют в среднем на 20 000 токенов больше cache_creation на каждом turn, чем 2.1.98 - при том, что байтов в payload меньше. Эту server-side инфляцию авторы issue окрестили phantom-токенами.

На проекте средней сложности это около 40% overhead на турн. На Max за $200 - около $40 эффективной стоимости в месяц, которую ты платишь, но не получаешь. Я разобрался, как это поймать без покупки чего-либо, написал workaround на 3 команды и сравнил phantom-токены с двумя другими ловушками 2026 года, которые часто путают.

Что показал ccusage за неделю на Max-плане

Встроенные /usage, /cost и /stats в Claude Code показывают одно и то же - сумму за сессию, прогресс-бары 5-часового и недельного окон. На повседневный мониторинг этого хватает: 30 секунд утром - посмотрел остаток, спланировал день. Но истории по дням, по моделям, по проектам и по типам токенов там нет. А именно эти разрезы дают понять, какая команда, какой файл и какая модель жгут больше всего.

Поэтому первый шаг - поставить ccusage. CLI на ~14.8K звёзд GitHub, читает локально ~/.claude/projects/*.jsonl и ничего не отправляет в облако. Одна команда:

npx ccusage@latest

После первого запуска показывает суммарную табличку. Дальше есть смысл сразу гнать с --breakdown:

ccusage daily --breakdown

Эта одна команда чаще всего открывает глаза. Половина расходов оказывается на Opus 4.7, хотя 70% задач по факту можно было сделать на Sonnet 4.6 за треть цены. Дальше пригождаются ещё четыре команды:

ccusage weekly # за неделю с разбивкой по дням ccusage monthly # за месяц ccusage session # за текущую сессию ccusage blocks # 5-часовые биллинг-окна

Команда blocks важна именно для Max-плана. Она показывает, сколько уже истратил в текущем 5-часовом окне, когда оно сбрасывается, и какая средняя нагрузка. Без неё ты не знаешь, безопасно ли запускать тяжёлый рефакторинг сейчас или лучше дождаться ресета.

Когда я прогнал ccusage weekly --breakdown за период с 18 по 25 мая, в глаза бросилась одна странность. cache_creation токенов за неделю было больше, чем я ожидал, грубо на 35-40%. Не cache_read (тёплый кеш, который дёшев), не output (мои ответы). Именно cache_creation - запись в кеш. Я перешёл по ссылке на issue #46917 и понял почему.

ccusage - это первый трекер, который надо поставить. У меня есть отдельный обзор по 4 другим трекерам токенов, которые показывают разные срезы: Как отслеживать расход токенов в Claude Code в 2026: 5 инструментов - там подробно про claude-monitor (live burn-rate + ML-прогноз), tokscale (Rust, ~8-10× быстрее ccusage, GitHub-style contribution graphs), плюс две альтернативы под более узкие сценарии. Тут речь идёт только про ccusage, потому что именно его данных хватает, чтобы увидеть конкретно phantom-токены.

Что такое phantom-токены: +20K cache_creation на каждый turn

В issue #46917 авторы вытащили цифры с тремя версиями Claude Code на одном и том же диалоге:

  • Версия 2.1.98: Content-Length 169 514 байт, cache_creation 49 726 токенов.
  • Версия 2.1.100: Content-Length 168 536 байт, cache_creation 69 922 токенов (+20 196).
  • Версия 2.1.101: Content-Length 171 903 байт, cache_creation ~72 000 токенов (+22 274).

Payload между 2.1.98 и 2.1.100 стал даже меньше на ~1 КБ. А cache_creation вырос на ~40%. Это server-side инфляция: сервер Anthropic, видимо, через User-Agent routing маршрутизирует запросы от 2.1.100+ на ветку с другим режимом подсчёта. Локально на клиенте ничего не менялось, история сообщений та же, контекст тот же. Сервер просто посчитал больше.

Это не баг прайсинга в смысле «по ошибке зачислили лишнее». Это реальная разница в том, как Anthropic фиксирует cache_creation токены для разных версий клиента. Issue открыли 11 мая, по состоянию на конец мая Anthropic подтвердил, что воспроизвели, но патч не выкатили. Источник: Awesome Agents (awesomeagents.ai/news/claude-code-phantom-tokens-billing-inflation/).

В деньгах это считается так. По прайсу Opus 4.7 cache_creation стоит $6.25 за миллион токенов (5-минутный кеш) и $12.50 (часовой). Каждый «лишний» 20K на турн = $0.125 за каждый турн. На сессии в 50 турнов в день это $6.25 ежедневно лишних только от phantom-токенов. За месяц активного использования получается $40-50.

При этом на Max за $200 ты их не «доплачиваешь сверху» - они съедают долю недельного и 5-часового лимитов. То есть твоё ощущение «лимиты стали тесными после 13 мая» - не паранойя. Лимиты подняли, но клиент с тех же пор расходует больше токенов на тот же объём работы. В сухом остатке часть прибавки выкупили обратно.

Workaround: откат версии 2.1.98 за 3 команды

Пока патча нет, единственный способ убрать phantom-токены - сидеть на 2.1.98 и не давать автообновлению затянуть свежее. Три команды:

# 1. Поставить конкретную версию. npx claude-code@2.1.98 # 2. Проверить, что версия именно та, а не «откатилось обратно через час». ls ~/.local/share/claude/versions/ # 3. Отключить автообновление в Claude Code. claude --update-policy never

Третья команда нужна потому, что Claude Code умеет тихо обновляться при следующем старте сессии - если ты на macOS и Homebrew, или если у тебя в обвязке npm-агент, который перетягивает @latest. Проверка через ls показывает все установленные версии в локальной папке - если там лежит 2.1.100 рядом с 2.1.98, значит обновление уже подтянулось, и придётся ещё раз npm-явно зафиксировать pin.

После отката стоит прогнать тот же ccusage daily --breakdown ещё через неделю и сравнить с предыдущим интервалом. У меня после возврата на 2.1.98 cache_creation на тех же типах задач упал на ~35% - это близко к цифре +40% overhead из issue #46917, разница из-за того, что не все мои сессии были тяжёлыми.

Важный нюанс: 2.1.98 не получает свежих фич, которые Anthropic выкатывает после 13 мая. Если для тебя критичны новые скиллы, новый Plan Mode или интеграции из 2.1.100+, ты возвращаешь себе функциональность - но платишь phantom-токенами до патча. Это компромисс: фичи или подписка с честным счётом.

Чем phantom-токены отличаются от tokenizer Opus 4.7 (две разные ловушки 2026)

В апреле-мае 2026 на vc.ru и в Telegram-сообществах обсуждали ещё одну инфляцию счёта - 35% overhead из-за нового токенизатора Opus 4.7. Их часто путают, потому что цифры близкие. Они разные и работают на разных уровнях.

Tokenizer Opus 4.7 - это локальная разница в подсчёте токенов на стороне модели. Anthropic поменял токенизатор для Opus 4.7, и тот же самый исходный текст теперь токенизируется в 1.0-1.35 раза больше токенов, чем в Opus 4.6. Цены за миллион токенов те же ($5 input, $25 output), но из-за того, что миллион токенов теперь «съедается» быстрее, фактический счёт растёт. На code-heavy промптах публичный анализ показывал до +45% относительно 4.6.

Phantom-токены 2.1.100 - это server-side инфляция cache_creation на стороне сервера Claude Code, не модели. Работает на любом клиенте, который шлёт User-Agent версии 2.1.100+, независимо от того, какая модель внутри запроса.

Как различить, что у тебя:

  • Если переключение между Opus 4.6 и Opus 4.7 на той же задаче меняет общий счёт - это tokenizer.
  • Если переключение клиента с 2.1.100 на 2.1.98 при той же модели меняет cache_creation - это phantom.
  • Если оба сразу - не повезло, обе ловушки складываются.

Лечатся они тоже по-разному. Tokenizer 4.7 - маршрутизацией моделей: Opus оставляешь на архитектуру и сложный анализ, реализацию отдаёшь Sonnet 4.6 или Haiku 4.5. Phantom-токены - откатом версии клиента. Один не отменяет другого.

Пайплайн ежедневной проверки: /usage → ccusage → отсечка

Один откат версии не делает дисциплину. Если ты на 2.1.98 без проверки, через 2 недели Claude Code тихо обновится через что-то ещё (например, корпоративный installer или Homebrew cask), и phantom-токены вернутся.

Поэтому имеет смысл встроить простой ритуал на 30 секунд каждое утро:

# 1. Текущее состояние - сумма за сессию и прогресс по лимитам. /usage # 2. История за вчера с разбивкой по моделям и типам токенов. ccusage daily --breakdown # 3. Если cache_creation подскочил >35% относительно среднего за неделю - # проверить версию. claude --version

Что искать в daily --breakdown. Колонка cache_creation должна составлять 30-50% от total на типовом дне разработки. Если она вдруг в районе 60-70% при том же объёме работы - вероятно, откатили обновление, и phantom-токены вернулись. Тогда снова npx claude-code@2.1.98 и проверка ls ~/.local/share/claude/versions/.

Сюда же стоит добавить раз в неделю проверку ccusage weekly --breakdown. Если за неделю Opus 4.7 съел больше 40% общего расхода - это сигнал переключить часть рутинных задач на Sonnet 4.6. Маршрутизация моделей на одной задаче работает не хуже маршрутизации между задачами: оркестратор-агент на Opus, конкретные субагенты (поиск, переименование, генерация типов) на Sonnet или Haiku.

И последнее. Не закрывай сессию ради экономии. Когда сессия открыта, Claude Code держит твой CLAUDE.md, прочитанные файлы и историю в тёплом кеше, и каждое следующее сообщение тянет их по цене 0.1× от base input. Свежая сессия начинается с full price, первый ход дороже в 10 раз. Антипаттерн «закрою и открою новую, чтобы освежить контекст» бьёт по кошельку сильнее, чем работа в одной сессии 4 часа подряд.

Что делать тем, кто работает с Claude через API напрямую

Phantom-токены 2.1.100 завязаны на клиента Claude Code. Если ты работаешь через API напрямую - через скрипты на anthropic SDK, через библиотеки вроде Claude Agent SDK или из своих ботов - тебя этот баг не касается, у тебя User-Agent другой, маршрутизации на ту же серверную ветку не происходит. Что не отменяет tokenizer Opus 4.7: его эффект работает на API так же, как на Claude Code, потому что считает сама модель.

Для API-юзеров ритуал другой. В каждом ответе Anthropic возвращает usage-объект с четырьмя счётчиками:

{ "usage": { "input_tokens": 248, "output_tokens": 503, "cache_creation_input_tokens": 5120, "cache_read_input_tokens": 1800 } }

Их множители к base input стоят запоминания:

  • input_tokens - 1.0×. Полная цена.
  • cache_creation_input_tokens (5 мин) - 1.25×. На 25% дороже.
  • cache_creation_input_tokens (1 час) - 2.0×. Вдвое дороже.
  • cache_read_input_tokens - 0.1×. В 10 раз дешевле.

Минимальная длина для кеширования - 4096 токенов для Opus и Haiku, 1024 для Sonnet 4.6. Если твои промпты короче порога, кеширование не сработает, и вся «экономия от кеша» уйдёт в ноль. Это типовая ошибка тех, кто пишет короткие чат-боты на API: ожидают cache_read 0.1×, а получают input 1.0× на каждом запросе, потому что промпт не дотягивает до 1024.

Console на platform.claude.com → Usage показывает те же четыре счётчика с фильтрами по модели, ключу, окну и экспортом в CSV. Раз в неделю прогнать историю за 7 дней и проверить, что cache_read составляет 50-70% от input - значит кеш работает. Если ниже 30% - где-то промпты короче порога, или кеш сбрасывается чаще, чем должен.

Anthropic знает с 13 мая. Что это значит для подписки

Issue #46917 открыт 11 мая 2026. К концу мая Anthropic в комментариях подтвердил, что воспроизвели и работают над фиксом. На момент написания этого материала патча нет.

Это первый случай за всю историю Claude Code, когда server-side изменение в логике подсчёта токенов уменьшает ценность активной подписки. Все предыдущие инциденты с лимитами (сжимание контекста, временное ужесточение rate limits) были видимыми: ты упирался в потолок и понимал, что упёрся. Phantom-токены не видны без трекера: формальные /usage цифры в Claude Code корректные, но недельный лимит съедается быстрее обещанного.

Что это значит для подписки на ближайший квартал:

  • Если ты на Max за $100/$200 и активно вайб-кодишь, имеет смысл держать pin на 2.1.98 до патча. Каждый месяц на 2.1.100+ - это $20-50 потерянной ценности подписки.
  • Если ты на Pro за $20 и расход маленький, разница в копейках, фичи 2.1.100+ важнее. Здесь patch ждать не критично.
  • Если для тебя важны интеграции и скиллы из 2.1.100+ - это компромисс между фичами и счётом, патч когда-то будет, но ждать его дисциплинированно с открытыми глазами.

Что я не стал бы делать. Не стал бы менять подписку Claude Code на API напрямую из-за phantom-токенов. Подписка Max за $200 даёт примерно столько же реальных токенов, сколько $2000 на API - это в 10 раз дешевле, чем чистый API. Phantom 40% overhead - это $80 потерь на Max-плане за $200, а аналогичный объём работы на API будет стоить $1500+. Уйти из-за phantom-токенов - то же самое, что отказаться от абонемента в спортзал из-за того, что они подняли цену на гостевой пропуск.

Что разумно. Откатить версию, встроить пайплайн /usage → ccusage → отсечка в ежедневный ритуал, и параллельно подтянуть остальную дисциплину - маршрутизация моделей, контроль cache_read, разумная длина CLAUDE.md. Эти базовые правила экономят больше, чем любой баг отдельно: Как не сжечь лимиты Claude Code за день: 8 правил экономии токенов в 2026 - там разобраны 8 рабочих дисциплин, на которые phantom-workaround ложится сверху.

Что в сухом остатке

  • Phantom-токены 2.1.100+ - это server-side инфляция cache_creation, которая съедает ~40% недельного лимита Max. Не tokenizer, не модель, не CLAUDE.md. Только версия клиента Claude Code.
  • Поймать без покупки чего-либо: npx ccusage@latest плюс одна команда daily --breakdown. Если cache_creation подозрительно высокий - проверить версию.
  • Лечить откатом на 2.1.98 и --update-policy never. После отката - повторный замер через неделю.
  • Не путать с tokenizer Opus 4.7: он лечится маршрутизацией моделей, не откатом клиента.
  • На API напрямую phantom-токенов нет - User-Agent другой.

Прогноз. Anthropic патч выкатит, но скорее всего тихо, без релиз-нот. Если ты сидишь на pin'е 2.1.98 - имеет смысл раз в 2-3 недели проверять, не появилось ли в issue #46917 пометки «fixed in X.Y.Z». До этого момента 2.1.98 - последняя версия Claude Code, которая считает токены так, как описано в прайсе.

Открытый вопрос. Ты уже сравнивал свой /usage с цифрами из issue #46917 - или просто платишь за то, что не сделал?

Начать дискуссию