Skip to content

Claude Code 2.1.280

114changes
  • Add Claude Opus 5.5 as the new default Opus model with a 1M-token context window.
  • See and toggle each skill's state and token cost from a new VS Code dialog.
  • Keep long-running fullscreen sessions from exiting with an unrecoverable interface error.
  • Make Opus the default model on Pro and Team Standard plans, matching other plans.
  • Fix conversations failing on every turn with a recurring API role-ordering error.

New features

12
More changes (9) Fewer changes

Mouse support for more fullscreen lists

Added mouse support to more lists in fullscreen mode: the wheel scrolls the /skills list, and a skill's state options in /plugin can be clicked

Configure the MCP description length cap

Added CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH to change the 2,048-character cap on MCP tool descriptions and server instructions for every MCP server in the session

▤ In the docs

Hook output size in OpenTelemetry events

Added hook output sizes and the number of oversized outputs saved to a file to the hook_execution_complete OpenTelemetry event

▤ In the docs

[VSCode] Add a Status dialog

Added a Status dialog, with a typed /status, showing the session's version, account, model and server details

[VSCode] Add a Sandbox dialog

Added a Sandbox dialog for the sandbox mode, the unsandboxed fallback and excluded commands, opened from the panel menu or by typing /sandbox

[VSCode] Add a Claude in Chrome dialog

Added a Claude in Chrome dialog (extension status, the install, reconnect and permissions pages, the enabled-by-default setting), opened from the panel menu or by typing /chrome

[VSCode] Add Export conversation

Added Export conversation, with a typed /export, to copy or save the conversation as plain text

[Claude Tag] Add Slack Working indicator and Stop

Added Slack's native Working indicator, Stop button and thread title to Claude's threads in channels; the indicator stays up until Claude finishes, and Stop interrupts the task

[Claude Tag] Notify on guest-driven response changes

Added a short notice in the Slack channel when a guest joining, or the last guest leaving, changes how Claude responds there under a Restrict or Channel only guest setting

Improvements

31
More changes (30) Fewer changes

Improve /permissions focus and defaults

Improved /permissions: focus returns to the rule list after viewing, adding or deleting a rule, and the delete-rule and remove-directory confirmations now default to No

Improve /permissions tab navigation

Improved /permissions tab navigation: the left and right arrow keys and Tab pressed in a rule list now switch tabs without moving focus to the tab bar

Name thinking-mode causes in /cost

Improved /cost cache-miss causes to name thinking mode and thinking display changes

Report unreadable artifact links

Improved the Artifact tool so that when Claude cannot read an artifact link it was given, it tells the user before continuing

Show Esc hint in /install-github-app

Improved /install-github-app: the GitHub CLI check and repository selection steps now show "Esc to cancel"

Add scrollbars to /artifacts and /workflows

Improved the /artifacts and /workflows lists: a scrollbar at the right edge shows how much of a long list is hidden and where you are in it

Simplify workflow progress indicators

Improved the workflow progress tree: running agents and phases now show a dim dot instead of a spinning icon

Clean up /plugin's Add Marketplace form

Improved /plugin's Add Marketplace form in fullscreen: it no longer draws a box inside the pane, and its text and key hints line up with the rest of /plugin

Remove extra rule in /workflows detail

Improved the /workflows detail view in fullscreen: it no longer draws a second horizontal rule under the pane's divider

Color unlabeled code blocks like inline code

Improved code blocks that don't name a language: they are now colored like inline code, so commands stand out from the surrounding text

Fix /btw reading running tools as failed

Improved /btw asked while a tool is still running: the side question now knows that call is in progress instead of reading it as a failed one

Name the hook that timed out

Improved the UserPromptSubmit hook timeout notice and the debug log to name which hook command timed out

Rank filename matches above folder matches

Improved @ file suggestions: a file whose name contains the query now ranks above one that only matches across its folder names

Polish artifact page rendering

Improved artifact pages: no Print buttons, confirm dialogs or device features the viewer blocks, email and phone details shown as text, and dark mode that reaches form controls and scrollbars

Block renamed key files in /ultrareview

Improved /ultrareview uploads: renamed copies of key files, such as id_rsa copy or kubeconfig (1).yaml, now also stay on your machine

Explain --debug-file in messaging warning

Improved the cross-session messaging startup warning to explain that --debug-file writes a debug log to a path you choose

▤ In the docs

Limit legacy effort levels to old models

Changed an effort level saved before /effort became per-model to no longer apply to newly released models such as Opus 5.5; they start at their default until you pick a level

Let /effort override launch-default effort

Changed Opus 4.7, Opus 4.8 and Fable 5 to stop holding their launch-default effort over /effort in -p or the Agent SDK, a project, managed or --settings effortLevel, or a per-model level

Name arrow keys in /autocompact hint

Changed /autocompact's footer hint to name the left and right arrow keys, the keys that adjust other ordered values

Name Space in /fast footer

Changed /fast's footer to name Space as the toggle key

▤ In the docs

Restrict runner git hook file access

Self-hosted runner: Changed git in lifecycle hooks to ignore hook folders and programs named in the runner's shared git files; local-path and git:// remotes there now need GIT_ALLOW_PROTOCOL

Block marketplaces that imitate reserved names

Changed plugin marketplaces whose name imitates a reserved marketplace name to be refused when added, and to stop loading if one was already added

Stop agent hooks running as PermissionRequest

Changed PermissionRequest hooks: an agent-type hook no longer runs there, since its answer could never allow or deny the request; it now shows an error pointing to command or http hooks

[VSCode] Mark large pastes in chat

Improved pasted-text handling in the chat box: a paste over 800 characters or over 2 line breaks is now marked so Claude can tell it from what you typed

[VSCode] Strip invisible characters from prompts

Improved prompt handling in the chat box: invisible Unicode formatting and tag characters are removed from pasted text with a notice, and from anything else before it is sent

▤ In the docs

[VSCode] Open new tabs beside your editor

Changed "Open in New Tab" to open Claude beside the editor group you are working in rather than after the last group

[Claude Code on the web] Relocate Routines setting

Changed the admin Routines on/off setting to live under Admin settings > Capabilities > Remote sessions; the Claude Code admin page now links to it

[Claude Code on the web] Save files the app can open

Improved cloud sessions viewed in the Claude app: Claude now saves files meant for you where the app can open them

[Claude Tag] Explain GitHub connection failures

Improved the GitHub banner in Claude Tag admin settings to say why GitHub isn't connected: not signed in, app not linked or not installed, sign-in expired, or SSO not authorized

[Code Review] Report truncated REVIEW.md instructions

Improved the Code Review check run to say when REVIEW.md instructions were cut or left out of a review for exceeding a size limit, naming the file and the limit

Bug fixes

70
More changes (64) Fewer changes

Fix auto mode retry loop on declines

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

Fix auto mode retries on no answer

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

Fix Write tool validation errors

Fixed Write calls failing validation when a model sends path, file_text, file_content or a stray description instead of file_path and content

Fix double Ctrl+C quitting dialogs

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

Fix focus clicks triggering items

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

Fix dialog text fields losing keystrokes

Fixed text fields in dialogs losing a typed letter, digit or Space to a keybinding on that key

Fix scrambled prompt line on Windows

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

Preserve Persian and Arabic ZWNJ

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

Fix voice dictation stop and cancel

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

Fix cache miss on host-app model switch

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

Fix resumed fork subagent tool caching

Fixed resumed fork subagents rebuilding their tool list instead of re-sending the one they first used, which broke prompt caching for that agent

Hide subagent hand-back preamble

Fixed subagent hand-back messages showing an internal provenance preamble when expanded outside verbose mode

Fix stale plugin commit after update

Fixed installed_plugins.json keeping the install-time commit after updating a plugin from a GitHub repository or git URL that tracks a branch or tag

Fix skills wrongly moved to trash

Fixed skills in ~/.claude/skills/ being moved to ~/.claude/skills/.trash/ when a manifest.json in that folder listed their names

Fix feedback survey hover highlight

Fixed the session feedback survey showing no hover highlight on light and ANSI themes

Fix /workflows flashing before opening run

Fixed /workflows briefly showing a one-row list before opening the only run

Fix mouse wheel scroll in selection lists

Fixed the mouse wheel not scrolling selection lists with hidden options (such as /model and /permissions) in fullscreen mode

Distinguish off skills from failed plugins

Fixed a skill you switched off showing the same red X as a plugin that failed to load in /plugin and /skills; off now shows a dim hollow circle

Fix multi-select description indentation

Fixed multi-select option descriptions being indented under the option number instead of under the label

Fix search box border in fullscreen

Fixed the search box in /plugin, /skills and /mcp losing its right border in fullscreen mode

Unify MCP warning icons

Fixed /mcp showing a triangle in the server list but a warning icon in the detail view for the same server; the list, detail views and /plugin now all show the warning icon

Fix Home and End keys in lists

Fixed Home and End doing nothing in the /config settings list and in selection lists such as /model, /memory and permission prompts

Fix PgUp/PgDn wrapping in /skills

Fixed PgUp/PgDn in the /skills menu wrapping past the first or last skill instead of stopping there

Stop Tab from changing config values

Fixed Tab silently changing the selected setting's value in the /config list; it now does nothing there

Fix advisor API error behind proxies

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

Fix crash from malformed MCP notice

Fixed a session failing on every turn and /compact when its saved history held a malformed notice about MCP tools that could not be loaded

Fix crash resuming malformed transcripts

Fixed a crash when resuming a session whose saved transcript holds a malformed system message or a memory-saved notice without its file list

Fix hang on named-pipe settings files

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

Fix /config crash from legacy values

Fixed /config crashing and some on/off preferences being misread when a preference that has moved to settings.json still holds a value like null or "false" in ~/.claude.json

Fix lost messages to finishing subagents

Fixed messages sent to a background subagent being silently lost in headless and SDK sessions when the subagent was finishing its turn

Fix subagent reports lost to compaction

Fixed a finished subagent's report being lost when the conversation that launched it was compacted before the report was read

Fix background subagent LSP tool access

Fixed background subagents being unable to use the LSP tool when an LSP plugin is active

Fix false failures on benign exits

Fixed background shell tasks reporting benign non-zero exits (e.g. grep with no matches) as failures

Fix background session failures from NUL

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

Reduce Ctrl+C presses to exit

Fixed Ctrl+C needing three or four presses to exit while background subagents are running; two presses now exit

Preserve IDE selection on prompt return

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

Fix stashed shell prompts losing mode

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

Fix blank screen in claude agents

Fixed claude agents showing a blank, unresponsive screen instead of an error when the temp directory is full, not writable or owned by another user

Fix re-added MCP servers needing auth

Fixed an MCP server re-added under the same name after claude mcp remove still showing as needing authentication instead of reconnecting

Fix marketplace auto-update credential handling

Fixed background plugin marketplace auto-update ignoring git credential helpers, so private-repo marketplaces were re-cloned every run or never updated

Fix plugin update losing commit info

Fixed claude plugin update clearing a plugin's recorded commit and moving it to version "unknown" when the official marketplace's snapshot file is a link or too large

Explain Artifact tool disappearing

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

Fix /ultrareview status after stopped reviews

Fixed /ultrareview reporting a stopped cloud review as completed or as an error to retry, and waiting out the full timeout when its session was deleted or the signed-in account changed

Fix stale context usage after compact

Fixed the Claude app showing a missing or stale context usage figure for Remote Control and cloud sessions right after /compact or /clear

Fix diff view dropping committed files

Fixed the Claude app's diff view for Remote Control and cloud sessions dropping a branch's committed files whenever there are also uncommitted changes

Fix auth failures after token rotation

Fixed cloud and self-hosted runner sessions failing with "Authentication failed" after waiting out a long overload during which the session's access token was rotated

Fix truncated memory writes in Cowork

Fixed memory write conflicts in Cowork sessions showing Claude only the start and end of a memory file over about 10,800 characters, so the retried write dropped the middle

Fix lifecycle-hook commit signing

Self-hosted runner: Fixed lifecycle-hook commits failing to sign under --configure-git

Fix cleanup deleting relocated folders

Windows: Fixed background cleanup deleting a directory symlink or junction used to relocate ~/.claude/session-env, image-cache or another cleaned-up folder

Fix lost finish signal at runner retire

Self-hosted runner: Fixed a turn that ended right at a --retire-at release losing its finished signal; the runner now briefly waits for the turn to be reported before stopping the session

Revert ctrl+l clearing the transcript

Reverted ctrl+l / cmd+k in fullscreen mode clearing the transcript view (added in 2.1.260); they redraw the screen again

[VSCode] Fix stale effort chip

Fixed the effort chip showing a stale saved effort level instead of the level the session runs at

[VSCode] Fix startup hang from Python extension

Fixed Claude Code never starting when the Python extension hangs while activating; it now starts after 60 seconds without the Python environment

[VSCode] Add auto mode to plan approval

Fixed the plan approval card never offering auto mode: when auto mode is available, its first option is now "Yes, and use auto mode", as in the terminal

[VSCode] Fix arrow-key nav after archiving

Fixed arrow-key navigation in the session list stopping after archiving or unarchiving a session from the keyboard

[VSCode] Hide paste markers on reopen

Fixed paste marker lines showing in your own messages after reopening a session

[Claude Code on the web] Fix GHES token expiry

Fixed gh and GitHub API calls inside a cloud session on a GitHub Enterprise Server repository failing after about eight hours; the token now renews automatically

[Claude Code on the web] Fix routines using stale edits

Fixed a routine that resumes an existing session running with its old prompt and name when it was edited moments before the scheduled run started

[Claude Code on the web] Disable broken external file links

Fixed file links in a cloud session transcript that point outside the session's working directory opening a file card that never loads; they're now disabled and say why

[Claude Code on the web] Fix stale prompts blocking retries

Fixed auto mode refusing to retry a tool call because an approval prompt that expired unanswered, or was superseded by a newer message, had been recorded as your rejection

[Claude Tag] Fix routines failing on Enterprise Grid

Fixed scheduled routines silently failing to run in Slack workspaces that were connected to Claude before the workspace joined its Enterprise Grid

[Claude Tag] Retry file scans on outage

Fixed Claude asking you to re-upload a Slack file when a brief file-scanning outage, not the file, was the problem; it now retries the scan and is told when the scanner is down

[Claude Tag] Fix bullets starting with symbols

Fixed a bullet in Claude's Slack reply whose text starts with +, - or * rendering as an empty bullet with a stray nested item; it now shows as one bullet with the character kept

[Claude Tag] Name the failed setup script

Fixed the Slack notice for a failed cloud environment setup script sometimes being a generic "mention me to retry"; it now names the setup script and says to fix it first

Removed & reverted

1
All changes (1) Fewer changes
Change details