What's New in Claude Code: November 2026 (v2.1.308–2.1.318)
Claude Code v2.1.308–2.1.318 (Oct 22–Nov 3, 2026): sandbox and permission fixes, ultrathink at xhigh, subagent effort, claude -p exit codes, and what to do.
Between October 22 and November 3, 2026, Claude Code went from v2.1.308 to v2.1.318: nine versions with changelog sections (v2.1.313 and v2.1.315 have none) and 582 entries. Most are fixes: 378, alongside 78 improvements, 67 changes, 50 additions, 5 updates, 2 removals, 1 deprecation and v2.1.308’s one-line “Bug fixes and reliability improvements”. The changes that matter cluster in five places: sandbox and permission checks, effort controls for ultrathink and subagents, model handling (including the end of fast mode on Opus 4.8), exit codes and sign-in warnings for claude -p, and spend and policy controls in the Claude apps gateway.
This roundup groups them by theme, most consequential first. Every claim comes from the official CHANGELOG, and each version links to our release note. It continues the August–October roundup (v2.1.227 to v2.1.305); v2.1.306 and v2.1.307, both from October 21, fall between the two.
If you use fast mode on Opus 4.8, read Opus 4.8 Fast Mode Removal first: it ends on November 30, 2026.
The Short Version
| Version | Date | Entries | Headline |
|---|---|---|---|
| v2.1.308 | 2026-10-22 | 1 | ”Bug fixes and reliability improvements” |
| v2.1.309 | 2026-10-22 | 79 | Sandbox and permission-check fixes; claude ultrareview requires workspace trust |
| v2.1.310 | 2026-10-23 | 26 | Monitor tool on Bedrock, Vertex and Foundry; cloud session and Remote Control permissions in Enterprise custom roles |
| v2.1.311 | 2026-10-26 | 92 | ultrathink runs its turn at xhigh; signed model catalog on Bedrock, Mantle, Vertex and Foundry |
| v2.1.312 | 2026-10-27 | 39 | Shorter system prompt for unrecognized model names; oidc.user_id_claim; claude_code.safety_event no longer sent |
| v2.1.314 | 2026-10-30 | 119 | permissions.blockWritesOutsideWorkingDirectories; claude -p exits 1 when startup fails; gateway upstream groups |
| v2.1.316 | 2026-10-31 | 55 | Opus 4.8 fast mode deprecated; CLAUDE_CODE_SUBAGENT_EFFORT and CLAUDE_CODE_DISABLE_ULTRATHINK; pooled budgets and layered policy |
| v2.1.317 | 2026-11-02 | 87 | A check before tools send your account email; gateway cost report; Read’s unchanged-file stub removed |
| v2.1.318 | 2026-11-03 | 84 | Sign-in expiry in claude auth status and claude -p; assume_role on mantle upstreams; the 2.1.288 thinking fix removed |
1. Sandbox and Permission Hardening
v2.1.309 opened the period with sandbox and permission-check fixes. Before it:
- Sandboxed Bash commands on macOS and Linux ran the shell’s startup files outside the sandbox before each command.
- Sandboxed commands and auto-accepted edits could modify the MCP config file passed with
--mcp-config. - An
Edit(path)deny rule didn’t block a Bash redirect to that path in some commands that also held a subshell, and worktree-isolated sessions accepted some locale-prefixed and (on zsh) arithmetic commands that the isolation guard should refuse. - macOS
denyWriteglobs missed a path’s real location when the pattern’s folder was reached through a symlink, Linux write denies lifted when a background command outlived the session, and on Windows someSet-Locationorcdcommands that target the current directory with extra arguments were auto-approved.
Later releases went further:
- v2.1.314: “Added
permissions.blockWritesOutsideWorkingDirectories: Write, Edit and NotebookEdit refuse paths outside the working directories in every permission mode”. It also fixed sandbox protections not applying to a worktree entered byclaude -p --resumeor--continue, and a settings file excluded with--setting-sourcesstill supplying some settings, such as auto mode rules. - v2.1.316:
--restrictedsessions no longer upload files from outside the working directories when a Read allow rule covers them. - v2.1.317: “Added a check that asks before a web or shell tool call sends your account email address to the network”. Agent SDK hook callbacks gained
onFailure: "block", so a failing callback blocks the action. - v2.1.318: keys typed just after sending a message, or before a slow prompt appeared, no longer answer permission prompts, and
deniedMcpServersURL entries reach further (see the admin checklist below).
{
"permissions": {
"blockWritesOutsideWorkingDirectories": true
}
}
What to do: update to v2.1.318. To confine file edits to your project in every permission mode, turn on blockWritesOutsideWorkingDirectories; the entry names Write, Edit and NotebookEdit, so keep the sandbox on for shell commands. Session 18: Permission Models & Security covers the rule system.
2. Effort: ultrathink, Subagents and Caps
- v2.1.311: “Changed
ultrathinkin the interactive terminal to run 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 working, it raises the rest of that turn”. VS Code followed in v2.1.316. - v2.1.316:
CLAUDE_CODE_DISABLE_ULTRATHINK“turns theultrathinkkeyword off”, andCLAUDE_CODE_SUBAGENT_EFFORTsets “the effort level subagents run at when nothing else names one, instead of inheriting the session’s”. - v2.1.317: “Changed subagents and teammates on a different model from the main conversation to use that model’s saved effort level or its default, instead of the session’s effort level”.
- v2.1.318: a mod’s
$.model.forktakes aneffortoption, “so a quick side job can run atlowwhatever effort the session uses”. - Since v2.1.314, when an admin caps a model’s effort, Claude Code lowers the effort, retries and says which level it uses, instead of failing every turn with “Invalid effort level”.
export CLAUDE_CODE_SUBAGENT_EFFORT=low # subagents with no level named elsewhere
export CLAUDE_CODE_DISABLE_ULTRATHINK=1 # turns the ultrathink keyword off
What to do: ultrathink typed in the terminal or VS Code now runs that turn at xhigh on the newest models through Anthropic’s API; set CLAUDE_CODE_DISABLE_ULTRATHINK where that is unwanted, and on other providers set the effort level directly. Subagents pinned to another model no longer inherit your session’s level, and the changelog doesn’t say how that rule and CLAUDE_CODE_SUBAGENT_EFFORT combine, so where it matters, set effort: in the subagent’s frontmatter. See our ultracode and effort guide.
3. Models and Fast Mode
- v2.1.316: “Deprecated fast mode for Opus 4.8 as of October 30, 2026; it will be removed on November 30, 2026. After removal, fast mode requests on Opus 4.8 return an error and do not fall back to standard Opus 4.8. Migrate to Opus 5.5 to keep the speedup”. The Claude Platform release notes posted the same deprecation on October 30 for API requests to
claude-opus-4-8withspeed: "fast"; our removal guide walks through the move. - v2.1.311: on Bedrock, Mantle, Vertex and Foundry, Claude Code loads model settings from a signed file on downloads.claude.ai;
CLAUDE_CODE_MODEL_CATALOG=offturns this off. - v2.1.312: on the same providers, model names Claude Code doesn’t recognize, “such as custom deployment names and inference profile ARNs”, get the shorter system prompt even when they front Sonnet or Haiku;
CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT=0keeps the full one. - v2.1.314: dotted model IDs behind an LLM gateway, such as
claude-opus-4.8, no longer get an older model’s context window, output limit, effort, thinking mode and cost. Foundry (v2.1.314) and thesonnet,opusandhaikualiases on Vertex AI and Bedrock (v2.1.316) now fall back to an older model of the family instead of failing when the default or newest model isn’t available. - v2.1.310: the Monitor tool and plugin monitors now work on Bedrock, Vertex and Foundry, and with telemetry or nonessential traffic off; long foreground sleeps are blocked there too.
export CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT=0 # full system prompt for custom deployment names
export CLAUDE_CODE_MODEL_CATALOG=off # don't load the signed model catalog
What to do: move fast mode work off Opus 4.8 before November 30. With custom deployment names, decide whether you want the shorter prompt, and run /model <id> once: since v2.1.316 it warns when this version doesn’t recognize the model and auto-compact will assume a 200K context window.
4. Headless and CI: Exit Codes, Sign-in Expiry and Trust
- v2.1.314:
claude -pused to exit 0 with no output when startup failed; “it now prints the error and exits 1”. - v2.1.317: when a full disk or quota lost its transcript or
~/.claude.jsonwrites,claude -pexited 0; it now prints an error and, in text and json output, exits 1 (“Full NFS exports may be missed”). - v2.1.318: the date a stored claude.ai sign-in ends appears in
claude auth status(loginExpiresAt) and inclaude -pJSON results (credential_expires_at). Text output gets a one-line stderr warning starting 10 days before; at expiry, the error says so and, inclaude -p, namesclaude auth loginandclaude setup-token. - v2.1.309:
claude ultrareviewrequires workspace trust. It “asks on a terminal, else refuses; scripts pass--trust-workspace, which takes no value (put a PR number or base branch before it), or setCLAUDE_CODE_DISABLE_ULTRAREVIEW_TRUST_CHECK=1”. Since v2.1.314, withCIset, it andclaude remote-controlrefuse an untrusted folder at once. - v2.1.318 also stopped
claude -pand SDK sessions reporting success when an API error cut off a reply while a mod hookedturn.step.
claude auth status # includes loginExpiresAt
claude -p "Run the unit tests" --output-format json # result includes credential_expires_at
claude ultrareview 1234 --trust-workspace # no value; the PR number goes first
What to do: fail the job on any non-zero exit from claude -p; v2.1.314 and v2.1.317 turned two failures that used to exit 0 into exit code 1. Alert on credential_expires_at or the stderr warning, and add --trust-workspace to scripted claude ultrareview calls.
5. Reversed, Removed and Changed Behavior
Three entries undo earlier ones; the changelog gives no reason for any of them.
| Change | Version | Check it if |
|---|---|---|
claude_code.safety_event, the OpenTelemetry event v2.1.307 added, is no longer sent | v2.1.312 | A dashboard or alert reads it |
| The Read tool’s “file unchanged since your last Read” stub is removed; reading an unchanged file again returns its content | v2.1.317 | Hooks or prompts expect the stub |
| The 2.1.288 fix that kept the model’s earlier thinking when resuming a conversation started on 2.1.286 or earlier is removed; that thinking can now be dropped | v2.1.318 | You resume very old conversations |
Other changes scripts may depend on:
| Change | Version |
|---|---|
sed -i gets the standard Bash prompt and runs as written; like other Bash edits, /rewind no longer restores it | v2.1.309 |
DISABLE_COMPACT in settings files and a mod’s $.env.set can only turn compaction off, not back on | v2.1.311 |
Prompt and agent hooks run at most 24 at a time per session, plus up to 12 that have waited past their event’s timeout; a timeout under 1 second counts as 1 second | v2.1.312 |
FORCE_HYPERLINK=false (also no and off) turns hyperlinks off instead of on | v2.1.314 |
claude -p inside a cloud or self-hosted runner session no longer shares that session’s ID; on a runner, CLAUDE_CODE_DISABLE_NESTED_SESSION_ID=1 restores the earlier behavior | v2.1.317 |
Runner orchestrator ok session=… lines print at every log level on stdout, and ok and nack lines gain reason=…; update scripts that match retryable=true: or retryable=false: | v2.1.318 |
Claude Code no longer installs or updates the IDE extension when started in an IDE terminal; use /ide from an outside terminal or your editor’s extensions view | v2.1.318 |
What to do: search dashboards for claude_code.safety_event, scripts for retryable= and FORCE_HYPERLINK, and settings for DISABLE_COMPACT.
6. Claude Apps Gateway: Identity, Budgets and Policy
| Setting or feature | Version | What it does |
|---|---|---|
oidc.user_id_claim | v2.1.312 | Identifies people by an id_token claim other than sub, such as Microsoft Entra ID’s oid |
groups on upstreams | v2.1.314 | Only developers in the listed IdP groups are sent to that upstream, on failover too |
pooled_budget | v2.1.316 | One monthly budget a group’s members share, on top of each member’s own limit, set on the spend limits admin API |
managed.policy_mode: layered | v2.1.316 | Every policy that matches a developer applies, each merged over the ones listed below it, not only the first |
Cost report, GET /v1/organizations/analytics/cost | v2.1.317 | Past spend over a date range, in total, per developer, per day or per IdP group |
assume_role on mantle upstreams | v2.1.318 | A role in another AWS account, and per-developer AWS cost attribution |
Bedrock upstreams also gained guardrail_trace (v2.1.314) and guardrail.input_tagging (v2.1.316), and since v2.1.316 a request that names a model blocked by availableModels, deniedModels or models gets a 400 naming the field.
What to do: if your identity provider’s stable ID isn’t sub, set oidc.user_id_claim. Use upstream groups and pooled_budget to route and fund teams separately, and switch to managed.policy_mode: layered only after checking how your policies stack.
7. Cloud Sessions, Remote Control, VS Code, Claude Tag and Code Review
Surface-tagged entries add up: 45 for cloud sessions, 44 for VS Code, 28 for Claude Tag, 12 for self-hosted runners, 9 for Code Review and 7 for Remote Control. The highlights:
- Cloud sessions. Enterprise custom roles now include cloud session and Remote Control permissions (v2.1.310); scheduled tasks in Anthropic’s cloud load the plugins enabled on your claude.ai account (v2.1.314); form and link requests from MCP servers appear as cards you can answer or decline (v2.1.316, v2.1.317); and sessions on Anthropic-hosted environments can start with no repository (v2.1.318).
- Self-hosted runners and Remote Control.
--hold-idle-fileand--max-hold-minkeep an idle session while your host reports processes it left running (v2.1.311). Remote Control hosts, the background daemon and runners no longer fail to start sessions withspawn ENOENTafter an update or version cleanup removed a still-running process’s binary (v2.1.318). - VS Code. Syntax coloring in code blocks (v2.1.311), idle compaction for 200K+ token conversations (v2.1.314), and Claude apps gateway sign-in from the chat panel (v2.1.316).
- Claude Tag and Code Review. Claude Tag gained a Skills view in analytics (v2.1.311). Code Review no longer reviews an outdated commit when GitHub delivers a push event late (v2.1.312).
8. Beyond the CLI
Two related announcements from these weeks aren’t Claude Code releases:
- Message threads (beta), November 2. On the Messages API, long conversations and agent loops can keep the conversation on the server with the
message-threads-2026-08-12beta header, so each later request sends only the new messages and gets a lower time to first token. This period’s Claude Code changelog doesn’t mention it. See Claude API message threads. - Agent Skills donated to the AAIF, October 22. Anthropic donated the Agent Skills standard, with its name and logo, GitHub organization and agentskills.io domain, to the Agentic AI Foundation under the Linux Foundation; you can use or contribute to the standard without joining the AAIF. See Agent Skills and the Agentic AI Foundation.
What to Do Now
claude --version # v2.1.318 is the newest release covered here
claude update # update to the latest version
Solo developers
- Update to v2.1.318 for the sandbox and permission fixes.
- Decide whether
permissions.blockWritesOutsideWorkingDirectoriesbelongs in your user settings. - Expect a typed
ultrathinkto run its turn atxhighon the 5.5 models and Fable 5.1 through Anthropic’s API, or setCLAUDE_CODE_DISABLE_ULTRATHINK. - Check subagents on another model, which now use that model’s effort, and set
CLAUDE_CODE_SUBAGENT_EFFORTif you want a default. - Move fast mode work from Opus 4.8 to Opus 5.5 before November 30.
If you run claude -p or CI
- Fail the job on any non-zero exit from
claude -p. - Watch
credential_expires_ator the stderr warning, and renew withclaude auth loginorclaude setup-token. - Pass
--trust-workspacetoclaude ultrareview, after the PR number or base branch. - On self-hosted runners, check scripts that run
claude -pinside a session or parse orchestrator logs. - Replace any alert built on
claude_code.safety_event.
Admins
- Adopt the gateway controls in section 6 that you need, and expect a 400 for requests that name a blocked model.
- Re-check
deniedMcpServers: URL entries now also block Anthropic-provided servers whose upstream URL matches and, where the session is given the connector’s own URL, connectors in cloud sessions and on self-hosted runners (v2.1.318). - Server-managed settings for Team and Enterprise logins now apply without an approval prompt, and a stored copy that doesn’t verify is refused (v2.1.316).
- Grant cloud session and Remote Control access through Enterprise custom roles (v2.1.310).
Sources
- Claude Code CHANGELOG and GitHub releases; dates are npm publish dates (UTC)
- Claude Platform release notes: the Opus 4.8 fast mode deprecation (October 30, 2026) and message threads (November 2, 2026)
- Anthropic: Donating Agent Skills to the Agentic AI Foundation (October 22, 2026)
Every version above has its own page in our release archive. For the period before this one, read the August–October roundup; to learn Claude Code step by step, start at Learn.