What changed
Claude Code 2.1.265 shipped on September 8, 2026. It is mostly fixes (34 of them), and the clearest thread running through them is keeping the request’s prefix stable: resuming a foreground-spawned subagent and agent teammates on later turns both broke prompt-cache reuse, and the advisor tool’s decision was being remade per request. The rest cluster around plugin loading — path containment checks and the errors reported when a folder cannot be read — and around where enterprise telemetry is sent. Four things are new, including --plugin-dir pointing at a folder of plugins and a 1 GB cap on tool results saved to disk.
New features
-
--plugin-dircan point at a folder of plugins--plugin-dircould only point at a single plugin. It can now point at a folder of plugins: each child folder with a manifest loads, and children added or removed while running are picked up. -
A 1 GB cap on tool results saved to disk
A very large tool result was written to disk in full, with no bound on how much space it took. Saved results are now capped at 1 GB, and the in-conversation preview says when a saved file was truncated.
-
user.emailanduser.groupsin Claude Desktop and Cowork telemetryTelemetry that Claude Desktop and Cowork send through a Claude apps gateway lacked these fields, so it could not be read on the same terms as terminal sessions. Both are now included, matching terminal sessions.
-
[VSCode] Automatic archiving of inactive sessions
Untouched sessions accumulated in the session list. Sessions inactive for a set period are now archived automatically, controlled by a new “Archive inactive sessions” setting that defaults to 14 days.
Key improvements
-
--worktreestartup on large repositoriesOn a large repository, creating a new worktree made startup noticeably slow. The new worktree is now checked out in parallel (git 2.32+).
-
/workflowsagent detailIt was hard to tell what an agent inside a workflow was doing. Tool calls are now marked running, failed or done, the subagent’s task list is shown when it has one, and Enter unfolds the listed calls with their inputs and results.
-
Slash commands typed mid-prompt
Typing a slash command partway through a prompt produced a single suggestion with no way to see the alternatives, and a plugin skill was not found by its bare name. Matches now show in a list (Tab opens it outside fullscreen), and a plugin skill is now found by its bare name.
-
Remote MCP servers that need sign-in
Listing such a server was enough for Claude Code to register an OAuth client with it. It no longer registers one until you actually authenticate.
-
The time to resume long sessions that read many files
Sessions that had read many files took a long time to resume. That time is now shorter.
-
The error shown when an image over the size limits cannot be decoded
The message cited only the limit, leaving the cause and the remedy unstated. It now names the cause and how to fix it.
-
The Artifact tool’s read of an artifact someone else wrote
Instructions embedded in the artifact could be relayed through the summary. The summary now treats the page as untrusted content and flags embedded instructions rather than relaying them.
-
The
.claudefolder permission option’s wordingThe option did not say what granting it actually allows. It now says it allows editing files in the project’s
.claudefolder (or~/.claude) for the session. -
forceLoginGatewayUrlmachines are gateway sessions from startupWith a gateway URL set in managed settings, a leftover claude.ai login or API key on the machine could still be used. Such machines are now Claude apps gateway sessions from startup, like
forceLoginMethod: "gateway", and a leftover credential is not used. -
Image processing uses the runtime’s built-in image support
The CLI extracted a native image module to the temp directory on startup. It now uses the runtime’s built-in image support instead, so nothing is extracted.
-
Plugin display metadata prefers the marketplace entry
The Installed tab and
claude plugin detailscould show a name or description differing from the marketplace listing. Both now prefer the marketplace entry overplugin.json, filling gaps fromplugin.json. -
OpenTelemetry export from Claude apps gateway sessions
Gateway sessions always exported through the gateway’s relay. They now export directly to a collector the gateway’s managed settings name in
OTEL_EXPORTER_OTLP_ENDPOINT; sessions without a named collector still use the relay.
Bug fixes
Resuming sessions & the prompt cache
- Resuming a foreground-spawned subagent changing its tool list and system prompt prefix, which broke prompt-cache reuse for that agent.
- Agent teammates and resumed subagents moving
SubagentStarthook context and preloaded skills out of the prompt prefix on later turns, which broke prompt-cache reuse. - The advisor tool and its instructions being re-decided per request from the request’s model; the decision is now made once and announced in the conversation when it changes.
- Resume after the previous process died while a tool was running: the last prompt is no longer rewritten, and the interrupted tool call is kept and marked interrupted.
- Resumed sessions showing long model-facing recovery instructions in “background task didn’t finish” notices instead of a short status line.
- Resuming a workflow run after its container restarted; a resume whose run journal is missing now fails with a clear error instead of rerunning every agent.
Remote Control, remote & cloud sessions
- Remote Control sessions sending the end-of-turn signal before the reply’s last message, which could show a reply as finished in the Claude app before its last part arrived.
/clearfrom Remote Control waiting on SessionStart hooks and on open terminal dialogs before completing.- Background (
--bg) sessions occasionally being retired mid-turn when a message arrived just before the idle timeout. - Remote sessions keeping their sandbox container alive while a connector approval or sign-in link waits for you.
- Some claude.ai connectors in cloud sessions showing as needing authentication even though they are connected in claude.ai — servers that answer an unsupported request with HTTP 401.
- Non-interactive sessions (
-pwith stream-json input, Agent SDK, cloud sessions) resetting the shell working directory at each new user message; acdnow persists across turns. - VS Code and SDK sessions occasionally requiring re-login when a session was closed while refreshing its token.
Plugins
- A plugin path containing a backslash bypassing the symlink containment check on macOS and Linux.
- Plugin directories whose names begin with two dots being wrongly refused as outside the plugin root.
- A plugin’s default component folder that the OS cannot check, such as a symlink loop, being silently skipped; it is now reported in
/pluginwith the error code. /pluginDiscover/Browse andclaude plugin list --json --availableshowing no description or display name for marketplace plugins whose metadata lives only in theirplugin.json./add-dir <subdirectory>refusing to load a subdirectory’s agents when managed settings lock only skills to plugins, and promising agents when only agents are locked.
Input & UI
- Syntax-highlighted code in permission prompts and messages sometimes omitting a character after a Ruby
?, Erlang$, or Perl$sigil. - The fullscreen transcript jumping by one row whenever the slash-command or
@-file suggestion list opened or closed. - Two-key keyboard shortcuts cancelling silently when the second key arrived more than a second later, as happens inside tmux; they now wait 3 seconds and show a notice when they time out.
- The
/configdialog changing height when switching between its tabs.
Commands & settings
/model opusplan[1m]being rejected with “Model not found”./modelclaiming a model was “saved as your default” when the settings file couldn’t be written; it now says the save failed and why.- Claude Code’s own git status and diff probes running clean filters configured by a nested repository inside the working tree.
- Artifact publish accepting connector tool names the connector doesn’t expose; the publish is now refused when none of the declared tools exist, and warned when only some don’t.
- MCP servers configured as
httpthat only speak the legacy HTTP+SSE transport never connecting; Claude Code now falls back to SSE as the MCP spec describes. - Forked skills (
context: fork) not streaming their kickoff prompt and, with--forward-subagent-text, their text turns as progress events in stream-json. - The
claude-apiskill’s error-code reference: model access failures return 404 and unavailable beta headers return 400, not 403.
Enterprise environments & the gateway
- The Claude apps gateway’s OTLP telemetry relay pausing all forwarding to a collector for 30 seconds after it rejected a few payloads as malformed or too large.
/loginshowing “no gateway URL is configured” when re-run in a session that signed in to a Claude apps gateway set by managed settings.
Windows
- Read, Write and Edit refusing every file (“symlink resolution changed after permission was checked”) when running inside an AppContainer or restricted-token sandbox.
[VSCode]
- The sidebar chat coming back blank after Reload Window or a restart when the conversation had been open for more than 10 minutes.
- The timeline dot sitting below the text on the “Remote Control is active” message.
Notes
- Machines with
forceLoginGatewayUrlin managed settings ignore leftover credentials — they are Claude apps gateway sessions from startup, so a leftover claude.ai login or API key is not used and you may need to sign in again after upgrading. - Telemetry from Claude apps gateway sessions may take a different route — when the gateway’s managed settings name a collector in
OTEL_EXPORTER_OTLP_ENDPOINT, sessions export to it directly instead of through the relay; sessions without a named collector still use the relay. - Tool results saved to disk are capped at 1 GB — anything past that is not saved, and the in-conversation preview says when a saved file was truncated.
- The parallel
--worktreecheckout requires git 2.32+ — older versions keep the previous behavior. - Two-key shortcuts now wait 3 seconds instead of 1 — this is aimed at environments like tmux where the second key arrives late and the shortcut used to cancel silently; a notice is shown when one times out.
- Pointing
--plugin-dirat a folder loads each child folder with a manifest — pointing it at a single plugin still works, and children added or removed while running are picked up.