Claude Code 2.1.301 не будет ждать далёкий сброс лимита

Режим автоповторов без присмотра нужен, чтобы агент пережидал временные сбои. Лимит использования бывает не таким уж временным: до сброса может оставаться столько, что ждать нет смысла, и в Claude Code 2.1.301 эти два случая наконец разделили.
Новую переменную CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MS описывает список изменений релиза на GitHub. Если в режиме CLAUDE_CODE_RETRY_WATCHDOG запрос упирается в лимит, а сброс слишком далеко, запрос завершается и не висит в ожидании. По данным трекера Claudeupdates, в релизе 51 изменение, так что ниже мы разбираем и остальное заметное.
Сторож автоповторов получил порог ожидания
У сторожа своя короткая история. Как говорится в issue к документации на GitHub, версия 2.1.186 ограничила CLAUDE_CODE_MAX_RETRIES пятнадцатью попытками, а в заметках к ней советовали для сессий без присмотра использовать CLAUDE_CODE_RETRY_WATCHDOG. В той же issue отмечено, что сам сторож в документации описан не был. Там же цитируется официальная страница ошибок: временные сбои (ошибки сервера, перегрузка, таймауты, временные 429, оборванные соединения) Claude Code повторяет до 10 раз с экспоненциальной паузой, и 10 стоит в CLAUDE_CODE_MAX_RETRIES по умолчанию.
Как устроены паузы, подробнее расписано в стороннем разборе Helmcode. По их описанию, базовая задержка 500 мс удваивается с каждой попыткой и упирается в потолок 5 минут, для ответов 429 берётся заголовок retry-after, если он есть, а счётчик попыток ведётся на каждый вызов API отдельно. Там же описан внутренний режим для долгих автоматических задач: бесконечные повторы, сигнал «я жив» раз в 30 секунд и жёсткий потолок в 6 часов. Разбор сторонний и мог устареть относительно сторожа и новой переменной.
Почему сброс может оказаться далеко, объясняет блог Ofox. По их данным, у подписки два независимых лимита: скользящее пятичасовое окно, которое начинается с первого сообщения, и недельный потолок на 7 дней, который можно выбрать целиком при почти пустой полоске сессии. Ofox отдельно пишет, что внутри сессии недельный лимит раньше срока не вернуть, и называет автоподтверждение и фоновые циклы частой причиной ночных скачков расхода. Там же различают стену «You've hit your usage limit» на Pro и Max и ошибку 429 на API-ключе: это разные отказы, и лечатся они по-разному.
Агент, который ночью упёрся в недельный лимит, дальше просто держал процесс открытым. Новая переменная задаёт в миллисекундах, сколько ожидания считать разумным.
Было → стало
- Сторож автоповторов у лимита: ждал сброса, каким бы далёким он ни был; стало: при слишком далёком сбросе запрос завершается по порогу из CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MS.
- События tool_decision в OpenTelemetry: решение классификатора авто-режима нельзя было отличить от сработавшего правила разрешений; стало: есть поля classifier_verdict и permission_mode, а при OTEL_LOG_TOOL_DETAILS=1 ещё и classifier_category с именем встроенного правила, на котором классификатор заблокировал вызов.
- Worktree, созданный хуком WorktreeCreate: выход из сессии удалял его без вопроса, даже если там могли лежать неотправленные коммиты; исправлено.
- Алиасы fable и best на Anthropic API: падали с ошибкой, если новейшая модель Fable недоступна организации; стало: Claude Code один раз повторяет запрос на предыдущей Fable.
- Переход на модель с меньшим окном контекста: мог потратить кредиты на пересказ силами прежней модели без спроса; стало: слишком длинный диалог сначала сжимает прежняя модель, а случай с тратой без вопроса исправлен.
- Grep и Glob: если программа поиска падала до первых результатов, они сообщали «совпадений нет»; стало: возвращают ошибку о сбое поиска.
- Полный диск: мешал обновить вход и выдавал сбивающее «Please run /login»; стало: ошибка называет диск и советует удалить файлы.
- Read: читал как текст двоичные .xlsm, .parquet, .epub и .heic; исправлено.
- Аргументы скиллов и команд: при очень многих или очень длинных именах вызов подвисал на секунды; стало: подставляются только первые 64 имени, каждое длиной до 64 символов.
- Vim-режим: перехода % не было; стало: он прыгает к парной скобке, сам по себе или вместе с d, c и y. Поле ответа AskUserQuestion получило NORMAL-режим, и Esc отменяет ответ только из него.
Пара исправлений касается тех, кто гоняет агентов через инфраструктуру. За LLM-шлюзом, который в ответах называет не ту модель, что запрошена, диалог сжимался раз за разом, причём на модели, которую вы не выбирали. Агенты рабочих процессов иногда пропускали свой шаг, прочитав служебную пометку о том, что текст задачи не несёт полномочий пользователя, и прогон всё равно рапортовал об успехе. Оба случая исправлены.
Для модов поменялась семантика: обработчик .catch у хука срабатывает только когда хук бросил исключение или вышел по таймауту, а $.env.set возвращает {} при успешной записи и { deny } с причиной, если запись не состоялась. В VS Code, десктопном и мобильном приложениях дерево над диалогом вопроса вмещает Markdown и до 48 строк, в терминале остаётся 12 простых строк. В панели VS Code появился рендер LaTeX, а у баннера лимита на Pro и Max в VS Code и JetBrains добавилась ссылка «Get more usage».
Телеметрия продолжает тему последних дней. 14 октября мы писали, что Claude API научился слать трейсы в систему мониторинга, и в 2.1.301 скилл claude-api получил инструкции по трейсингу OpenTelemetry, включая настройку точек назначения через CLI ant. Днём раньше версия 2.1.300 разделила в событии api_request запись кэша на пятиминутную и часовую.
Чего мы не знаем
Значение новой переменной по умолчанию в списке изменений не названо, как и то, что именно считается «слишком далёким» сбросом, если переменную не задать. Непонятно и другое: различает ли сторож пятичасовое окно и недельный потолок, или для него это один и тот же лимит с разным временем до сброса. Описан ли CLAUDE_CODE_RETRY_WATCHDOG в документации сейчас, мы по имеющимся материалам подтвердить не можем; issue указывала, что не был.
Порог стоило бы описывать вместе с самим режимом. Пока о нём известно меньше, чем о тех 64 символах на имя аргумента, а ведь от него зависит, будет ли ночной прогон стоять до утра.
Если у вас есть сессии с CLAUDE_CODE_RETRY_WATCHDOG, задайте порог явно, в миллисекундах, под длину вашего окна, и проверьте, как ваш планировщик реагирует на запрос, завершённый сторожем. Тем, кто разбирает tool_decision в своём коллекторе, стоит добавить classifier_verdict и permission_mode в схему до того, как события с ними начнут приходить.
Дальше
Проверяющие из METR сидят в Anthropic, а вето у неё нет
Шесть сотрудников METR работают внутри Anthropic с доступом почти как у её собственных команд по рискам. И запретить им публиковать выводы Anthropic не может. Вы бы пустили внешних проверяющих к своим внутренним системам или ограничились бы отчётами?
Читайте также
- Claude Code 2.1.300 считает запись кэша по сроку жизни
- Claude API научился слать трейсы в вашу систему мониторинга
- Claude Code 2.1.299 успевает сжать диалог до сгорания кэша
- Claude Code 2.1.296 даёт субагентам сжимать контекст раньше
- В Claude Code 2.1.295 упавший хук может блокировать действие
- Claude Code 2.1.292 ставит плагин вместе с маркетплейсом
Комментарии
Пока никто не написал. Будьте первым.
Присоединяйтесь к разговору
Войдите, чтобы оставить комментарий. Он появится после модерации.

