Release notes
Claude Code v2.1.280
What's changed
- Added Claude Opus 5.5 (
claude-opus-5-5), now the default Opus model — 1M context, $4/$20 per Mtok with $0.20/Mtok cache reads - Added mouse support to more lists in fullscreen mode: the wheel scrolls the
/skillslist, and a skill's state options in/plugincan be clicked - Added
CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTHto change the 2,048-character cap on MCP tool descriptions and server instructions for every MCP server in the session - Added hook output sizes and the number of oversized outputs saved to a file to the
hook_execution_completeOpenTelemetry event - Fixed writes through a symlinked path being judged by their in-tree spelling: the prompt names where the write lands, and
acceptEdits, allow rules and auto mode no longer approve one landing outside - Fixed auto mode retrying an action over and over when a safety check declined to review it; the action is now denied once, noting that retrying won't help
- Fixed auto mode denying actions over and over without pause when a safety check gave no answer; retries now back off, and the turn stops with a message after ten in a row
- Fixed Write calls failing validation when a model sends
path,file_text,file_contentor a straydescriptioninstead offile_pathandcontent - Fixed Ctrl+C or Ctrl+D pressed twice in most dialogs (
/model,/effort,/config,/status,/usage,/plugin,/sandbox,/permissions,/artifacts,/mobile,/login,/upgrade,/usage-credits,/install-github-app,/setup-bedrock,/setup-vertex) quitting Claude Code instead of closing the dialog - Fixed a click that only brought the terminal window to the front also triggering the item under the pointer — in search pickers, tab bars, agent/workflow rows, slash-command links and suggestion dropdowns
- Fixed a stray
nclosing dialogs and a strayyconfirming them; Enter and Esc accept and cancel (bindy/ntoconfirm:yes/confirm:noinkeybindings.jsonto restore) - Fixed text fields in dialogs losing a typed letter, digit or Space to a keybinding on that key
- Fixed the prompt line staying scrambled on Windows terminals after invisible characters were removed on Enter; the screen is now repainted so you review the exact text that will be sent
- Fixed the invisible-character cleanup removing the zero-width non-joiner that Persian and Arabic text uses to attach a suffix to a Latin word or number, such as the plural of "PDF"
- Fixed voice dictation not stopping on Ctrl+C (the prompt cleared but the microphone kept recording), Esc not cancelling while a transcript was processing, and held Space starting dictation from the transcript view and vim NORMAL mode
- Fixed a model switch made from a host app (Claude Desktop, VS Code, SDK) while Claude is working causing a prompt-cache miss on the next prompt
- Fixed resumed fork subagents rebuilding their tool list instead of re-sending the one they first used, which broke prompt caching for that agent
- Fixed subagent hand-back messages showing an internal provenance preamble when expanded outside verbose mode
- Fixed
installed_plugins.jsonkeeping the install-time commit after updating a plugin from a GitHub repository or git URL that tracks a branch or tag - Fixed skills in
~/.claude/skills/being moved to~/.claude/skills/.trash/when amanifest.jsonin that folder listed their names - Fixed the session feedback survey showing no hover highlight on light and ANSI themes
- Fixed
/workflowsbriefly showing a one-row list before opening the only run - Fixed the mouse wheel not scrolling selection lists with hidden options (such as
/modeland/permissions) in fullscreen mode - Fixed a skill you switched off showing the same red ✘ as a plugin that failed to load in
/pluginand/skills; off now shows a dim ◯ - Fixed multi-select option descriptions being indented under the option number instead of under the label
- Fixed the search box in
/plugin,/skillsand/mcplosing its right border in fullscreen mode - Fixed
/mcpshowing △ in the server list but ⚠ in the detail view for the same server; the list, detail views and/pluginnow all show ⚠ - Fixed Home and End doing nothing in the
/configsettings list and in selection lists such as/model,/memoryand permission prompts - Fixed PgUp/PgDn in the
/skillsmenu wrapping past the first or last skill instead of stopping there - Fixed Tab silently changing the selected setting's value in the
/configlist; it now does nothing there - Fixed conversations failing on every turn with a "role 'system' must precede an 'assistant' message" API error
- Fixed conversations with the advisor on failing every turn with API Error 400 "Input tag 'advisor_20260301'" behind a proxy or gateway that doesn't support it; the request now retries without it
- Fixed a session failing on every turn and
/compactwhen its saved history held a malformed notice about MCP tools that could not be loaded - Fixed a crash when resuming a session whose saved transcript holds a malformed system message or a memory-saved notice without its file list
- Fixed one cause of long-running fullscreen sessions exiting with "Claude Code exited after an unrecoverable interface error": a damaged cached message list is now rebuilt
- Fixed Claude Code hanging when a settings file, or a file it re-reads after an edit, is replaced by a named pipe mid-read
- Fixed
/configcrashing and some on/off preferences being misread when a preference that has moved tosettings.jsonstill holds a value likenullor"false"in~/.claude.json - Fixed resuming a session with unfinished background agents, shells or workflows starting a model turn on its own before you typed anything
- Fixed messages sent to a background subagent being silently lost in headless and SDK sessions when the subagent was finishing its turn
- Fixed a finished subagent's report being lost when the conversation that launched it was compacted before the report was read
- Fixed background subagents being unable to use the LSP tool when an LSP plugin is active
- Fixed background shell tasks reporting benign non-zero exits (e.g. grep with no matches) as failures
- Fixed background sessions (
claude --bg) being unable to run git, hooks, plugins and other helper programs when an environment variable handed to the session contained a NUL character - Fixed Ctrl+C needing three or four presses to exit while background subagents are running; two presses now exit
- Fixed IDE selection being dropped when a sent prompt comes back into the input, such as pressing Esc to edit it, rewinding to it, or pressing Esc while startup hooks run
- Fixed a
!shell-mode prompt stashed with Ctrl+S coming back as a plain prompt when restored, and/listing file paths right after stashing one - Fixed
claude agentsshowing a blank, unresponsive screen instead of an error when the temp directory is full, not writable or owned by another user - Fixed an MCP server re-added under the same name after
claude mcp removestill showing as needing authentication instead of reconnecting - Fixed background plugin marketplace auto-update ignoring git credential helpers, so private-repo marketplaces were re-cloned every run or never updated
- Fixed
claude plugin updateclearing a plugin's recorded commit and moving it to version "unknown" when the official marketplace's snapshot file is a link or too large - Fixed the Artifact tool silently disappearing when your organization's policy can't be loaded (for example behind a web proxy); Claude now says what's blocking it
- Fixed artifact republishes silently resetting stored database access rules or dropping the viewer profile scope when that capability was re-sent without them; they are now refused
- Fixed
/ultrareview
…