Claude Code v2.1.301: retry wait cap, safer model downgrades#

Published by

Part of the Claude Code Version Tracker series. | Official Env Vars | Official Changelog

Claude Code v2.1.301 adds CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MS, which ends an unattended request instead of waiting when a usage limit resets too far in the future. Switching to a model with a smaller context window now summarizes an over-long conversation with the previous model first, and no longer spends credits on that summary without asking. It follows v2.1.300.[1]

A ceiling on how long unattended retries wait#

Unattended retry mode, turned on with CLAUDE_CODE_RETRY_WATCHDOG, keeps a request alive across rate-limit responses. The new CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MS bounds that for usage limits: when a 429 response's reset is farther out than the budget, the request ends with an api_request_usage_limit_wait_too_long error rather than sleeping until the reset.[1] It sits beside CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS, the overall retry-wait cap.

Downgrading to a smaller model, without surprises#

Four changes land on the path that switches models. A conversation too long for a model with a smaller context window is now summarized by the previous model before the switch, rather than failing.[1] That summary no longer spends usage credits without asking first.[1] Behind an LLM gateway whose responses name a different model than the one requested, conversations were being compacted over and over on a model you did not pick; that is fixed.[1] And the fable (and best) alias, which errored on the Anthropic API when your organization lacked the newest Fable model, now retries once on the previous Fable model.[1]

Auto-mode classifier decisions reach telemetry#

OpenTelemetry tool_decision events gained classifier_verdict and permission_mode, so an auto-mode classifier decision can be told apart from a permission rule.[1] A third field, classifier_category, names the built-in rule a classifier block matched; it is emitted when OTEL_LOG_TOOL_DETAILS=1.[1]

Editor and terminal fixes#

Vim mode gains the % motion to jump to the matching bracket, alone or with d/c/y.[1] In VS Code, Claude's responses now render LaTeX math, including $$ and multi-line \[ … \] blocks and inline $…$ and \(…\).[1] The Read tool no longer reads binary files such as .xlsm, .parquet, .epub and .heic as text. Grep and Glob, which reported no matches when the search program failed before returning results, now return an error saying the search failed.[1] A mod's Input gains a rows field for a multi-line terminal text box, where Enter submits and Shift+Enter (or a backslash before Enter) starts a new line.[1]

New Environment Variables#

VariableWhat It Does
CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MSBounds how long unattended retry mode (CLAUDE_CODE_RETRY_WATCHDOG) waits for a usage-limit reset. When a 429 response's reset is farther out than this budget, the request ends with an api_request_usage_limit_wait_too_long error instead of sleeping until the reset. It works alongside CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS, the overall retry-wait cap.
CLAUDE_CODE_ATTACHMENTS_IN_USER_DATAOff unless set. In remote sessions it governs reading session attachments from a user-data uploads root, behind a retention check that withholds the path when retention is governed or cannot be confirmed. Present in v2.1.301 but not named in that release's changelog.

Bounds on waiting, and safer model switches#

The two retry-watchdog caps now bound both the overall wait and the usage-limit wait for unattended runs. Past either budget a request ends with an explicit error rather than sleeping on until a reset that may never come within the window.

The model-downgrade path changed in three visible places: summarize with the previous model before moving to the smaller window, do not spend credits on that summary without asking, and stop re-compacting when a gateway reports a model other than the one requested. The fable/best alias falls back once to the previous Fable model when the newest is unavailable.[1]

Auto mode gains a telemetry trail. classifier_verdict, permission_mode, and classifier_category separate classifier blocks from permission-rule decisions in tool_decision events. Alongside them sits CLAUDE_CODE_ATTACHMENTS_IN_USER_DATA, wired in this release but absent from its changelog: off unless set, it routes remote-session attachment reads through a user-data root guarded by a retention check.

Sources#

  1. Claude Code Official Changelog, v2.1.301 release notes

This analysis is conducted for educational and research purposes under fair use principles. All trademarks and software referenced belong to their respective owners.


Previous Claude Code analysis: v2.1.300 (October 14, 2026)

All 73 Claude Code analyses: Claude Code Version Tracker · Official Claude Code changelog