↓ Skip to main content
  1. Articles/

Claude Code v2.1.311: A Signed Model Catalog, Ultrathink at xhigh, and 56 Fixes

·1242 words·6 mins·
Florent Clairambault
Author
Florent Clairambault
CTO & software engineer — writing daily about spec-driven development and agentic coding

v2.1.310 was a day-after patch. v2.1.311, dated October 26, is a bigger one: 16 improvements, 56 fixes, and a handful of changes that alter defaults. Everything below comes from the official changelog. I have not run this version, so the behavior claims are the changelog’s, not mine.

The change to read twice: a signed model catalog
#

The line: “Changed Claude Code on Bedrock, Mantle, Vertex, and Foundry to load model settings from a signed file on downloads.claude.ai; set CLAUDE_CODE_MODEL_CATALOG=off to turn this off.”

Until now, model names and capabilities on third-party clouds lived inside the client binary. A new model or a changed context window meant a new release. Loading that metadata from a signed remote file decouples the two, which is convenient: Anthropic can update what Claude Code knows about a model without waiting for you to upgrade.

Two things follow for enterprise teams:

  • Egress. Locked-down environments that allow only Bedrock or Vertex endpoints now have a new host in the picture, downloads.claude.ai. If your firewall blocks it, you will either fall back to built-in settings or hit odd behavior. The changelog does not say which, so test it.
  • Trust. “Signed” is the right word to see here, because a remotely fetched file that configures model behavior is a supply-chain surface. I have not verified the signing scheme and the changelog does not describe it. If you have a change-control process, the off switch exists for a reason: pin it off, then opt in deliberately.

ultrathink now means xhigh
#

ultrathink in the interactive terminal now runs its turn at xhigh effort on Opus 5.5, Sonnet 5.5, Haiku 5.5 and Fable 5.1 through Anthropic’s API. Typed while Claude is already working, it raises the rest of that turn. The rainbow highlight now appears only where the keyword can actually raise effort, not when the word is quoted or sits in a file path.

This is a small honesty fix. A magic word that sometimes did nothing, and looked the same either way, is worse than no magic word. A visible signal that says “this will change effort” is the right design. Note the scope: terminal, Anthropic API. On other providers, do not assume the same behavior.

Related: /code-review now tells Claude to put the effort level first and to use max only when asked. That matches the cost guidance for the max tier: it should be an explicit choice, not a default.

Compaction gets less brittle
#

Several fixes target long sessions, which is where agentic work lives:

  • Standard-context sessions no longer stop with “Usage credits required for 1M context” when a request goes past 200K tokens. Claude Code now compacts and continues.
  • When the model’s compaction reply contains no summary, Claude Code usually asks once more before replacing the conversation. Replacing your history with an empty summary is a nasty failure, so this retry matters.
  • Claude no longer sees stale MEMORY.md and CLAUDE.md content right after automatic compaction when those files were edited earlier in the session.
  • DISABLE_COMPACT, in settings files and in a mod’s $.env.set, can now only turn compaction off, not back on. Agent teammates and the rewind menu also stop offering summarization when it is set.

The stale-memory fix is the one I’d care about. If your workflow edits CLAUDE.md mid-session to steer the agent, the instructions should survive compaction. Before this fix, the post-compaction agent could be working from the old version.

Subagents and background work
#

  • A subagent’s isolated worktree was being removed while a background subagent it started was still working in it. Fixed.
  • Subagents could not use MCP tools from servers that finish connecting after the subagent starts. Fixed.
  • SubagentStop hooks ran about twice a minute per running subagent instead of once at the end. If you wired a notification or audit log to that hook, your logs were noisy and any non-idempotent action ran repeatedly.
  • Background agents in auto mode waiting on their own shells started a new main-conversation turn on every wake. Fixed, and a cost leak by the look of it.
  • A finished /code-review, or any skill that runs in a sub-agent, no longer reruns when a cloud or background session restarts.
  • The self-hosted runner gets --hold-idle-file and --max-hold-min, to keep an idle session alive while your host reports processes it left running. A session also now starts without a read-only repository blocked by a 429 rather than failing.

The worktree-deletion bug is the serious one. Parallel agents in isolated worktrees are central to unattended workflows, and removing a directory under a live process is exactly the kind of failure that produces confusing half-written state. If you have seen unexplained missing files in background subagent runs, this may be why.

Unattended retries and sandboxing
#

The fix I’d flag for CI users: Claude Code retried requests the API marked as not retryable, which could hold a turn for minutes or, with CLAUDE_CODE_RETRY_WATCHDOG in unattended retry mode, indefinitely. An agent that hangs silently in a pipeline costs money and blocks the queue. Shell commands that hit their timeout now also return the output so far and say the command is still running in the background, rather than looking dead.

On Linux, sandboxed Bash commands failed with bwrap: Can't create file when a --plugin-dir folder was also an added directory and permissions.blockReadsOutsideWorkingDirectories was on. A sandbox that errors out on a legitimate config tempts people to switch it off, so fixing that matters.

JSON output also changed: --output-format json and stream-json now write DEL, C1 control and Unicode format characters inside strings as \uXXXX escapes. Parsed values are unchanged, but if you grep raw logs for those characters, your patterns will stop matching. It is also a sensible hardening against terminal-escape tricks in logged model output.

Smaller items worth knowing
#

  • VS Code sessions start with DISABLE_TELEMETRY set while VS Code’s telemetry setting is off, so they send no usage metrics or error reports and fetch no feature flags.
  • claude purge now says it deletes data only on this computer, not anything stored by Anthropic. Honest wording, and worth reading if you are answering a data-retention question.
  • The Slack connector checks a channel’s topic for posting rules before messaging a channel you didn’t name.
  • Startup is faster for Pro and Max accounts and for launches with only options, such as claude --model opus.
  • /mcp no longer shows “authenticated” for a remote server that Claude Code sends no credentials to. A status display that lies about auth is a small security bug, and it’s fixed.

What to do with this
#

  1. Cloud-provider teams: decide on CLAUDE_CODE_MODEL_CATALOG before upgrading, and allow or block downloads.claude.ai on purpose.
  2. CI owners: upgrade a canary and check for runs that previously hung under the retry watchdog.
  3. Hook authors: re-check any SubagentStop hook for assumptions about frequency.
  4. Anyone steering via CLAUDE.md mid-session: this release is the one where that is more trustworthy across compaction.

The bigger picture
#

This is a release about the unglamorous middle of agentic work: compaction, retries, worktrees, hooks. None of it makes a good launch video. All of it decides whether an agent you leave alone for an hour is still doing the right thing when you return. The model catalog change is the one real policy shift, and it deserves a deliberate decision, not a default. Read the changelog like an advisory feed, and keep disposable worktrees and git history as your backstop.

Sources
#

AI Tools

Claude Code v2.1.129: Bedrock Tiers, Smarter MCP, and a Gateway Reversal

Claude Code v2.1.129 shipped quietly on May 6. For most users it’s invisible. For Bedrock enterprise shops, MCP server operators, and anyone using third-party model gateways, it changes real behavior — and one change is a deliberate reversal of v2.1.126.

May 15, 2026 · 6 min read

AI Tools

Claude Code v2.1.310: The Day-After Patch Fixes Gateways, Symlink Prompts and a Windows Hook Hole

Claude Code v2.1.310 follows the v2.1.309 hardening release one day later with gateway retry fixes, symlink targets in read prompts, a Windows hook fail-open fix, and custom Enterprise roles for cloud sessions. Changelog-only analysis; not run.

Oct 24, 2026 · 5 min read

Guides

Claude Code v2.1.301–302: Unattended Retries, a Pickable Auto Mode Classifier, and Fork Subagents Everywhere

Claude Code v2.1.301 (Oct 15) and v2.1.302 (Oct 16) cap how long unattended retries wait on a usage limit, let you choose the client-side auto mode classifier’s model, turn fork subagents on by default outside the terminal, and limit concurrent prompt/agent hooks to 12 per event.

Oct 17, 2026 · 5 min read

Guides

Claude Code Subagent Cost Controls: autoCompactWindow, Workflow Model Pinning, and Cache-Write Telemetry

Claude Code v2.1.296 lets a subagent auto-compact earlier than the main session and pins every workflow agent to one model; v2.1.300 splits OpenTelemetry cache writes into 5-minute and 1-hour buckets. Together they are the first real cost-control surface for multi-agent runs. Based on the changelog only; I have not tested these.

Oct 15, 2026 · 4 min read

AI Tools

Claude Code's AGENTS.md Support Is a Local Feature Gated Behind a Remote Switch

Claude Code v2.1.277 added AGENTS.md as a fallback when CLAUDE.md is missing — but the loader is gated behind a remote Statsig flag that silently no-ops if telemetry is disabled or the flag can’t be fetched, with zero warning. Still open as of v2.1.281 (Sept 23).

Sep 24, 2026 · 4 min read