Skip to main content

Claude Code v2.1.280: Claude Opus 5.5 Arrives and Opus Becomes the Default on Pro and Team Standard

Claude Code v2.1.280 adds Claude Opus 5.5 as the default Opus model, makes Opus the default on Pro and Team Standard plans, stops stray y/n keys from answering dialogs, and adds new VS Code dialogs.

Claude Code v2.1.280 is a large release built around a new model: Claude Opus 5.5 arrives as the default Opus model, and Opus becomes the default model on Pro and Team Standard plans. It also changes how dialogs respond to stray key presses, adjusts how saved effort levels apply to newer models, and gives the VS Code extension several new dialogs and typed commands. The remaining entries are fixes across auto mode, background agents, plugins, fullscreen UI, Claude Code on the web and Claude Tag.

What’s New

Claude Opus 5.5 is the new default Opus model

Claude Opus 5.5 (claude-opus-5-5) is now available and is the default Opus model. The changelog lists a 1M context window and pricing of $4/$20 per million tokens, with cache reads at $0.20 per million tokens.

Opus is the default on Pro and Team Standard

The default model on Pro and Team Standard plans changes from Sonnet to Opus, matching Max, Team Premium and Enterprise.

Effort levels and newer models

An effort level saved before /effort became per-model no longer applies to newly released models such as Opus 5.5; they start at their default until you pick a level. Separately, Opus 4.7, Opus 4.8 and Fable 5 no longer hold their launch-default effort over an effort you set through /effort in -p or the Agent SDK, a project, managed or --settings effortLevel, or a per-model level.

Dialogs: Enter and Esc instead of stray y/n

A stray n no longer closes a dialog and a stray y no longer confirms one: Enter accepts and Esc cancels. To restore the old keys, bind y/n to confirm:yes/confirm:no in keybindings.json. Pressing Ctrl+C or Ctrl+D twice in most dialogs, such as /model, /config, /status and /permissions, now closes the dialog instead of quitting Claude Code, and in fullscreen mode ctrl+l / cmd+k redraw the screen again because the transcript-clearing behavior added in 2.1.260 was reverted.

Configurable MCP description cap

The new CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH environment variable changes the 2,048-character cap on MCP tool descriptions and server instructions for every MCP server in the session.

New dialogs and typed commands in VS Code

The VS Code extension adds a Status dialog (also opened by typing /status) with the session’s version, account, model and server details, a Sandbox dialog (/sandbox) for the sandbox mode, the unsandboxed fallback and excluded commands, and a Claude in Chrome dialog (/chrome) for extension status, the install, reconnect and permissions pages, and the enabled-by-default setting. Export conversation (/export) copies or saves the conversation as plain text, and the Slash commands dialog, opened by typing /skills, now shows each skill’s source, token estimate and on/off state, with a click to change it. A typed /plan switches to plan mode, sends a first planning prompt, or shows the session’s plan.

Claude Tag: Slack’s native Working indicator and Stop button

Claude’s threads in Slack channels now get Slack’s native Working indicator, Stop button and thread title; the indicator stays up until Claude finishes, and Stop interrupts the task. Claude also posts a short notice in the channel when a guest joining, or the last guest leaving, changes how Claude responds there under a Restrict or Channel only guest setting.

Fixes and Improvements

  • Permissions: Writes through a symlinked path are no longer judged by their in-tree path. The prompt names where the write actually lands, and acceptEdits, allow rules and auto mode no longer approve a write that lands outside.
  • Auto mode: When a safety check declines to review an action, auto mode now denies it once, noting that retrying won’t help, instead of retrying over and over. When a safety check gives no answer, retries back off and the turn stops with a message after ten in a row.
  • Sessions: Fixed conversations failing on every turn with a “role ‘system’ must precede an ‘assistant’ message” API error, and fixed conversations with the advisor failing every turn with API Error 400 behind a proxy or gateway that doesn’t support the advisor input tag; the request now retries without it.
  • Resume: Resuming a session with unfinished background agents, shells or workflows no longer starts a model turn on its own before you type anything.
  • Prompt caching: A model switch made from a host app (Claude Desktop, VS Code, SDK) while Claude is working no longer causes a prompt-cache miss on the next prompt, and resumed fork subagents re-send the tool list they first used instead of rebuilding it.
  • Background agents: Messages sent to a background subagent are no longer silently lost in headless and SDK sessions while it finishes its turn, and a finished subagent’s report is no longer lost when the launching conversation is compacted before the report is read.
  • Background agents: Two presses of Ctrl+C now exit while background subagents are running (previously it took three or four), and background shell tasks no longer report benign non-zero exits, such as grep with no matches, as failures.
  • Skills: Skills in ~/.claude/skills/ are no longer moved to ~/.claude/skills/.trash/ when a manifest.json in that folder lists their names.
  • Plugins: Background marketplace auto-update now honors git credential helpers, so private-repo marketplaces are no longer re-cloned every run or never updated. Marketplaces whose name imitates a reserved marketplace name are now refused when added, and stop loading if one was already added.
  • MCP: An MCP server re-added under the same name after claude mcp remove now reconnects instead of showing as needing authentication.
  • Hooks: Agent-type hooks no longer run on PermissionRequest, since their answer could never allow or deny the request; an error now points to command or http hooks. The hook_execution_complete OpenTelemetry event also gains hook output sizes and the number of oversized outputs saved to a file.
  • Fullscreen: The mouse wheel now scrolls the /skills list and selection lists with hidden options such as /model and /permissions, and a skill’s state options in /plugin can be clicked.
  • /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.
  • Voice dictation: Ctrl+C now stops dictation, Esc cancels while a transcript is processing, and holding Space no longer starts dictation from the transcript view or vim NORMAL mode.
  • VS Code: Claude Code now starts after 60 seconds without the Python environment when the Python extension hangs while activating, and the plan approval card offers “Yes, and use auto mode” as its first option when auto mode is available, as in the terminal.
  • Self-hosted runner: Git in lifecycle hooks now ignores hook folders and programs named in the runner’s shared git files; local-path and git:// remotes there now need GIT_ALLOW_PROTOCOL.
  • Windows: Background cleanup no longer deletes a directory symlink or junction used to relocate ~/.claude/session-env, image-cache or another cleaned-up folder.
  • Claude Code on the web: gh and GitHub API calls inside a cloud session on a GitHub Enterprise Server repository no longer fail after about eight hours; the token now renews automatically.

This release contains 114 changes in total; see the full changelog for the complete list.

How to Update

  1. Check your installed version: claude --version
  2. Update in place: claude update
  3. Dialogs now accept with Enter and cancel with Esc; if you relied on y/n, bind them to confirm:yes/confirm:no in keybindings.json. Newly released models such as Opus 5.5 start at their default effort until you pick a level with /effort.