Skip to content

Claude Code 2.1.269

98changes
  • Add /output-style [name] to list and switch output styles from any surface, including Remote Control and headless sessions.
  • Add a Hooks dialog in VS Code to view, add, edit, and remove hooks without leaving the IDE.
  • Add a Permission rules dialog in VS Code to list, add, and remove permission rules without leaving the IDE.
  • Add claude plugin eval to run a plugin's eval suite and get scored, reproducible results.
  • Speed up long sessions by no longer re-processing the whole transcript to build tool-use summaries.

New features

14
More changes (9) Fewer changes

Tag OpenTelemetry data with repository info

Added OTEL_METRICS_INCLUDE_REPOSITORY to tag OpenTelemetry metrics and events with vcs.* repository attributes; commit events get vcs.ref.head.* with OTEL_LOG_TOOL_DETAILS

▤ In the docs

Extend the gateway model discovery timeout

Added CLAUDE_CODE_GATEWAY_MODEL_DISCOVERY_TIMEOUT_MS to extend the LLM gateway /v1/models discovery timeout (default 3s)

▤ In the docs

Suggest /focus in the spinner tip

Added a spinner tip suggesting /focus for a view with just your prompt, a one-line work summary, and the response

Raise the Workflow tool's agent concurrency limit

Added CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS (1-256) to raise the Workflow tool's per-run concurrent agent limit for inference-bound fan-outs

▤ In the docs

[VSCode] View and stop sub-agents from a map

Added an agent map: an "N agents" footer pill opens a map of the session's sub-agents with per-agent cards, Stop agent, and read-only transcripts

[VSCode] Show live subagent progress in Focus view

Added live progress rows for running subagents under the tool-call groups in Focus view

[VSCode] Cancel switching accounts

Added a Cancel button to the Switch account screen that returns to your session as the current account

[Claude Code on the web] Take back queued messages

Added taking back a queued message in a cloud session before Claude reads it: remove it from the queue, or press Esc or Up, and the text returns to the message box

[Claude Tag] Confirm before Connect all or Disconnect

Added a confirmation dialog before Connect all or Disconnect on a GitHub installation in admin settings, to guard against accidental organization-wide changes

Improvements

17
More changes (16) Fewer changes

Open /diff fully rendered

Improved the /diff panel to open fully rendered in one step instead of showing a loading state first

Refine CJK prompt suggestion filtering

Improved prompt suggestion filtering for Japanese, Chinese and Korean text: mixed-script and single-word suggestions are kept, and meta or evaluative text is dropped as it is for English

Name the plugin skill in Unknown skill errors

Improved the Skill tool's "Unknown skill" error to name the plugin skill's full name when a bare name matches exactly one plugin skill

Extend keyboard support to more terminals

Improved keyboard support over SSH and in unrecognized terminals: terminals that answer the kitty keyboard query (such as foot and Alacritty 0.16+) now get Shift+Enter and Ctrl+Shift shortcuts

▤ In the docs

Use late-connecting MCP servers sooner

Improved first-party sessions with telemetry disabled: an alwaysLoad MCP server that finishes connecting mid-conversation is usable on the next turn without a tool-search round trip

Post /ultrareview comments directly

Changed /ultrareview --post to post the PR comment directly when the findings arrive and print the comment link, instead of starting a second cloud session to post it

Skip approval for scratchpad database reads

Changed artifact database reads that save into the session scratchpad so they no longer stop for working-folder approval

Rename synced skills to anthropic-skills:<name>

Changed skills synced from claude.ai in cloud sessions to be named anthropic-skills:<name>, matching Claude Desktop; the bare name still works when nothing else uses it

▤ In the docs

[VSCode] Write for the intended audience

Improved documents and messages written for someone other than the user: Claude now writes them for that audience and names it at the top of its reply

[VSCode] Improve accessibility across the UI

Improved screen reader and keyboard accessibility in the slash-command menu, @-mention menu, output-style picker, Send/Stop button, permission and question cards, and onboarding checklist

▤ In the docs

[VSCode] Remove the current-file chip with X

Changed the current-file chip in the message box: an X now removes it, replacing the Hide toggle

[Claude Code on the web] List every cloud environment

Changed the Cloud environments admin page to list every environment instead of capping each table at five rows behind a Show more control that could be unreachable

[Claude Code on the web] Offer upgrades to Free-plan users

Changed claude.ai/code for Free-plan users to open the plans page with a path to upgrade, instead of a "Disabled by org admin" page with no way forward

[Claude Tag] Speed up admin settings load time

Improved load time of the admin settings page and its Slack channel picker, most noticeably for organizations with many channels or several connected workspaces

[Claude Tag] Reply to routines in existing threads

Improved scheduled routines in Slack channels: a routine run can now reply in an existing thread instead of always posting a new top-level channel message

[Claude Tag] Show progress timestamps in local time

Improved the timestamp on Claude's live progress checklists to show each reader's local time and how long ago it was updated, instead of a fixed UTC time

Bug fixes

66
More changes (61) Fewer changes

Preserve cache after auto-resumed replies

Fixed the prompt cache being partially invalidated on the turn after a response was cut off at the output-token limit and automatically resumed

Fix terminal key handling regressions

Fixed F1/F2/F4 not working in kitty-protocol terminals and Delete in st, Alt+arrows acting as Escape in rxvt-unicode, and Shift+punctuation typing the unshifted key in WezTerm (regression in 2.1.247)

Hide terminal capability-query replies

Fixed the terminal's replies to capability queries (^[[?1;2c) appearing as stray text at startup in some terminals

Fix blank rows after resizing fullscreen

Fixed rows at the top or bottom of the transcript going blank in fullscreen after resizing the terminal

Refresh git status after compaction

Fixed the git status Claude is told after a compaction: it is now the current status, not the one from the start of the session

Connect synced plugin MCP servers on resume

Fixed synced plugin MCP servers not connecting when a remote session resumes

Preserve replies when resuming headless turns

Fixed resumed headless sessions losing a turn's replies when the model was switched or a request was retried mid-turn

Clean up background task list text

Fixed terminal escape codes, line breaks and oversized text from a background task's on-disk record reaching the task list and task notifications when work is resumed

Attach CMYK JPEG images

Fixed CMYK JPEG images failing to attach with "cannot decode"; they are now converted and resized like other JPEGs

Name gRPC collectors in the approval dialog

Fixed the managed settings approval dialog not naming the collector for a gRPC telemetry endpoint set without a scheme

Clarify headersHelper consent prompt URLs

Fixed plugin headersHelper consent prompts showing a URL path that could be misread as a different host

Fix redacted paths in plugin errors

Fixed plugin errors showing [redacted URL] in place of a relative Windows path with a folder name that starts with @

Show the cursor in more text fields

Fixed missing cursor in the permission-rule, auto-mode-rule, add-directory, session-rename and feedback-review text fields when the terminal's native cursor is enabled

Background sessions on repeated /fork clicks

Fixed repeated clicks on a /fork receipt, each under a second apart, never backgrounding the session right away while it waited for the current tool to finish

Stop LSP servers that reject shutdown params

Fixed plugin LSP servers that reject shutdown params (e.g. rust-analyzer) being left running at session end; exit is now sent even if shutdown fails

Respect no-attribution CLAUDE.md rules

Fixed the attribution reminder overriding a CLAUDE.md or memory rule against commit and pull request attribution; lines set by managed settings still apply

Suggest prompts for unspaced languages

Fixed prompt suggestions being dropped for text in Japanese, Chinese, Thai and other languages written without spaces between words

Detect synchronized-output support correctly

Fixed synchronized output being assumed from the terminal's name in GNOME Terminal and Konsole versions that do not support it

Report path-scoped denials in stream-json

Fixed permission_denials in --output-format stream-json results omitting Read, Edit and Write calls blocked by a path-scoped deny rule

Show correct status for SDK and Desktop sessions

Fixed sessions run through the SDK or the desktop app showing an unknown status in other sessions' agent list

Fall back /insights to the session model

Fixed /insights failing on Bedrock, Vertex, Foundry, and gateway deployments whose account can't reach the default Opus model by using the session model there instead

Show contextual notifications on Bedrock/Vertex

Fixed Claude Desktop sessions using Bedrock, Vertex, or a gateway not getting the contextual "what Claude needs" turn-end notification text

Skip reconnects for reordered MCP query params

Fixed MCP servers reconnecting when an updated config only changed the order of the server URL's query parameters

Fix prompt box borders for long agent names

Fixed the prompt box's top border splitting into extra lines when viewing a background agent whose name or description has line breaks or is wider than the terminal

Recover from stuck auto-compaction failures

Fixed sessions getting permanently stuck on "Prompt is too long" when auto-compaction had no complete earlier exchange to summarize (mostly Agent SDK sessions with very large prompts)

Retry or explain stalled /goal runs

Fixed /goal runs silently stalling after API errors, network drops, or token limits: the goal now retries with backoff, or pauses and says why, including until a usage limit resets

Avoid early prompt-cache misses in the cloud

Fixed prompt cache misses in cloud sessions by waiting briefly for server configuration before the first request

Flag fabricated tool calls in /btw answers

Fixed /btw answers that contained made-up tool calls and output: the side question is now told not to write them, and any that appear are flagged as not executed

Limit how old a resumed turn can be

Fixed CLAUDE_CODE_RESUME_INTERRUPTED_TURN re-running a turn that had failed with an API error over 6 hours earlier, or longer ago than CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS when set

Load managed plugins in headless and Desktop

Fixed organization plugins enabled through managed settings not loading in headless sessions and on Claude Desktop (once Desktop bundles this CLI version); they load from the next session

Restrict access to extracted plugin files

Fixed plugin archives extracted for a session being readable by other local users, extracted files keeping world-writable bits from the archive, and stale files surviving re-extraction

Filter stray startup characters over slow links

Fixed stray characters like 22c, or a terminal's color or version reply, being typed into the prompt at startup over slow connections (ssh, browser terminals)

Hide the stray cursor under the interface

Fixed the terminal's block cursor showing under the interface in rxvt-unicode after leaving or re-entering fullscreen

Hide the cursor after the external editor

Fixed the cursor block staying visible after returning from an external editor in fullscreen mode on rxvt-unicode

Fix double redraw after the external editor

Fixed the interface being drawn twice after returning from an external editor (Ctrl+G) outside fullscreen mode

Fix double redraw in Konsole

Fixed the interface being drawn twice in Konsole after returning from an external editor

Keep PowerShell background commands running

Windows: Fixed PowerShell tool commands sent to the background stopping when Claude Code exits

[VSCode] Separate plain-text prompt turns

Fixed Focus view showing a turn started by a delivered plain-text prompt, such as a scheduled task's, as part of the previous turn

[VSCode] Show cache clock minutes when narrow

Fixed the footer's prompt cache clock hiding its minutes when the panel is narrow

[VSCode] Filter sessions by CLAUDE_CONFIG_DIR

Fixed the session list keeping sessions from the default folder when CLAUDE_CONFIG_DIR is set in a settings file or the environmentVariables setting

[VSCode] Fix late-loading plan previews

Fixed a plan preview that finished loading late sometimes hiding its comment box or showing an older plan

[VSCode] Block comments after the tab closes

Fixed a plan preview accepting comments that went nowhere after its Claude tab closed

[VSCode] Show compacted sessions as cold on reopen

Fixed the prompt cache clock and reopen notice for a session compacted after its last reply and then closed, which now reads as cold when reopened

[VSCode] Sync renames to claude.ai/code

Fixed a session renamed in the extension while Remote Control is on keeping its old name on claude.ai/code

[VSCode] Reflect Remote Control resets from terminal

Fixed the "Enable Remote Control for all sessions" toggle keeping its last position after the setting was reset to default from a terminal

[VSCode] Count restored tabs as open

Fixed restored Claude tabs not counting as open in the session list after a window reload until clicked, and their row opening a second tab

[VSCode] Keep dismissed usage warnings after switching back

Fixed Switch account making a tab forget its dismissed usage-limit warnings when you sign back in as the same account

[VSCode] Preserve renames made during long turns

Fixed a session rename being replaced by the generated name after a window reload when the session was renamed during a long turn

[VSCode] Remove stale weekly limit rows

Fixed the sidebar usage meter keeping a stale per-model weekly limit row after the account loses that limit

[VSCode] Fix delayed @-mention insertion

Fixed a rare case where an @-mention sent with the keyboard shortcut while a new chat view was still starting could be inserted into the input long after the keystroke

[VSCode] Stop the session list jumping on open

Fixed the session list jumping down when the Account & usage header appeared a moment after opening the Claude side bar

[Claude Code on the web] Fix /model default in restricted orgs

Fixed /model default in a cloud session leaving every later message failing in organizations that restrict which models Claude Code can use

[Claude Code on the web] Prevent duplicate one-off runs

Fixed one-off scheduled routines occasionally running a second time after a transient server error

[Claude Code on the web] Fix early-finish routine runs

Fixed routine runs that use subagents sometimes being treated as finished too early, which could skip the retry after a real failure or start a duplicate run

[Claude Code on the web] Fix file links from subfolders

Fixed file links in cloud session transcripts opening a GitHub 404 when Claude was working from a subfolder of the repository

[Claude Tag] Retry rate-limited failure notices

Fixed threads occasionally going silent after a failed turn because the failure notice was dropped when Slack briefly rate-limited it; the notice is now retried

[Claude Tag] Decline switches to disabled models

Fixed Claude accepting a switch to a model your organization hasn't enabled and then quietly answering with a fallback model; it now declines and says an admin can enable it

[Claude Tag] Render tables when files are attached

Fixed a table posting as raw pipe text when Claude attached files to the same message; the table now posts as a normal reply and the files follow with a plain caption

[Claude Tag] Ignore !restart with no active session

Fixed @Claude !restart at the top level of a channel where Claude isn't active starting an unrelated conversation; it now privately says there is nothing to restart

[Claude Tag] Name plugins in Slack access settings

Fixed plugin rows in Slack access settings showing an unlabeled raw ID with no way to turn the plugin off; they now show its name and link to the bundle that manages it

[Claude Tag] Name the Slack channel as the audience

Fixed the shared-session banner and Share dialog on sessions started from Slack claiming the whole organization could open the link; they now name the Slack channel's audience

Removed & reverted

1
All changes (1) Fewer changes
Change details