Announcement2.1.283
Claude Code 2.1.283 release
Version 2.1.283 adds new features including gateway hint headers for request grouping, model availability management settings, expanded observability with MCP tool outputs in OpenTelemetry spans, and a /doctor prompt-audit command. It also includes numerous bug fixes across SDK sessions, MCP servers, plugin validation and loading, keybindings, Git operations, and remote control functionality.
- Added
x-claude-code-prompt-idto the gateway hint headers so LLM gateways can group the requests that serve one user prompt; opt in withCLAUDE_CODE_GATEWAY_HINT_HEADERS=1 - Added
availableModelsMatchmanaged setting: with"exact", anavailableModelsentry allows only the model version it names, so new releases stay blocked until listed - Added
deniedModelsmanaged setting to block specific models, even whenavailableModelsallows them - Added MCP tool, WebFetch and WebSearch outputs to the
tool.outputOpenTelemetry span event whenOTEL_LOG_TOOL_CONTENT=1 - Added
/doctor prompt-audit(also/checkup prompt-audit) to audit your CLAUDE.md files, skills, agents and commands for prompting patterns written for older models - Added click-to-expand for truncated messages from your other sessions in fullscreen mode
- Added
pathto--plugin-dirload-failure entries in the stream-jsonsystem/initplugin_errors, naming the directory that did not load - Added an opt-in
load_test_modeblock to the Claude apps gateway config: requests are built and signed but not sent upstream, and clients get a canned reply, so a deployment can be load tested - Added a
mantleupstream provider to the Claude apps gateway for Amazon Bedrock's Mantle endpoint - Fixed SDK sessions losing a deferred tool call or finished tool result when a turn ended early, a held approval prompt after a worker restart, and a non-streaming fallback's
result.usage - Fixed MCP progress notifications being discarded once a long-running tool call moved to the background; the background task now shows the latest progress
- Fixed stdio MCP servers being left running when the session ended while they were still starting
- Fixed a brief HTTP 404 from a stateless remote MCP server (for example a proxy mid-redeploy) leaving that server unusable for the rest of the session while still shown as connected
- Fixed MCP sign-in for a server with no valid URL failing with an opaque SDK error;
/mcpno longer offers Authenticate for such servers - Fixed the weekly Fable limit not appearing in
/usageand the VS Code usage meters when telemetry is disabled - Fixed
/modelaccepting Sonnet 4.6 or Sonnet 5 with[1m]when the id carried a date or-v1:0suffix, in the cases where the plain id was refused - Fixed
/modelpicker showing a hardcoded Haiku version and price whenANTHROPIC_DEFAULT_HAIKU_MODELpins a different model - Fixed dynamic workflows started during a model fallback running every agent on the fallback model instead of retrying the configured model
- Fixed
DISABLE_PROMPT_CACHING_HAIKUhaving no effect when Haiku is the session's main model - Fixed
claude plugin validatesaying Claude Code accepts a plugin or marketplace name it cannot install; such names inmarketplace.jsonnow fail validation - Fixed
claude plugin validatepassing plugins whoseoutputStyles,themes,monitors, orlspServerspaths are missing or point outside the plugin directory - Fixed
claude plugin detailsshowing 0 MCP servers for plugins that declare their servers inplugin.json - Fixed
claude plugin marketplace removenot saying which installed plugins it uninstalled with the marketplace; it now lists them - Fixed
claude plugin uninstallremoving the other of two installed plugins whose ids differ only in case, with its options and secrets, when the one named had noenabledPluginsentry at that scope - Fixed plugins that declare no version being silently restored at their source's newest commit, not the installed one, when their cached files were missing
- Fixed user-installed plugins and marketplaces failing to load with "cache-miss" after the home or config directory was moved, for example in bind-mounted devcontainers
- Fixed
installed_plugins.jsonshowing no plugins when it holds a record under an invalid plugin id; such a file loads again - Fixed
installed_plugins.jsonbeing rewritten, losing records, when it holds a record this version cannot read;claude plugincommands now name the record and say how to recover - Fixed permission dialogs in screen-reader mode reading quoted commands and paths as if they were the dialog's own text
- Fixed
/contextnot counting MCP server instructions: they now appear as their own row and count toward the total - Fixed markdown links in the Warp terminal rendering as plain text instead of clickable hyperlinks
- Fixed
claude mcp add,add-json, andremovereporting success when the user or local config file could not be written, for example inside a sandbox - Fixed the first words of a reply in a cloud session sometimes appearing late instead of streaming as Claude writes them
- Fixed Claude's built-in keybindings guide saying chords time out after 1 second instead of 3, and calling
cmdan alias ofmeta, which could producecmd+shortcuts most terminals never send - Fixed
keybindings.jsonsilently accepting a misspelled modifier such asctl+k; it now warns in the debug log and suggests the fix - Fixed footer hints still saying "Enter to view" after
footer:openSelectedwas rebound or unbound inkeybindings.json - Fixed keys typed quickly together (type-ahead, key repeat, bursts over ssh or tmux) sometimes being handled against stale state
- Fixed worktree checkouts failing certificate verification (for example on Git LFS downloads) when the CA certificate is passed to git as
GIT_CONFIG_COUNTenvironment pairs - Fixed sandboxed
gitasking credential helpers to store the sandbox proxy's login, which printed "failed to store" - Fixed managed
sandboxsettings being ignored entirely when one nested value was invalid; the invalid value now fails closed and the rest of the block still applies - Fixed Claude's edits to its own auto-memory notes being blocked as sensitive-file writes when Claude Code was started in a subdirectory of a git repository
- Fixed Remote Control being unavailable on paid plans when telemetry is turned off with
DISABLE_TELEMETRYorDO_NOT_TRACK - Fixed the
/remote-controlmenu cutting its QR-code hint mid-word in narrow terminals - Fixed vim mode
.dropping a Shift+Enter newline, leaving the cursor inside an accented letter, and repeating an older change after3Jor Visual-modeJon the last line - Fixed vim mode cursor placement: recalling a prompt over 10,000 characters in normal mode no longer leaves the cursor past the end, and
Vthenpnow lands on the first non-blank - Fixed vim mode
Jjoining lines with different spacing than Vim (such as a space before)or after a tab), and3Jor Visual-modeJon the last line not moving the cursor as Vim does - Windows: Fixed the PowerShell tool letting
cmd /c rd,rmdir,delorerasedelete drive roots, the home folder and other folders thatRemove-Itemrefuses - Improved the
/mcptool list: it shows more tools at once, scrolls with the page keys and mouse, and marks tools your organization blocked with a warning icon - Improved MCP tool results: images returned by MCP tools are now also saved to a file, so Bash, Read and other tools can open them
- Improved
/tasks: rows show a status icon, the name and whole facts, the title and key hints stay on screen with many tasks, and the list gains paging keys, the mouse wheel and clicks - Improved lists in
/help,/hooks,/copy,/chrome,/memory,/ide,/release-notes,/rewind,/diff,/remote-env,/pluginand other pickers with page keys, mouse wheel and clicks - Improved lists beside a search box, such as
/skillsand/artifacts, to draw their pointer dim while the search box has the keys, so only one pointer is highlighted - Improved the compaction spinner: its timer now starts when compaction begins and it counts the summary's tokens as they stream, replacing the percentage bar
- Improved the browser page shown after signing in to an MCP server: centered layout, dark mode, and new artwork
- Improved the Skill tool's reply when a skill belongs to a plugin that failed to load, so Claude tells you the plugin could not be loaded instead of calling the skill uninstalled
- Improved
prompt-auditon Claude Code configuration: stale paths, stale commands and contradicting instruction files now lead the report, and thinking keywords that Claude Code documents are kept - Improved recovery from an
installed_plugins.jsonthat cannot be read at all: its contents are kept in a file beside it before it is rebuilt, andclaude plugin listnames that file - Improved artifact database reads: an ordered query that returns a full page now says it is one page and how to read the rest
- Improved first-reply latency: a pattern-compile step that ran at the end of a session's first reply now runs while the reply streams in
- Improved first-request latency by reusing the preconnected API connection
- Improved startup:
claude -pand Claude Code Remote no longer load the interactive UI, and the auto-mode classifier's rules and the Artifact tool load on first use instead of at launch - Improved startup for claude.ai accounts whose Artifact tool features aren't known yet, as on a first run: the prompt no longer waits up to 1.5 s to check them; the first message waits if needed
- Changed interactive sessions on third-party providers or with telemetry off to start in auto mode when no permission mode is configured;
permissions.defaultModestill overrides it - Changed the
/ultrareviewlaunch dialog to say that reviewing a local branch may upload uncommitted changes to tracked files - Changed the
/modelpicker's Opus row and the Default model's name to drop "(1M context)" where Opus already has a 1M context window; the window is unchanged - Changed prompt suggestions in the terminal to appear less often after 20 in a row go unused; using one brings them back
- Changed
--system-promptand--append-system-promptto accept their text and-fileforms together; the file's text comes first - Changed
Skill(anthropic-skills:<name>)deny rules to also block that skill when Claude Desktop delivers it as a plugin, andSkill(skill:<name>)denies to match the skill's alias and display name - Changed
/rewindand/difflists to move on the same keybinding actions as every other list (select:*);messageSelector:*/diff:*rebinds still work - Changed the
/workflowsrun list to size itself like other lists: half the terminal inline, and it keeps its title on screen when the prompt shows below - Changed
claude plugin evalto require git 2.31 or later when git is installed; a run on an older git is refused with a message naming the version - Changed artifact watching: a watch that was armed automatically (not one you asked for) now ends after 3.5 hours with no activity; publishing or watching the artifact again re-arms it
- Self-hosted runner: Changed lifecycle hooks' git to skip a repository's Git LFS
pre-pushhook, ignore a writable systemcore.hooksPath, and not sign commits without--configure-git - Self-hosted runner: Changed
GIT_SSL_CAINFOandGIT_SSL_NO_VERIFYunder Anthropic-managed git: the runner's own git always verifies Anthropic's git route, and warning lines say what applies where - Reverted the 2.1.282 reservation of the
claude-ainame: skills, commands, workflows and MCP servers' skills and prompts so named load again, andSkill(claude-ai:*)rules are ordinary prefix rules - [VSCode] Fixed the permission mode indicator showing Default while the session kept running in auto or bypass mode after an automatic switch out of it failed; the switch is now retried until it lands
- [VSCode] Fixed a session teleported from the web dropping the messages sent while Claude was working
- [VSCode] Fixed a Web session staying hidden from the session list, and an empty chat opening in its place, when an older version had saved an empty local copy of it
- [VSCode] Fixed a reopened session splitting a turn at a message Claude received mid-turn, such as an automatic continuation
- [VSCode] Fixed a reloaded session showing a rewound-away turn, or only the rows before a compaction
- [VSCode] Fixed the footer's agents pill drawing its icon off-center, with the status dot against the edge, in narrow panels
- [VSCode] Fixed the chat input showing its text slightly below the cursor and selection after pasting lines that end with a line break into a long prompt
- [Cloud sessions] Improved adding a repository to a running cloud session: a private repository your GitHub account can read but not push to now attaches for reading
- [Cloud sessions] Fixed cloud sessions occasionally redoing an already-finished step, such as posting a duplicate comment or push, after recovering from a server-side restart
- [Cloud sessions] Changed new routine schedules to default to a few minutes past the hour, with a note that routines set exactly on the hour can start several minutes late
- [Claude Tag] Added a "Channels Claude can search" admin setting that limits Claude's Slack search to public channels it has been added to, set per organization, workspace or channel
- [Claude Tag] Added a Back to Slack button on the page shown after connecting your Claude account, returning you to the thread you started from
- [Claude Tag] Fixed a channel's configure page listing no connectors or plugins when the channel gets its access bundle through an attach rule; rule-attached bundles are now shown
- [Claude Tag] Fixed access-bundle repository search missing repositories on GitHub App installs that are limited to a large list of selected repositories
- [Claude Tag] Fixed Claude occasionally posting the same reply twice when a new message interrupted it mid-reply
- [Claude Tag] Fixed channel routines that stopped running in older private channels whose Slack channel ID changed, for example after a Slack Connect share
- [Claude Tag] Fixed conversations in a channel set to "Channel only" all ending when a non-guest member joined and Slack was slow to confirm their membership
- [Code Review] Fixed "@claude review" requests going silent when GitHub failed to return the pull request: the request is retried once, and a comment explains if it still fails
- [Code Review] Fixed billing for a review that stopped at its time limit with nothing verified: it now shows as incomplete, isn't charged, and is retried once
releasefeaturesbugfixesmcpgateway
Source: original entry ↗