Originally published at terminalblog.com.
Claude Code v2.1.280 landed September 22, 2026. The headline is Claude Opus 5.5 is now the default Opus model — 1 million context window, $4/$20 per million tokens with $0.20/Mtok cache reads. But the real story is the 100+ fixes that clean up months of paper cuts.
If you've ever fought with dialog focus theft, auto-mode retry loops, Windows prompt scrambling, or subagents losing their minds — this release is for you.
1. Opus 5.5 Is Now the Default (Pro, Team Standard, Max, Team Premium, Enterprise)
| Plan | Old Default | New Default |
|---|---|---|
| Pro / Team Standard | Sonnet | Opus 5.5 |
| Max / Team Premium / Enterprise | Opus 4.x | Opus 5.5 |
Opus 5.5 brings 1M context and a pricing tier that makes it viable for daily coding: $4/M input, $20/M output, with $0.20/M cache reads. The model switch is automatic on next launch — no config changes needed.
For beginners: this means you get the strongest Anthropic model out of the box. No more "which model should I pick?" paralysis.
2. The Dialog Focus Theft Is Finally Fixed
You know the annoyance: you click to bring the terminal window forward, and suddenly you've also clicked whatever was under your cursor — a search result, a tab, a suggestion dropdown.
Fixed. A click that only brings the window to front no longer triggers the item under the pointer. This applies to search pickers, tab bars, agent/workflow rows, slash-command links, and suggestion dropdowns.
3. Auto Mode Retry Loops — Stopped
Two separate auto-mode bugs got squashed:
- Safety check declined to review → action now denied once with a message that retrying won't help (instead of infinite retries)
- Safety check gave no answer → retries now back off, and after 10 in a row the turn stops with a message
No more watching Claude burn through your token budget on a loop it can't escape.
4. Windows Prompt Scrambling — Gone
On Windows terminals, invisible character cleanup used to leave the prompt line scrambled after you hit Enter. Now the screen repaints so you review the exact text that will be sent.
Also fixed: the cleanup was removing the zero-width non-joiner that Persian and Arabic text uses (e.g., the plural of "PDF"). That's gone — your non-Latin text stays intact.
5. Voice Dictation Actually Works Now
Three voice bugs fixed in one release:
- Ctrl+C now actually stops the microphone (before: prompt cleared but mic kept recording)
- Esc cancels while a transcript is processing
- Held Space no longer starts dictation from transcript view or vim NORMAL mode
If you use voice input, this release makes it usable.
6. Subagent Hand-Off Bugs — Multiple Fixes
Background subagents have been a source of silent failures. v2.1.280 addresses:
- Finished subagent reports lost when the parent conversation compacted before the report was read → fixed
- Messages to background subagents silently lost in headless/SDK sessions when the subagent was finishing → fixed
- Background subagents couldn't use LSP tool when an LSP plugin was active → fixed
- Background shell tasks reporting benign non-zero exits (grep with no matches) as failures → fixed
- Ctrl+C needing 3-4 presses to exit while background subagents run → now 2 presses
7. Session Resume Crashes — Hardened
Multiple crash-on-resume scenarios fixed:
- Damaged cached message list now rebuilt instead of "Claude Code exited after an unrecoverable interface error"
- Malformed system message or memory-saved notice without file list in saved transcript → handled gracefully
- Settings file replaced by a named pipe mid-read → no longer hangs
8. Config & Plugin System Hardening
-
/configcrashing when a preference moved tosettings.jsonstill holdsnullor"false"in~/.claude.json→ fixed -
installed_plugins.jsonkeeping install-time commit after updating a plugin from GitHub repo tracking a branch/tag → fixed - Skills in
~/.claude/skills/being moved to.trash/when amanifest.jsonlisted their names → fixed - Plugin marketplaces imitating reserved names → refused when added, stopped if already added
- Background plugin marketplace auto-update ignoring git credential helpers → fixed (private-repo marketplaces now work)
9. MCP Server UX Improvements
-
/mcpshowing △ in server list but ⚠ in detail view for same server → now consistent ⚠ everywhere - MCP server re-added under same name after
claude mcp removeshowing as needing auth → now reconnects properly - New env var:
CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH— change the 2,048-char cap on MCP tool descriptions/server instructions per session
10. Fullscreen Mode Polish
- Mouse wheel now scrolls
/skillslist and clickable skill state options in/plugin - Search box in
/plugin,/skills,/mcpno longer loses right border - Home/End now work in
/configsettings list and selection lists (/model,/memory, permission prompts) - PgUp/PgDn in
/skillsmenu stop at first/last skill instead of wrapping - Tab in
/configlist no longer silently changes selected setting's value - Multi-select option descriptions now indent under the label, not the option number
11. VS Code Extension — Real Features Added
| Feature | Command | What It Does |
|---|---|---|
| Status dialog | /status |
Session version, account, model, server details |
| Sandbox dialog | /sandbox |
Sandbox mode, unsandboxed fallback, excluded commands |
| Chrome dialog | /chrome |
Extension status, install, reconnect, permissions |
| Export conversation | /export |
Copy/save conversation as plain text |
| Skills in Slash commands | /skills |
Each skill's source, token estimate, on/off state with click-to-toggle |
Paste handling improved: pastes over 800 chars or 2+ line breaks are marked so Claude knows it's pasted text. Invisible Unicode formatting/tag characters removed from pasted text with a notice.
Plan approval card now offers auto mode: "Yes, and use auto mode" — matching terminal behavior.
12. Cloud & Web Fixes That Matter
-
ghand GitHub API calls in cloud sessions on GitHub Enterprise Server auto-renew token after ~8 hours (was failing) - Routine resuming existing session with old prompt/name when edited moments before scheduled run → fixed
- File links in cloud session transcripts pointing outside working directory → now disabled with explanation
- Auto mode refusing retry because expired/superseded approval prompt recorded as rejection → fixed
- Cloud sessions viewed in Claude app now save files where the app can open them
13. Self-Hosted Runner & Enterprise
- Lifecycle-hook commits now sign under
--configure-git - Turn ending at
--retire-atrelease waits for turn to be reported before stopping - Git in lifecycle hooks ignores hook folders and programs named in runner's shared git files
-
GIT_ALLOW_PROTOCOLrequired for local-path andgit://remotes in hook folders
14. The Small Wins That Add Up
- Code blocks without language now colored like inline code — commands stand out
-
/btwasked while a tool runs now knows the call is in progress (not reading it as failed) - UserPromptSubmit hook timeout notice names which hook command timed out
-
@file suggestions — file whose name contains query ranks above folder-only matches - Artifact pages — no Print buttons, confirm dialogs, or blocked device features; email/phone shown as text; dark mode reaches form controls and scrollbars
-
/ultrareviewuploads — renamed copies (id_rsa copy,kubeconfig (1).yaml) stay on your machine -
Cross-session messaging startup warning explains
--debug-filewrites a debug log to your chosen path
v2.1.281 (September 23) — Proxy Resilience, MCP Validation, Session Resume Hardening
Proxy and Gateway Resilience (The Big One)
If you run Claude Code behind a corporate proxy, gateway, or third-party relay — this is the release you've been waiting for. v2.1.281 systematically fixes the failure modes that made proxies unreliable:
- Resumed sessions re-sending earlier turns in changed form — parallel tool-call turns, MCP tool inputs, or tool-search results while servers were reconnecting — no longer drop the API's prior reasoning
- Sessions resumed after a restart during a pending permission prompt no longer send different history that breaks the prompt cache
- Resuming a session that ended during a tool call — Claude now sees the call and is told its outcome is unknown; manual resume no longer adds a hidden "Continue" message
- Sessions with earlier advisor results the API could no longer read — failing one request every turn and repeatedly losing reasoning — now repair history once
- Prompt cache being lost when an MCP server disconnects mid-conversation (or is still connecting after a resume with tool search off) — fixed
- Responses cut short by a proxy/gateway closing the stream cleanly — no longer shown as complete with no warning; tool calls no longer run twice on duplicated stream events
- Responses failing with "Content block not found" when a proxy drops a stream event mid-response — partial response now kept, web search keeps results that already arrived
- Empty completed response requested twice when connection dropped before final event — fixed
- Stop reason being lost when a proxy sends a trailing usage-only frame — fixed
-
CLAUDE_CODE_RETRY_WATCHDOGsessions failing on first 5xx/dropped connection after 429/529 waits — fixed; no more sleeping uncapped and silently on longRetry-After
MCP Server Validation
claude plugin validate now checks your MCP config and reports:
-
.mcp.jsonentries that would be silently dropped at load - Undeclared
${user_config.*}references - Insecure URLs
This catches config errors before they break your session.
Auto Mode Intelligence
-
Auto mode recommendation in
/insights— estimates how many permission prompts auto mode could have handled in your recent sessions -
Scrollbars in fullscreen lists (
/skills,/mcp,/pluginInstalled) — appear on hover, clickable/draggable
Session Resume & Startup
- Crash ("unrecoverable interface error") while an API request was being retried — fixed
-
Turn retrying indefinitely ignoring
--max-turnswhen model alternated unparseable tool calls and output-limit truncation — fixed - Resuming very large sessions sometimes restoring only last few messages — fixed
- Interactive startup waiting on managed-settings network request (80ms normally, 17+ seconds when network unreachable) when no MCP servers/plugins configured — fixed
- Delay of up to 2 minutes before responding when reading/@-mentioning PDF >3MB — fixed
- Interrupted Read of specific PDF pages leaving page render running for up to 2 minutes — fixed
Permission & Security
-
Permission dialogs and attachment checks reading paths under macOS
/.vol,/.nofollow,/.resolvebefore approval — fixed (these can reach network mounts) -
Recursive
rmon command-substitution output (e.g.,rm -rf "$(pwd)") running unprompted in auto/--dangerously-skip-permissions— now asks even with Bash allow rule
v2.1.282 (September 24) — Web Search, Prose Width, VS Code Upgrades
Prose Width Control
New maxProseWidth setting caps the width of Claude's prose in wide terminals while tables and code blocks keep the full width. Your long-form responses stay readable without horizontal scrolling.
Web Search for Unrecognized Models (Vertex AI)
Vertex AI: Web search now offered for models Claude Code doesn't recognize yet, such as newly released ones. You're not locked out of search just because the model catalog hasn't caught up.
Telemetry Visibility
-
Startup notice,
/status, andclaude doctornow list telemetry variables in a project's settings files that were ignored or turned telemetry off -
Project and local settings ignore OpenTelemetry variables that turn on export, set its endpoint, or capture content (
CLAUDE_CODE_ENABLE_TELEMETRY,OTEL_LOG_*)
Chrome + Managed MCP Coexistence
New allowClaudeInChromeWithManagedMcp managed setting lets claude --chrome run alongside an exclusive managed-mcp.json. The error when Chrome is blocked now names the setting.
Session Resume Hardening (Round 2)
- Every request failing with 400 error in conversations with web search results the API cannot decrypt (e.g., from third-party gateway) — fixed
-
More cases of continued/resumed sessions (
--continue,--resume) re-sending earlier messages in changed form that could drop earlier reasoning — fixed -
Earlier extended thinking dropped when
/model,/rename,/artifactsor another immediate slash command used while Claude was working — fixed -
Continued/resumed conversations losing earlier extended thinking when relaunched with
--toolslist leaving out a built-in tool offered earlier — fixed -
Sessions failing every turn with "Invalid
datainredacted_thinkingblock" API error — Claude Code now drops thinking blocks and retries once - Compaction failing when summarization request is refused — now retries on a fallback model
- Failed turn ("Effort 'xhigh' isn't available with thinking turned off") after safety-related model switch in sessions with thinking off and effort above high — fixed
- Unanswered Fable usage-credits prompt switching models in SDK-hosted sessions (Claude Desktop) — turn now ends instead, Remote Control clients see model-switch notice
-
/modelwith full Fable model id stopping at API error instead of opening usage-credits prompt when plan needs credits not turned on yet — fixed - Requests failing up to a minute with "another Claude Code process is refreshing it" login error after that process was closed/killed mid-refresh — fixed
- Sessions started while another window was refreshing sign-in not retrying organization policy fetch — fixed
Windows & Filesystem
-
CLAUDE.md and rules read at startup through repository symlink reaching macOS
/Networkvia..or/.vol-style kernel path — fixed -
Rules link to macOS
/homebeing listed — fixed -
Bash permission rules with mid-pattern
:*skipped in settings files while--allowedToolshonored them — now work from every source, with startup warning on how they match - Command approved on restored permission prompt running twice when remote session's worker restarted — fixed
- Bash and PowerShell hiding full disk quota behind "Exit code 1" and leaving large output files in temp — fixed
Settings & Managed Config
-
Managed settings ignoring mistyped boolean lock keys (e.g.,
disableClaudeAiConnectors,allowManagedPermissionRulesOnly) — lock now applies, startup names the key -
Managed
permissions,autoMode,worktree,attributionsettings ignored entirely when one nested value was invalid — rest of block now still applies -
Repository, user and
--add-dirskills/commands/skills-directory plugin manifests pre-approving their own tools viaallowed-toolsunder managedallowManagedPermissionRulesOnly— fixed -
Windows/WSL managed settings: admin policy present but invalid/unreadable (HKLM,
managed-settings.json) keeps user-writable HKCU and WSL/etc/claude-codefrom applying — fixed
MCP & Artifacts
- Safeguard block messages on Bedrock/Mantle not showing request ID — block messages now also show message ID
- Artifact publishes failing when Claude gave version a label >60 characters — label now shortened
-
/artifacts: titles line up in one column, details dropped whole instead of cut mid-word, list supports PgUp/PgDn, Home/End, mouse wheel and clicks — improved
VS Code Extension — Real Features
- Long replies falling behind the stream — panel no longer re-parses whole reply on every update
- Dictation mic button covering message input's scrollbar when input tall enough to scroll — fixed
- Remote Control sessions started on this computer not opening from Web entry in session list — now open local conversation unless running elsewhere
- Editor tab's sign-in screen hanging silently after extension host restarts — now shows "stopped responding" notice
- Claude attaching option previews to multiple-choice questions in chat panel where question card never shows them — fixed
- Session manager's cost/usage block wrapping mid-text on narrow sidebar, showing totals from previous login after account switch — fixed
Cloud Sessions (claude.ai/code)
- Claude GitHub App status added to Settings → Connectors → GitHub — whether app is installed/reachable, plus steps to connect/install/reconnect
- "Open repository" and "Open compare page" links to repository menu of cloud session whose repo is hosted on non-GitHub Git server
- Attaching repository from different GitHub owner (e.g., fork's upstream) to running cloud session that already has one, including sessions started from Slack
- Next run time for hourly routine fixed — was 30 minutes off for half-hour-offset time zones (e.g., India)
- Routines page and Scheduled list load faster for accounts with many scheduled check-in reminders
- Fast mode switch added to composer's model menu in cloud sessions (when plan includes fast mode and model supports it)
- Settings shortcut on GitHub setup tip and "Troubleshoot GitHub connection" link in repository pickers
- Routines with GitHub trigger for PR being converted to draft now fire — previously never fired
- Cloud sessions on non-GitHub repo hiding Create PR button that could never work
- GitHub setup tip no longer covers repository picker's search box/rows while picker open — steps aside until picker closes
- File card when cloud session can't open a file now says whether file no longer exists or permission settings block reading it
Claude Tag (Slack)
- Slack's native Working indicator, Stop button, and thread title added to Claude's threads in channels
- Short notice when guest joining/leaving changes how Claude responds under Restrict or Channel-only guest setting
- Scheduled routines silently failing in Slack workspaces connected before workspace joined Enterprise Grid — fixed
- Claude asking to re-upload Slack file when brief file-scanning outage was the problem — now retries scan, told when scanner is down
- Bullet starting with +, -, * rendering as empty bullet with stray nested item — now shows as one bullet with character kept
- Failed cloud environment setup script notice — now names the setup script and says to fix it first (was generic "mention me to retry")
- Very long Slack threads: Claude silently withholding reply after judging against weeks-old messages — fixed; restart deep into thread no longer loses recent context
- Claude answering every mention with "Couldn't check this channel just now" in channel moved from Enterprise Grid org-wide sharing to single workspace — fixed
- Very large Enterprise Grid workspaces getting "Couldn't check channel" again after quiet hour — fixed
- Slack request blocked by org's inference hook showing generic retry notice — thread now shows hook's deny message, Claude doesn't retry
- Claude offering to switch to models org can't use — now lists/offers only models the switch will actually accept
- DynamoDB/Kinesis account-based endpoints failing to authenticate through AWS connection in Claude Tag — fixed
- Plugins sections in Claude Tag admin settings failing to load for org admins, listing attached plugins as raw IDs — now load and show each plugin's name
- Routine list in Slack thread now shows that thread's own scheduled tasks by default instead of every routine in the channel
Code Review
- PR getting no review when reviewed commit was force-pushed away while failed review was being retried in repo not set to review every push — fixed
Updating
# Auto-updates on next launch, or force:
claude update
Full changelog: v2.1.279...v2.1.280
Why This Release Matters
v2.1.280 isn't a feature drop — it's a quality flood. The Opus 5.5 default gets attention, but the 100+ fixes are what you'll feel daily:
- No more dialog focus theft
- No more auto-mode retry loops burning tokens
- No more Windows prompt scrambling
- No more voice dictation that won't stop
- No more subagent hand-off ghosts
- No more session resume crashes
- No more plugin marketplace credential hell
- No more MCP server status inconsistency
This is the release where Claude Code stopped feeling like a beta and started feeling like a tool you can trust in production.
Update. Try Opus 5.5. Enjoy the quiet.
Top comments (0)