Source: raw/anthropic-watch-claude-code-tag-v2-1-246.md, raw/anthropic-watch-claude-code-tag-v2-1-247.md, and ai-research/claude-code-release-v2-1-{248,250,251}.md — the anthropics/claude-code GitHub release notes for v2.1.246 through v2.1.251, published 2026-08-25 to 2026-08-28. The v2.1.248–251 files were fetched with gh release view on 2026-09-29 to fill a gap in the watch feed. Also ai-research/claude-code-docs-changelog-2026-08-28.md (the code.claude.com changelog for the same releases, fetched 2026-08-28), ai-research/claude-code-docs-whats-new-w35-2026-09-18.md (the official W35 digest, fetched 2026-09-18), ai-research/claude-code-docs-whats-new-w36-2026-09-18.md (the official W36 digest, which repeats several v2.1.251 items) and ai-research/claude-code-docs-whats-new-w34-2026-08-28.md (the official W34 digest, cited for ANTHROPIC_DEFAULT_MODEL).
Product: Claude Code · URL: https://github.com/anthropics/claude-code/releases · Official digest: https://code.claude.com/docs/en/whats-new/2026-w35 · Date: 2026-08-25 → 2026-08-28
Five releases this week (v2.1.246, 247, 248, 250, 251), after the week opened with v2.1.243 and v2.1.245, whose release notes are recorded at the end of Week 34. The week moves model defaults twice: Sonnet 5’s auto-compact window grows to its full 1M context, and seat-based Enterprise plans switch to Opus 5 by default. It also adds PreModelSwitch / PostModelSwitch hooks, per-model /effort memory, a prompt-cache line in /cost, and a --restricted mode that strips command-running tools. Continues into Week 36.
The official W35 digest (dated August 24–28, releases v2.1.240 → v2.1.250) headlines three features: /resume in the Desktop app, Claude-drafted feedback, and restricted mode. v2.1.251 is the week’s largest release — 71 entries in the code.claude.com changelog, against 57 for v2.1.246 — and its notes open with five path- and permission-boundary security fixes.
Key Takeaways
- Sonnet 5 now auto-compacts near its full 1M window (v2.1.247). Sessions on the 1M window compact at about 967K tokens instead of about 934K. See Claude Sonnet 5.
- Seat-based Enterprise subscriptions now default to Opus 5, “matching other premium plans” (v2.1.251). See Claude Opus 5.
- New
PreModelSwitchandPostModelSwitchhook events can block, confirm or annotate a model switch, andSessionStartresume hooks now receive session staleness and the estimated re-cache cost (v2.1.251). See Hooks. /effortis remembered per model (v2.1.251): each model keeps its own effort setting when you switch. See Model vs Effort./costshows a per-session prompt-cache line — hit ratio, misses, tokens re-cached, warm/cold — plus aprompt_cacheobject for status-line scripts (v2.1.251). Week 36 adds a likely cause for each miss.--restricted/CLAUDE_CODE_RESTRICTED=1removes the built-in tools that run commands or code andWebFetch(unless named in--tools), keeps file tools inside the working directory, refusesbypassPermissions, and ignores user, project and local settings files (v2.1.248).- Desktop
/resumepicks up CLI sessions (official W35 digest, no version given): type/resumein the Claude Code Desktop prompt box, find a terminal session by title, folder or branch, and continue it in the app with the full conversation. CLAUDE_CODE_SUBAGENT_MODELchanged meaning (v2.1.251): it now sets the default subagent model; an agent definition’smodel:and an explicit per-spawn model take precedence over it. Scripts that relied on it to force every subagent onto one model need the_FORCEvariant added in Week 36.- The Workflow tool’s description shrank from about 5.7k to about 1k tokens, with the script-writing reference moved into a bundled
workflow-authoringskill (v2.1.248). See Dynamic Workflows. - Claude Desktop and Cowork sessions are no longer deleted after 30 days (v2.1.248); the new
desktopSessionCleanupPeriodDayssetting caps the exemption. - Bedrock, Vertex AI and Foundry catch up on agent features: Claude can start
/code-reviewon its own there (v2.1.246); cross-sessionSendMessage/ListAgentsand/loopwork there (v2.1.248);/radiotoo (v2.1.251). The official digest adds that on these providers/modeland/effortnow apply immediately instead of after the turn ends. - Security fixes worth updating for (v2.1.246–251). v2.1.251 lists five together: file tools following a symlink swapped after the permission check; plugin commands in a marketplace entry pointing outside the plugin directory; project settings enabling detailed beta tracing or bypassing an OTLP collector pinned by managed settings; the Workflow tool reading a
scriptPathoutside the session’s read permission before the check ran; and Grep/Glob ignoringRead(...)deny rules through symlinked paths. Also: arithmetic assignments such asOPTIND=1/0being auto-approved (v2.1.251); telemetry carrying a third-party gateway’s API key to Anthropic (v2.1.246); and/ultrareviewuploadingprod.env-style,*.tfvarsand credential swap files (v2.1.248).
Release table
| Version | Date (UTC) | Shape |
|---|---|---|
| v2.1.246 | 2026-08-25 | Large (57 changelog entries); /permissions Auto mode tab, /cd applies project config immediately, non-interactive auto-continue |
| v2.1.247 | 2026-08-26 | Sonnet 5 1M auto-compact, SendFeedback tool, /claude-api cost-optimize |
| v2.1.248 | 2026-08-27 | --restricted, experimental.cacheTtl, Workflow tool slimmed |
| v2.1.249 | — | No GitHub release page |
| v2.1.250 | 2026-08-28 | ”Bug fixes and reliability improvements” only |
| v2.1.251 | 2026-08-28 | Largest of the week (71 changelog entries); Enterprise default Opus 5, model-switch hooks, per-model effort, /cost cache line, five-fix security batch |
From the official W35 digest
The digest adds detail the release notes don’t carry, and lists “other wins” that appear in none of the itemised v2.1.246–250 notes.
/resume in the Desktop app
- In a Claude Code Desktop session, run
/resumeto list the sessions you started from the CLI. Search by title, folder or branch, preview where you left off, then select one and press Enter; the conversation opens in the app with its context intact. Reference:code.claude.com/docs/en/desktop#coming-from-the-cli. - A long terminal session can now move into Desktop’s diff, terminal and preview panes without starting over.
Claude-drafted feedback (SendFeedback)
- Claude drafts a report when a tool keeps failing, when it can’t help with a request, or when you point out a mistake. A card above the prompt shows the draft; you review, send or dismiss it. Nothing reaches Anthropic until you send it.
/feedbackwith no argument opens the queue of drafts from every session; select one to edit, send or discard it.- Turn drafting off by setting Claude-drafted feedback to
offin/config(digest) — thefeedbackDraftssetting in the v2.1.247 notes. - The digest says the feature “requires v2.1.238 or later”; the changelog lists the
SendFeedbacktool as added in v2.1.247.
Restricted mode (v2.1.248)
- The digest’s stated use case is an evaluation harness driving
claudeon a shared machine. - Beyond removing the command-running tools and
WebFetch, it confines the file tools to the working directories, loads only managed settings and--settings, and refuses thebypassPermissionsmode. Because project settings aren’t loaded, a repo’s.claude/settings.jsoncan’t loosen it. - To give back a removed tool, list it in
--toolstogether with the other built-in tools you want, e.g.--tools "Bash,Read,Edit".--toolsis an allowlist, and itsdefaultpreset does not restore the removed tools. - Example:
claude --restricted -p "review src/ for SQL injection risks". - It removes tool classes outright rather than gating them with permission rules, which fits untrusted-content pipelines and locked-down CI runs as well as eval harnesses.
Other wins not in the v2.1.246–250 notes
The digest’s range is v2.1.240 → v2.1.250, but these items appear in none of the itemised v2.1.246–250 notes. v2.1.240 and v2.1.241 were “bug fixes and reliability improvements” and v2.1.245 was the glibc fix, so they most likely shipped in v2.1.243 (2026-08-24), whose GitHub release body is only a CHANGELOG chore line.
modelPickersetting extends or replaces the/modelpicker’s built-in list with your own ordered, labelled entries, including Amazon Bedrock or Google Cloud Agent Platform model IDs.promptCacheTtl: "1h"keeps a one-hour prompt cache on the main conversation when you use an API key or a cloud provider;subagentPromptCacheTtlsets the TTL for subagents and every other request outside the main conversation./usageLoops breakdown (Pro, Max, Team, Enterprise): run count, total tokens, tokens per run and last run for the/loopand scheduled tasks that used the most tokens. See Scheduled Tasks.modelPricingmanaged setting: organizations on contracted rates get/usage, the status line and OpenTelemetry reporting cost at those rates instead of list price./loginoffers “Sign in with your Console account” under the Anthropic Console account option, so members of Console organizations that don’t allow API keys can sign in without creating one.- On Bedrock, Agent Platform and Foundry,
/modeland/effortapply immediately instead of after the turn ends. - Smaller installer: the native installer and auto-updater download a zstd-compressed build, about 75 MB instead of 340 MB on Linux x64, and native builds load code on demand, using roughly 40–70 MB less memory per session.
Models and defaults
- Sonnet 5 auto-compact window → full 1M context, compacting at about 967K instead of about 934K tokens (v2.1.247).
- Seat-based Enterprise default model → Opus 5 (v2.1.251).
/effortsaves a default effort per model (v2.1.251).- Fixed Opus 5 requests failing with “effort … is not supported when thinking is disabled” at xhigh/max with thinking off; effort is now sent as
highin that case (v2.1.251). - Fixed
claude --bg --model fableon Max plans asking for usage credits while the interactive session on the same account still had Fable allowance (v2.1.251). - Fixed the “switch to Opus 1M for 5x more context” tip showing when the current Opus already has 1M (v2.1.251).
- Fixed subagents dying on a first-call model 404: they now use the session’s fallback model chain (v2.1.247).
- The default commit trailer becomes
Co-Authored-By: Claude Codewhen the active model isn’t a recognized Claude model, for example a third-party model behindANTHROPIC_BASE_URL(v2.1.251).
New commands and features
/permissionsAuto mode tab for viewing and editing auto-mode classifier rules (v2.1.246); before it, inspecting those rules meant opening a settings file. See Auto Mode.- Bash permission prompts gain a tip and a one-keystroke “Yes, and switch to auto mode” option (v2.1.247); the digest says it appears in the Manual and
acceptEditsmodes when auto mode is available. /cdnow applies the new directory’s project settings, hooks,.mcp.jsonservers (behind the usual approval), skills and agents immediately instead of on--resume(v2.1.246).- Non-interactive sessions (
-p, SDK, cloud) automatically continue a response cut off by a server error, connection loss or stall (v2.1.246); the digest adds that this applies when the partial response contains text and no tool calls. /code-reviewcan be started by Claude on its own on Bedrock, Vertex AI, Foundry, through the Claude apps gateway, and with telemetry disabled (v2.1.246)./goal: idle sessions start at most three check-ins on long-running background work per goal; your next message allows three more (v2.1.246). See Scheduled Tasks.- End-of-turn duration line shows completion time, e.g.
✻ Sautéed for 23s · done 6:05 PM(v2.1.246). - SendFeedback tool: Claude drafts a feedback report you review and send from
/feedback; turn off withfeedbackDrafts(v2.1.247). Details under the digest section above. /claude-api cost-optimizeprofiles a project’s Claude API spend and walks cost levers (caching, token hygiene, batch, effort, model choice) one measured change at a time; the/claude-apiskill also gains Admin API coverage (members, invites, workspaces, API keys, rate-limit reports, workload identity federation, CMEK) (v2.1.247). See Cost & Intelligence Levers./usage-creditsfor Enterprise orgs billed via AWS Marketplace, self-serve Enterprise and Enterprise trials (v2.1.248).- Cross-session messaging (
SendMessage/ListAgents) between sessions on the same machine now works on Bedrock, Vertex, Foundry and with telemetry off (v2.1.248). /loopself-paced dynamic mode and the no-prompt autonomous default are always available, including on Bedrock/Vertex/Foundry (v2.1.248).claude self-hosted-runner --client-label <label>/SELF_HOSTED_RUNNER_CLIENT_LABEL(v2.1.248)./usageSpend limit bar and arate_limits.spend_limitstatus-line field for developers behind a Claude apps gateway with spend limits (v2.1.251). See Claude Apps Gateway.claude --helpnow listsattach,logs,stop,respawnandrm(v2.1.251).- A foreground subagent’s tool calls and results stream live to Remote Control clients (v2.1.251).
/radiois available on Bedrock, Vertex AI, Foundry, Claude Platform on AWS, and with telemetry off (v2.1.251)./scheduleexplains that MCP servers configured in Claude Code can’t be attached to cloud routines (v2.1.251).
Settings and environment variables
spinnerTipsOverrideaccepts{id, text, cooldownSessions, priority}entries,tipsFileandlabel(v2.1.247), so organizations can rotate their own tips alongside the built-in ones.feedbackDrafts(v2.1.247).desktopSessionCleanupPeriodDays(v2.1.248).- An invalid
crossSessionInboundvalue now warns and holds (user settings) or is refused (managed settings) (v2.1.248). - Managed settings: client-side timeout, MCP startup-mode and stream-watchdog environment variables no longer trigger the approval prompt (v2.1.248).
CLAUDE_CODE_SUBAGENT_MODELis now a default, not an override (v2.1.251).- Project
.claude/settings.jsonenvcan no longer setCLAUDE_CONFIG_DIR,CLAUDE_CODE_TMPDIR, orTMPDIR/TMP/TEMP— set them in your shell, user or managed settings (v2.1.251). ANTHROPIC_CUSTOM_HEADERSfrom managed or project settings requires approval when it sets a credential, org/tenant, routing or API-behaviour header such asAuthorizationorHost(v2.1.251).- Server-managed settings that terminate sandbox TLS, proxy sandbox traffic, inject credentials or weaken isolation now require approval, and the approval dialog lists only settings changed since the last approval (v2.1.251).
- Startup warning for Bash allow rules with a wildcard before the subcommand, e.g.
Bash(git * main), since they also match options inserted before the subcommand (v2.1.246). - Digest-only settings (
modelPicker,promptCacheTtl,subagentPromptCacheTtl,modelPricing) are listed under “From the official W35 digest” above.
Hooks, MCP, plugins, skills and subagents
PreModelSwitch/PostModelSwitchhook events;SessionStartresume hooks receive staleness and estimated re-cache cost (v2.1.251). The official W36 digest describes the split: aPreModelSwitchhook can block a switch you request, and aPostModelSwitchhook can add context for Claude after the model changes. Before v2.1.251 a model switch was outside the hook system’s reach.- Agent frontmatter
experimental.cacheTtl("5m"or"1h") sets a per-agent prompt-cache TTL when no subagent TTL setting is configured (v2.1.248). See Subagents. - A subagent that stops at
maxTurnsreturns its output marked partial, with a hint to continue it viaSendMessage(v2.1.246). - Hooks: stdout that starts with
{but isn’t valid JSON is now reported as a hook error; an invalidPermissionRequest/PreToolUsehook answer is named in theclaude agentsrow (v2.1.248). Fixed the Notification hook not firing while the sandbox network-request prompt waits, and hook errors showing a literal${CLAUDE_PLUGIN_ROOT}(v2.1.246). - MCP: a
headersHelperthat suppliesAuthorizationnow re-runs on 401 instead of falling into OAuth discovery (v2.1.248); tool arguments with an empty{}schema are no longer sent as JSON strings (v2.1.246);requiresUserInteractiontools no longer offer “don’t ask again” (v2.1.246); the SDK MCP handshake wait times out after 70 seconds (v2.1.251). On Bedrock/Vertex/Foundry and with telemetry off, Claude is told when a configured MCP server failed to connect (v2.1.247). See MCP. - Plugins: marketplace names with control or invisible characters are rejected (v2.1.247); marketplace-entry commands pointing outside the plugin directory are rejected as path traversal (v2.1.251);
/reload-pluginscounts skills underskills/*/SKILL.md(v2.1.246). Also fixed in v2.1.246: plugin skills whose frontmatternamealready carries the<plugin>:prefix showing it doubled in the slash menu;claude plugin updatefailing when given a bare plugin name; and installation failing whenplugin.jsonwas saved with a UTF-8 byte-order mark. See Plugins and Marketplaces. - Agent teams: a teammate’s final answer now reaches the lead in the idle notification instead of a content-free “available” notice (v2.1.251). See Agent Teams.
Breaking and behaviour changes
- shift+enter in the agent-view dispatch input inserts a newline; ctrl+enter dispatches and attaches (v2.1.248).
- Cross-session peer messages collapse to a one-line preview; Ctrl+O expands (v2.1.247).
- Claude in Chrome browser actions always go through Claude Code’s permission checks, including with telemetry disabled (v2.1.251).
- Syntax highlighting removed for 1c, gml, isbl, mathematica, maxima and sqf; the binary is 2.5 MB smaller (v2.1.251).
The v2.1.251 security batch
The five fixes that open the v2.1.251 notes:
- Symlink swap in file tools. Read, Write and Edit followed a symlink swapped inside the working directory after the permission check, so they could read or write outside the approved location — a time-of-check/time-of-use race.
- Plugin path traversal. A command declared in a marketplace entry could point outside the plugin directory; such paths are now rejected with a path-traversal error.
- Beta tracing scope. Project settings could turn on detailed beta tracing or raw API body logging, and a lower-scope beta tracing endpoint could bypass an OTLP collector pinned by managed settings or a host app.
- Workflow
scriptPathread. The Workflow tool read — and quoted in error messages — ascriptPathoutside what the session may read, before the permission check ran. - Grep/Glob deny rules.
Read(...)deny rules weren’t applied to files reached through a symlinked search path.
Four of the five are a boundary checked against the wrong representation of a path (a symlink, a traversal, a lower settings scope); the Workflow one is an error path that read the file before the check. Each needs an attacker who controls the working directory, plugin files or project settings, so they matter most in shared CI, with third-party marketplace plugins, and on untrusted content, and little on a trusted single-user machine.
Notable fixes
- Prompt cache: a miss roughly once an hour in long sessions after an OAuth token refresh re-rendered tool definitions (v2.1.248).
- Security: symlink swap after permission check (v2.1.251); Grep/Glob and symlinked
Read(...)deny rules (v2.1.251);OPTIND=1/0-style arithmetic assignments (v2.1.251); third-party gateway API key sent with telemetry to Anthropic (v2.1.246);/ultrareviewand locally seeded cloud sessions uploading uncommitted edits to credential-like files (v2.1.248). Full v2.1.251 list above. See Ultrareview. - Auto mode tool calls denied as “temporarily unavailable” on very large sessions — the safety-check deadline now scales with prompt size (v2.1.246).
- Resumed sessions failing every turn with a 400 when saved history contained tool blocks written by a third-party API proxy (v2.1.246).
- Also v2.1.246:
/forkfrom an already-forked or backgrounded session starting with an empty conversation; markdown rendering switched off for a whole message when its first 500 characters had no markdown; background sessions failing to open with “Couldn’t start the background service … EACCES” while another Claude Code process was re-installing the npm package.
Try It
- Update now if you run Claude Code in shared CI, with third-party marketplace plugins, or on untrusted files. The v2.1.251 batch closes permission bypasses that matter most there.
- Add a
PreModelSwitchhook if a mid-session model switch has ever cost you a cold cache: theSessionStartresume payload now carries the estimated re-cache cost to decide with. - Check
/costafter a long session to see the prompt-cache hit ratio and whether the cache went cold. Two causes of misses fixed this week: tool definitions re-rendered after an OAuth token refresh, and theScheduleWakeuptool definition changing on--resumeonce an account entered usage overage (both v2.1.248). - Audit scripts that set
CLAUDE_CODE_SUBAGENT_MODEL. From v2.1.251 an agent’s ownmodel:wins; setCLAUDE_CODE_SUBAGENT_MODEL_FORCE(v2.1.257) if you need the old override, or removemodel:from the agent definitions that should follow the variable. - On a seat-based Enterprise plan, check which model new sessions start on. It is now Opus 5;
ANTHROPIC_DEFAULT_MODEL(added in Week 34) sets the start model, and a/modelpick still overrides it and persists. - Try
claude --restrictedfor sessions that should only read and edit files in one directory; add back a single tool with--tools. - On Bedrock, Vertex AI or Foundry, try
/loopandSendMessage. Neither needs the Anthropic API any more; the patterns in Scheduled Tasks apply. - Run
/claude-api cost-optimizeon a project whose API spend is growing. Changing one lever at a time lets you attribute each saving. - In the Desktop app, run
/resumeto continue a terminal session there. - If you keep project
enventries forTMPDIRorCLAUDE_CONFIG_DIR, move them to your shell or user settings; project settings no longer apply them.
Open Questions
- v2.1.249 has no GitHub release page. Whether it shipped through another channel is not stated.
- v2.1.250 is unitemized (“Bug fixes and reliability improvements”).
- What does “estimated re-cache cost” measure — tokens, dollars, or both? The release note names the field but not its unit. Does it account for the warm/cold cache tiers?
- What does session staleness measure — time since the last turn, or since the session was backgrounded? Neither the changelog, the GitHub release nor the 2026-09-20 hooks-page snapshot names the input fields; an earlier version of this digest gave them as
sessionStalenessandestimatedRecacheCostwithout a source. - What matcher and block-decision format does
PreModelSwitchtake? None of the sources here documents its input or output schema. - Does
desktopSessionCleanupPeriodDayshave a default? The note says it caps the exemption but gives no default value. - Which release shipped the digest’s other wins (
modelPicker,promptCacheTtl, the Loops breakdown,modelPricing, Console sign-in, the zstd installer)? v2.1.243 is the likely candidate by elimination; no source itemises it. - When did
SendFeedbackship — v2.1.238 (the digest’s minimum version) or v2.1.247 (the changelog entry)? - Does
--restrictedremove MCP tools? The sources say it removes the built-in tools that run commands or code; MCP servers can run code on their host, and neither source addresses them. - What triggered the v2.1.251 security batch? No CVE, external report or incident is named. Five boundary fixes landing together suggests a deliberate audit.
- Was the lost teammate final answer a regression from the v2.1.232 subagent-forking changes? Not confirmed.
- How does
experimental.cacheTtlinteract withsubagentPromptCacheTtl? The note says the frontmatter value applies “when no subagent TTL setting is configured”, which implies the setting wins; not stated directly.
Related
- What’s New — Week 34 — the preceding digest (v2.1.234–245:
/designskill, Concise output style, Remote Control phone start); also records v2.1.243 and v2.1.245. - What’s New — Week 36 — the following digest (Claude Fable 5.1).
- Hooks —
PreModelSwitch/PostModelSwitch. - Subagents —
CLAUDE_CODE_SUBAGENT_MODELsemantics,experimental.cacheTtl. - Model vs Effort in Claude Code — per-model
/effort. - Claude Sonnet 5 and Claude Opus 5 — the two default changes.
- CLI Reference — flags and settings named here.
- Scheduled Tasks —
/loopon Bedrock/Vertex/Foundry, the/usageLoops breakdown. - Agent Teams — the teammate final-answer fix.
- Plugins and Marketplaces — the plugin path-traversal fix and the v2.1.246 plugin fixes.
- Cost & Intelligence Levers — the levers
/claude-api cost-optimizewalks through.