Перейти к содержанию

Claude Code

Claude Code 2.1.304 предупредит о лимите при возврате к чату

7 мин чтения

Наш ИИ-аналитик сам проверил эту историю: запускал, считал, сверял с оригиналами. Что мы проверили

Текст написан ИИ-моделью по источникам, на которые ведут ссылки, и сверен с ними второй моделью. Как мы работаем

Claude Code 2.1.304 вышел 19 октября. В нём появилось предупреждение для подписчиков Pro и Max: если возврат к давно брошенному диалогу заберёт заметную часть пятичасового лимита, вы узнаете об этом до продолжения. Мы разобрали бинарник этой версии и нашли конкретный порог: по умолчанию окно появляется, когда продолжение обойдётся в 5% лимита или больше, и в нём показан расчётный процент.

В релизных заметках Anthropic на GitHub 76 пунктов. Кроме предупреждения, там исправлен claude --worktree, из-за которого могли пропасть коммиты, у Code Review появились уровни проверки, и много изменений для авторов модов и для тех, кто работает с Claude через свой шлюз.

Сколько стоит вернуться к диалогу

Окно называется «Resume this conversation?», и вариантов в нём два: всё равно продолжить или начать новый диалог. Если в новом диалоге сослаться на старый, Claude сам его найдёт. Судя по строкам в коде, окно сообщает, сколько диалог простаивал, сколько в нём токенов и примерно какую долю пятичасового лимита съест продолжение. Если доля доходит до 100%, вместо числа там написано «all».

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

Похожую проблему исправили в /loop. Пробуждения, которые цикл сам назначал на максимальную задержку в один час, срабатывали сразу после истечения часового кэша и перечитывали диалог без кэша. После исправления такие пробуждения в кэш укладываются.

Ещё несколько правок касаются длинного контекста. После сжатия диалога (compaction) Claude снова получает список скиллов, а /reload-skills отправляет только новые или изменённые. Возобновлённые и облачные сессии перестали заново слать весь список скиллов при каждой перезагрузке плагинов на старте. В сводке сжатия, которую видно в режиме транскрипта по Ctrl+O, теперь есть имена инструментов, вызванных раньше. В SDK и headless первый запрос после возобновления большой сжатой сессии уходит быстрее, а в auto mode файл сессии стал меньше: контекст классификатора безопасности не хранится при каждом запросе.

Worktree и другие опасные места

Самое неприятное из исправленного касается claude --worktree. При выходе он удалял worktree вместе с веткой без вопроса, если HEAD был отсоединён или стоял на другой ветке. Незапушенные коммиты в такой ветке могли пропасть.

Рядом стоят ещё несколько исправлений из той же категории:

  • rm -r для подключённого диска или папки верхнего уровня (/Volumes, /media, /mnt/c в WSL) не получал того запроса подтверждения, который получает rm -rf /Applications;
  • CLAUDE_CODE_TRANSCRIPT_LOCAL_GC терял сообщения из сохранённого транскрипта, если диск заполнялся во время обрезки файла;
  • плагин мог продлевать headless-запуск после --max-turns, Stop или конца ввода, порождая субагентов или перезапуская уже завершённого;
  • в agent teams одобрение запроса на остановку из основной сессии закрывало весь CLI;
  • Bash и PowerShell удаляли файл с выводом большой команды, если его не удавалось скопировать в папку результатов инструментов сессии (кроме случая с полным диском);
  • причину отказа из хука PreToolUse подменяла ошибка таймаута, если на том же вызове инструмента истекал callback-хук Agent SDK.

Субагенты иногда забывали последнюю работу, если им писали или их возобновляли сразу после завершения. Отдельно ускорили работу с большим числом одновременно запущенных субагентов.

Через собственный шлюз

За кастомным ANTHROPIC_BASE_URL поиск инструментов (tool search) теперь включён по умолчанию. Если шлюз отвечает 400 или 422, Claude Code повторяет запрос без него. По нашей проверке кода, отказ при этом запоминается для пары «адрес плюс модель», и tool search остаётся выключенным там на сутки. На ответы с billing_error повтор не распространяется.

Похожий обход появился для ошибки context_management: Extra inputs are not permitted: получив её от шлюза, Claude Code отправляет запрос заново без этого поля. Команда /auto-mode-setup по шагам настраивает auto mode под ваше окружение: читает проект и недавние сессии. Теперь она работает и на Bedrock, Vertex, Foundry, через шлюз Claude apps и в сессиях с выключенной телеметрией. Для того же набора окружений в VS Code заработала отрисовка модов в панели чата.

Ещё две правки касаются окружений без телеметрии и корпоративных настроек. Remote Control не запускался из Claude Desktop на платном плане, если задан DISABLE_TELEMETRY или DO_NOT_TRACK. Настройки OpenTelemetry, приходившие через управляемые с сервера настройки, игнорировались до конца сессии, если вход был выполнен во время первой настройки или первого запуска после /logout.

Что изменилось для модов

В ответ мода на tool.check добавили decider: "person". С ним одобрить запрос может только окно разрешений или callback хоста, а там, где спросить некого, вызов отклоняется с причиной, которую указал мод. В событии появилось поле e.isReadOnly, оно выставляется для вызовов, которые ничего не меняют.

Хуки settings.read теперь получают каждый слой настроек по отдельности и переписывают итоговые. Управляемый мод может сделать настройку организации потолком, в том числе cleanupPeriodDays, по которой работает очистка старых данных. Если плагин, который запускается первым, пропускает хук вашего мода, в транскрипте появляется строка с названием события и плагина.

Для хуков скиллов ввели лимит: скиллы одного источника (репозитория, вашей папки или плагина) за сессию регистрируют не больше 1 024 хуков и 16 384 символов матчеров. В коде мы нашли две детали, о которых в заметках не сказано. Символы матчера считаются столько раз, к скольким хукам он относится. Скилл, который превысил бы любую из границ, не регистрирует ни одного своего хука и не получает инструментов, и об этом выводится предупреждение. Длина отдельного матчера ограничена 2 048 символами.

Неудачная перезагрузка мода больше не удаляет инструменты и команды версии, которая остаётся загруженной. Из claude plugin validate убрали заметки, предсказывавшие, где будут работать хуки мода. Для Managed Agents появилась команда /claude-api managed-agents-secure: она сравнивает настройки агента с опубликованным руководством Anthropic по безопасности и ничего не меняет.

Code Review по уровням

Владельцы организации выбирают для Code Review один из трёх уровней: Quick, Standard (по умолчанию) или Deep. Отдельным репозиториям можно задать свой уровень. В админских настройках появилась опция проверять все репозитории GitHub-организации, включая добавленные позже, без выбора по одному. Пул-реквесты, открытые в первую минуту-две после включения Code Review, молча пропускались, теперь их повторно берут в работу. А из заголовка окна /fast на Opus 5.5 убрали пометку «(research preview)».

Авторский разбор

Что мы проверили

20 октября мы скачали из npm @anthropic-ai/claude-code 2.1.304 с бинарником для linux-x64, нашли в нём код окна предупреждения и соседних функций и прогнали парсер CLAUDE_CODE_AUTO_COMPACT_WINDOW, извлечённый из бинарника, на тестовых значениях.

Как мы проверяем истории

В заметках сказано только о «заметной доле» лимита. В коде это 5% по умолчанию, и сервер может задать другой порог. Окно появляется только тогда, когда кэш уже остыл. Цены моделей в кредитах и пятичасовые бюджеты тарифов приходят из удалённого конфига, поэтому по одному коду нельзя сказать, при каком числе токенов сработает предупреждение.

  • Доля считается так: размер контекста, урезанный до окна модели, умножается на цену модели в кредитах за миллион токенов и делится на пятичасовой бюджет тарифа.
  • Кэш считается остывшим, если с последнего запроса прошёл его срок жизни: час для основного диалога, пять минут в остальных случаях или срок, записанный для последнего запроса. Если после последнего сообщения сменилась модель, это условие не проверяется.
  • Окно не показывается, если аккаунт уже упёрся в лимит или работает в овердрафте, если кэширование промптов для модели выключено и если вы уже один раз закрыли предупреждение.
  • Есть вариант того же окна, который срабатывает по простою, он стоит за отдельным флагом. Это мы видели только в коде и не замеряли.
  • Подсказка о завершении текущего шага у лимита включается при 95% использования пятичасового лимита, на Max 5x при 99%, на Max 20x при 99,75%. Если разрешён овердрафт, она не включается. Мы нашли её в 2.1.304, с 2.1.303 не сравнивали.

Какие настройки поправить

Узнать установленную версию можно командой claude --version. Если шлюз отклонил tool search и вы не хотите ждать сутки, ENABLE_TOOL_SEARCH=true заставляет отправлять его всегда и отключает механизм восстановления. ENABLE_TOOL_SEARCH=false сразу пропускает запрос, который шлюз отклонил бы.

Раньше CLAUDE_CODE_AUTO_COMPACT_WINDOW=200k молча выставлял окно в 100K. Теперь переменная понимает суффиксы k и M, как флаг --autocompact, и предупреждает о значениях вне диапазона. Допустимы значения от 100k до 1M, а 2M обрезается до 1M. Но голое число в переменной считается в токенах, в отличие от флага. Мы прогнали парсер: --autocompact 200 даёт 200k, а CLAUDE_CODE_AUTO_COMPACT_WINDOW=200 читается как 200 токенов, поднимается до минимума в 100k и вызывает предупреждение. Поэтому в переменной надо писать 200k или 200000.

Пока никто не написал. Будьте первым.

Присоединяйтесь к разговору

Войдите, чтобы оставить комментарий. Он появится после модерации.