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.mdandCLAUDE.mdcontent 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.
SubagentStophooks 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-fileand--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_TELEMETRYset while VS Code’s telemetry setting is off, so they send no usage metrics or error reports and fetch no feature flags. claude purgenow 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. /mcpno 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#
- Cloud-provider teams: decide on
CLAUDE_CODE_MODEL_CATALOGbefore upgrading, and allow or blockdownloads.claude.aion purpose. - CI owners: upgrade a canary and check for runs that previously hung under the retry watchdog.
- Hook authors: re-check any
SubagentStophook for assumptions about frequency. - Anyone steering via
CLAUDE.mdmid-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.





