Claude Code каждые 30 секунд тратит токены на сводку для строки статуса

Сводки agent_summary для панели агентов съедали у команды Flamerix 16,4% расходов Claude Code, отключить их штатно нельзя.

Обложка: Claude Code каждые 30 секунд тратит токены на сводку для строки статуса

Claude Code примерно каждые 30 секунд отправляет весь транскрипт каждого работающего фонового агента в его же модель, обычно Opus, и просит описать последнее действие в 3–5 словах. Ответ показывается в строке статуса в панели агентов; по словам Anthropic, по этим сводкам за агентами следит и сам Claude Code. Команда Flamerix посчитала по телеметрии, что за неделю такие запросы дали 16,4% её расходов на Claude Code, больше, чем основной диалог.

Для разработчика это значит следующее: если вы запускаете фоновых субагентов в интерактивном режиме, часть лимита подписки или бюджета API уходит на служебный текст, которого нет в транскриптах сессий, на которые опираются утилиты подсчёта расхода. Чем длиннее контекст агента и чем больше агентов работает параллельно, тем выше эта доля. Штатной настройки, которая выключает только сводки, сейчас нет: по запросу на GitHub, открытому 15 августа, разработчики Claude Code ничего не ответили, а сотрудник Anthropic в обсуждении на Hacker News пообещал более дешёвый режим.

Ключевые выводы
  • Сводка agent_summary запрашивается примерно раз в 30 секунд для каждого активного фонового агента и отправляет модели его полный транскрипт; по умолчанию включена с версии 2.1.232 от 13 августа 2026 года.
  • У Flamerix за неделю сводки дали 16,4% оценочных расходов против 15,7% у основного диалога и 19,7% всех запросов к API; в issue другие пользователи насчитали от 15 до 26% разными метриками.
  • Anthropic называет иные цифры: около 2% стоимости и чуть меньше 4% запросов по всем пользователям с телеметрией за неделю, около 6% стоимости в терминале.
  • Опция SDK agentProgressSummaries: false ничего не выключает; сводки останавливают только CLAUDE_CODE_FORK_SUBAGENT=0 или CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1 вместе с соответствующими функциями.
  • Запросы сводок не пишутся в транскрипты сессий, поэтому утилиты, считающие расход по ним, их не видят; заметны они в экспорте OpenTelemetry и в отладочном логе.

Как устроены сводки agent_summary?

Когда основной агент Claude Code запускает субагента в фоне, в панели агентов рядом с ним появляется короткий статус вроде «правит тесты парсера». Этот текст пишет отдельный запрос с меткой agent_summary. Таймер срабатывает примерно раз в 30 секунд, клиент берёт весь текущий контекст агента, добавляет просьбу описать последнее действие в 3–5 словах и отправляет его той же модели, на которой работает агент.

Автор issue Рафаэль Круз (Rafael Cruz) привёл фрагмент бандла версии 2.1.233: запрос идёт как ответвление контекста, все инструменты запрещены, ход ровно один, запись в транскрипт отключена (skipTranscript: true). Сводка не возвращается в контекст агента, то есть на работу самого агента никак не влияет. Сотрудник команды Claude Code Эдвин Арбус (Edwin Arbus) подтвердил на Hacker News, что механизм описан верно, и уточнил, что вызовы получают только фоновые агенты, которые сейчас работают; простаивающие не получают. По его словам, сводки нужны и пользователю, и самому Claude Code, чтобы следить за работой фоновых агентов, не читая их транскрипты.

Дорого это из-за размера входа. Ответ занимает десятки токенов, а на входе каждый раз весь транскрипт. У Flamerix на один выходной токен приходилось около 9 000 входных. Около 98% таких вызовов читают транскрипт из кэша промптов, но, по данным авторов, оставшиеся 2% с холодным кэшем дают больше трети стоимости сводок. Сильвен Артуа (sylvain-artois) в том же issue посчитал, что агент с контекстом около 380 тыс. токенов на Opus 5 с окном 1 млн тратит на свою строку статуса около 45 млн токенов чтения из кэша в час.

По хронологии из разбора Flamerix, код сводок появился в версии 2.1.32 в феврале, в марте стал доступен как опция SDK, в апреле дошёл до интерактивного CLI за флагами, а с 2.1.232 от 13 августа включён по умолчанию для интерактивных фоновых агентов. В версии 2.1.300 от 14 октября интервал стал настраиваться с сервера, а в 2.1.310 от 23 октября появился выключенный пока режим short: вместо полного транскрипта около 2 тыс. токенов заметок, которые может обрабатывать модель поменьше.

Сколько на самом деле стоят сводки?

Цифры сильно расходятся, потому что их считают по-разному и на разной нагрузке. Flamerix взяла недельную выборку из экспорта OpenTelemetry своей системы DRIM и сгруппировала события claude_code.api_request по полю query_source. Сводки дали 16,4% расходов против 15,7% у основного диалога и 19,7% запросов, то есть каждый пятый; 96% этих расходов пришлись на Opus. Расход здесь — собственная оценка клиента (cost_usd), а не счёт: на подписке теряется запас лимитов. По данным авторов, доля сводок у них выросла с 3,5–7% в июле до 11,8% в неделю перехода на 2.1.233 и примерно до 16% к середине октября. За два дня после установки обходного скрипта она упала до нуля.

В issue свои замеры выложили ещё несколько человек. Круз за четырёхчасовую сессию с 27 субагентами насчитал 339 вызовов сводок из 1 496 запросов: 22,7% запросов, 22,2% токенов и 18,0% токенов, взвешенных по ценам Opus 5. Все вызовы вместе дали 21 966 выходных токенов, около 65 на вызов. Пользователь kcarriedo пишет, что в сессиях с 20 и более субагентами доля стабильно держится в диапазоне 15–22% взвешенных токенов. Артуа на версии 2.1.276 получил 26% токенов чтения из кэша за сессию в 1 час 45 минут с четырьмя субагентами при примерно 20 выходных токенах на вызов.

Claude Code каждые 30 секунд тратит токены на сводку для строки статуса_11
Замер одной сессии с 27 субагентами на версии 2.1.233. Скриншот: GitHub, issue #86879

На Hacker News, где ссылка на разбор набрала 538 очков и 216 комментариев, пользователь jakozaur проверил свои сессии и нашёл не больше 8%: сводки касаются субагентов, а запуски через workflows, по его наблюдению, не затронуты. Пользователь simon83 попросил Opus оценить скрытые вызовы по таймеру в собственных транскриптах: к видимым за неделю $1 970 в пересчёте на цены API скрытые сводки добавили около $380, то есть 16% от общей суммы около $2 350.

У Anthropic цифры ниже. Арбус написал, что за прошлую неделю по всем пользователям, отправляющим телеметрию, сводки составили около 2% стоимости по прейскуранту API и чуть меньше 4% запросов, а в терминале, где идут почти все такие вызовы, около 6% стоимости. Случай Flamerix он назвал нетипичным: по его словам, это похоже на команду, которая работает в основном фоновыми агентами.

Claude Code каждые 30 секунд тратит токены на сводку для строки статуса_14
Доля сводок agent_summary по разным замерам, в процентах. Метрики разные: оценка стоимости, взвешенные токены, доля чтений из кэша; это не одна шкала. Источник данных: issue #86879, gist Flamerix, комментарии на Hacker News; расчёт Tproger

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

Почему сводки нельзя просто отключить?

Flamerix и участники issue разобрали бандл и не нашли переключателя, который выключал бы только сводки. Документированная опция SDK agentProgressSummaries по умолчанию равна false, но в коде она лишь одно из условий через «или», так что false ничего не меняет. Недокументированная переменная CLAUDE_CODE_AGENT_PROGRESS_SUMMARIES сводки только включает. Интервал задаёт сервер отдельно для каждого семейства моделей в пределах 30–240 секунд, и значение по умолчанию уже минимальное. Переменная CLAUDE_CODE_ENABLE_NARRATION=0, которую нашёл один из участников issue, работала в версии 2.1.241 и из следующих сборок исчезла.

Остановить сводки можно двумя документированными переменными, но с потерями. CLAUDE_CODE_FORK_SUBAGENT=0 выключает режим форков, в котором Claude сам ответвляет копии текущего диалога. CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1 убирает фоновые запуски субагентов и команд целиком. В неинтерактивном режиме claude -p сводки фоновых агентов по умолчанию выключены, но, как ответили авторы скрипта в комментариях к gist, форки и скиллы с context: fork суммируются всегда, в том числе через SDK.

Отдельная проблема — видимость. Вызовы сводок помечены как не пишущиеся в транскрипт, поэтому в логах сессий на диске их нет, и утилиты вроде подсчёта расхода по JSONL-файлам их не учитывают. Об этом есть отдельный запрос. Раздел документации о фоновом расходе токенов упоминает только сводки прошлых диалогов для --resume и служебные команды вроде /usage и оценивает их «обычно меньше чем в $0,04 за сессию». А в описании Agent View сказано, что строки сессий там обновляет модель класса Haiku раз в несколько минут: к сводкам фоновых субагентов это не относится.

Что ответила Anthropic?

В самом issue за два с половиной месяца не появилось ни одного ответа сотрудников; у него метки enhancement и area:cost. Реакция пришла на Hacker News 29 октября. Арбус написал (перевод редакции): «Тем не менее мы согласны, что для строки статуса это много». По его словам, в версиях 2.1.311 и новее уже выкатили исправление для самого дорогого случая — сводок, которые промахиваются мимо кэша промптов, а сейчас команда работает над «гораздо более дешёвым режимом», который отправляет короткие заметки модели поменьше вместо полного транскрипта. Сроков он не назвал, а в публичном changelog версий 2.1.311 и 2.1.312 этого исправления нет. Отдельной настройки для отключения сводок Арбус не обещал.

Комментаторы спорили о цифре 2%: одни напомнили, что это среднее по всем пользователям, а у тех, кто много работает с субагентами, речь идёт о 15% и больше; другие видят здесь обычную ошибку, а не умысел, ведь на фиксированных тарифах лишние вызовы оплачивает сама Anthropic.

Что делать, если вы пользуетесь фоновыми агентами?

  1. Сначала измерьте. Подсчёт по транскриптам сводки не покажет. Включите экспорт OpenTelemetry (CLAUDE_CODE_ENABLE_TELEMETRY=1 и коллектор) и посмотрите долю запросов с источником agent_summary, как сделали Flamerix.
  2. Обновитесь до 2.1.311 или новее: по словам Anthropic, там исправлены сводки, промахивающиеся мимо кэша, а это, по данным Flamerix, больше трети их стоимости.
  3. Если форки вам не нужны, выключите их: участники issue сообщают, что CLAUDE_CODE_FORK_SUBAGENT=0 останавливает сводки. Это штатная переменная из документации, но вместе со сводками пропадает и режим форков.
  4. Долгие задачи без присмотра запускайте через claude -p: там сводки обычных фоновых агентов по умолчанию выключены. Субагентов с большим контекстом держите короче: стоимость каждого вызова пропорциональна текущему контексту агента.
  5. Поддержите issue #86879, если вам нужна отдельная настройка.
			{
  "env": {
    "CLAUDE_CODE_FORK_SUBAGENT": "0"
  }
}
		

Фрагмент для ~/.claude/settings.json; если в файле уже есть блок env, добавьте переменную в него. Чтобы вернуть форки, удалите строку.

Flamerix выложила и обходной путь: preload-скрипт для Bun примерно на 90 строк под лицензией MIT. Бинарник Claude Code он не меняет: подключается через переменную BUN_OPTIONS, оборачивает глобальный setTimeout и вместо таймера сводки, который узнаёт по строкам в исходном тексте функции, возвращает таймер, который никогда не срабатывает. Остальные таймеры проходят как есть. Авторы проверили его на Linux на шести версиях с 2.1.257 по 2.1.312: в контрольном прогоне на 2.1.312 было пять вызовов сводок без скрипта и ноль со скриптом. На macOS его работу подтвердил пользователь Hacker News, на Windows он не проверялся. Видимое следствие одно: статус агентов в панели перестаёт обновляться.

Скрипт неофициальный и вмешивается в работу клиента. Сами авторы предупреждают, что это может противоречить условиям сервиса, и снимают с себя ответственность, в том числе за действия с аккаунтом. Сопоставление идёт по тексту кода, поэтому любое обновление Claude Code может молча вернуть сводки. Участник issue JHVIW отдельно предупредил: команда установки из README скачивает последнюю версию файла, а он выполняется внутри каждого процесса Claude Code, так что ставить его вслепую не стоит.

По теме: в сентябре классификатор Auto Mode перевели на сервер без дополнительной платы, а в апреле Anthropic публиковала постмортем трёх багов Claude Code. Из сторонних способов экономить токены мы разбирали плагин Caveman.

Что смотреть дальше: появится ли в changelog обещанный дешёвый режим сводок, включат ли с сервера уже готовый режим short и запишутся ли вызовы сводок в логи сессий, о чём просят в issue #104358. Для приложения Claude Desktop данных нет: один из комментаторов gist нашёл ту же функцию в его коде, но вызовы не проверял.

Источники: Flamerix: разбор agent_summary и preload-скрипт, GitHub: issue #86879 в anthropics/claude-code, Hacker News: обсуждение и ответ Эдвина Арбуса, Документация Claude Code: расходы и фоновое использование токенов, Документация Claude Code: мониторинг через OpenTelemetry, GitHub: issue #104358

Изображение на обложке: Tproger по данным Flamerix