What changed
Claude Code 2.1.267 shipped on September 9, 2026. It is mostly fixes (41 of them), and the largest group concerns the tool list and system prompt prefix being rewritten mid-conversation and on resume. An MCP server re-sending a tool, a tool disappearing mid-conversation, switching models with /model, and a connector reconnecting at a different moment than before each changed the request’s prefix, costing prompt-cache reuse and discarding earlier extended thinking. The rest cluster around how artifact publishes fail, and around returning to the safe behavior when managed settings can’t be read or a credential has expired. Three things are new, including the maxEffortLevel setting that caps the effort level.
New features
-
The
maxEffortLevelsettingThe effort level was the user’s pick, with no way to cap it centrally.
maxEffortLevel, set top-level or per model undermodelSettings, now caps the effort level on every provider, including Bedrock, Vertex and Foundry; users can still pick a lower level. -
--system-prompt-snapshot offA conversation reuses the system prompt it recorded, so edits to the prompt text did not reach a conversation already under way.
--system-prompt-snapshot offnow renders the system prompt fresh on every request instead — for iterating on prompt text. -
[Claude Tag] A “Use a custom connector” link on the preset connection forms
Opening a preset connection form in Claude Tag admin settings meant starting over to switch to a custom connection. The forms now carry a “Use a custom connector” link, so you can switch without starting over.
Key improvements
-
The
/diffpanelOpening the panel flashed “0 files changed” and a spinner before settling. That no longer happens, and the panel’s empty state is centered.
-
The Bash tool’s description guidance
Claude’s description of a command it runs sometimes just echoed the command. The guidance now asks Claude to describe what the command does in plain words.
-
Guidance when a clipboard command fails inside the sandbox
Clipboard commands such as
pbcopyfail inside the sandbox, with nothing said about what to do next. Claude now suggests/copyinstead. -
--resumefirst-render time for sessions with many Bash tool callsSessions with many Bash tool calls took a long time to draw their first screen on resume. That time is now shorter.
-
Prompt input responsiveness
Keystrokes occasionally waited a frame behind spinner or streaming repaints. They no longer do.
-
Prompt-cache stability
Subagents and sessions started with
--system-promptor--append-system-promptre-rendered the system prompt and tool definitions each time, changing the request’s prefix. They now record both once and reuse them. -
Artifact tool publish errors
A refused publish reported only that it failed. The message now says why and what to do about it.
-
Self-hosted runner:
--use-anthropic-git-proxyA runner using this flag was invisible to the server. It is now reported to the server at registration, and a warning prints for each session that still clones through the legacy git proxy.
-
Gateway: 429 responses from
forward_user_identityupstreamsWhen an upstream that received a forwarded user email returned a 429, the proxy failed over to the next upstream, so its per-user limits did not hold. The 429 is now returned as-is to the developer whose email was forwarded.
Bug fixes
The tool list & the prompt cache
- Earlier reasoning being dropped when an MCP server re-sends, or a built-in tool re-renders, a tool the model already loaded.
- A tool that disappears mid-conversation, from a disconnected MCP server or an upgrade, rewriting the tool list and discarding earlier thinking.
- A background worker forked from a conversation adding
EnterWorktreeto the conversation’s tool block mid-session, which broke prompt-cache reuse. - Mid-session MCP and plugin tools being added to the tool list in sessions without ToolSearch, which broke prompt-cache reuse; supported models now receive them as deferred definitions.
- Switching models with
/modelre-sending every tool definition (a prompt-cache miss); commit and PR attribution text now arrives as a conversation note that updates on model changes. - Resumed sessions rewriting the inline tool set when an MCP connector reconnects at a different moment than before.
- Resumed sessions re-rendering tool descriptions instead of replaying the recorded ones when the first turn ran a tool.
- Prompt-cache misses and dropped extended thinking when a claude.ai connector’s tools change between a session and its resume.
- Resumed sessions rewriting earlier MCP tool announcements (and dropping extended thinking) before their connectors reconnect.
- A prompt-cache break when a print-mode (
-p) conversation is resumed interactively: the system prompt prefix no longer changes.
Resuming sessions
- Resuming a session after
/compactor another slash command ran via-p --resume: a spurious “Continue from where you left off.” turn is no longer inserted. - Resuming a large session (transcript over 5 MB): parallel tool calls and their hook output are no longer dropped from the reloaded conversation.
Remote Control, remote & cloud sessions
- Cowork scheduled tasks in the cloud failing at startup for organizations whose managed settings require sandboxing.
/contextand other local command output rendering blank on mobile clients.- Remote Control clients that join a Claude Desktop or VS Code session showing a stale permission mode until it was changed again.
claude remote-controlexiting and dropping every attached session when its server credential expires (about 30 days after start); the host now re-registers and keeps going.
Input & UI
- shift+enter and option+backspace not working after reconnecting to a tmux or ssh session inside an agent view.
- The dim last-prompt header not appearing at the top of the conversation when scrolling up in fullscreen mode.
- The usage-limit warning flickering on and off during a session when requests for different models or modes report different limit windows.
Commands & tools
- Workflow
agent()calls with large output schemas being refused in auto mode instead of being checked by the safety classifier. - Artifact publishes cut off by a dropped connection mid-upload: they now retry once when Claude Code can tell the upload never completed, instead of reporting an unknown outcome.
- Artifact publish failing with an unhelpful error when the page file isn’t valid UTF-8 or contains a replacement character (U+FFFD); the error now names the line and column to fix.
effort:frontmatter on custom commands, skills, and subagents being ignored on models whose default effort is still pinned (Opus 4.7, Opus 4.8, Fable 5).claude agents@directory menu not listing repositories created after the session started.
Enterprise environments & the gateway
- A marketplace entry path containing a backslash bypassing the containment check for fetched marketplaces on macOS and Linux.
- Expired AWS or Google Cloud credentials under a host app such as Claude Desktop retrying ten times with a generic “request failed” before the re-authenticate error appeared.
- Managed
allowedHttpHookUrls,httpHookAllowedEnvVarsandallowedChannelPluginsadmitting everything, not nothing, when unreadable. /loginon machines whose managed settings require Claude apps gateway sign-in: Esc now closes the dialog instead of doing nothing.
[VSCode]
- The extension host hanging at 100% CPU when forking, editing an earlier message, or rewinding in a conversation whose saved transcript contains a cyclic parent link.
- Pasting a screenshot on WSL2/WSLg inserting raw image bytes into the chat input; the image is now attached when the clipboard provides it, otherwise the paste is ignored.
- Chat diff blocks always rendering with a dark editor theme; they now follow the active VS Code color theme, including high contrast.
- Mixed right-to-left and English text rendering in the wrong order while typing in the message input.
- Accepting an edit in the diff view on a file with Windows (CRLF) line endings failing with “String not found in file”.
- @-mentions dropping files whose paths contain spaces.
- The sessions list view failing to load in windows connected over Remote-SSH when the workspace folder exists only on the remote host.
- Runaway ripgrep processes when viewing files in large or symlink-heavy workspaces.
[Claude Code on the web]
- GitHub Enterprise Server sessions showing your GitHub account as disconnected once its token expired; PR and issue operations now refresh it automatically.
ghand GitHub API calls failing in organizations without the Claude GitHub App; they now use your connected GitHub account and say so when none is connected.
[Claude Tag]
- Claude replying “The API rejected the request as invalid” when the organization has run out of usage credits; the reply now says so and explains how to add more.
- Thread requests to edit or delete a message Claude posted at the channel’s top level being answered with a correction instead of reaching the session that posted it.
Connecton Tool access requests under Admin settings > Review requests failing with “Authorization failed” or showing the requested access bundle as deleted.
Notes
maxEffortLevelis set top-level or per model undermodelSettings— it caps the effort level on every provider, including Bedrock, Vertex and Foundry, and users can still pick a lower level.--system-prompt-snapshot offis for iterating on prompt text — it renders the system prompt fresh on every request instead of reusing the conversation’s recorded prompt.- Managed allowlists now fail closed —
allowedHttpHookUrls,httpHookAllowedEnvVarsandallowedChannelPluginsadmit nothing, not everything, when unreadable. A malformed managed settings file now blocks instead of allowing, so check that these entries read cleanly after upgrading. claude remote-controlsurvives its server credential expiring — the credential expires about 30 days after start, and the host now re-registers rather than exiting and dropping every attached session.effort:frontmatter now applies on models whose default effort is still pinned — Opus 4.7, Opus 4.8 and Fable 5.- Mid-session MCP and plugin tools arrive as deferred definitions — on supported models, to stop the tool-list rewrite that broke prompt-cache reuse in sessions without ToolSearch.
- Self-hosted runners print a warning for each session cloning through the legacy git proxy —
--use-anthropic-git-proxyis now reported to the server at registration.