Claude Code 2.1.261 prunes skills that eat context

Claude Code 2.1.261, released September 4, adds /skill-doctor, a command that lists the loaded skills Claude never uses and how much context each one costs. Most of the rest of the release deals with context too: how much tool output reaches the model, what breaks the prompt cache, and how tokens get counted when the counting API is down.
The release notes on GitHub run to about seventy items, and around a third of them are VS Code fixes. Here are the ones that change how you work day to day.
What does a skill cost?
Skills load in three tiers. Every skill’s description goes into context when the session starts. The full SKILL.md body loads only when the skill is triggered, and its reference files load only when the running skill asks for them. That keeps context cost tied to the current task more than to the size of the library, but the first tier is paid in every session. A skill Claude never triggers still has its description sitting in the window, turn after turn.
/skill-doctor shows exactly that: which loaded skills go unused and what they cost in context. The notes say the purpose is “so you can prune them”. The command only reports, and the pruning is still a manual job.
Two fixes in the same release go after a related cost, cache misses that come from Claude Code itself. In-process agent-team teammates were re-sending their first-turn tool and skill announcements on the second turn. That changed the request prefix and missed the prompt cache. Resuming a session also lost hook output and other context around parallel tool calls, which changed the resumed request. Both are fixed. The previous release, 2.1.260, taught /cost and the status line to name a likely cause for cache misses, such as changed tool definitions or idling past the TTL.
/context also changes how it counts. When the token-counting API is unavailable, it now uses a local estimate instead of making extra small-model requests.
More output inline
Until now, once command output or background-task output passed a certain size, Claude got only part of it inline and the rest was saved to a file. Two new settings, bashOutputMaxChars and taskOutputMaxChars, raise that threshold to as much as 128K characters. That helps when a test run or build log is long and Claude would otherwise have to go back and read the file. The cost is the same one /skill-doctor measures: everything that comes in inline takes up context.
--append-subagent-system-prompt-file reads the subagent system prompt from a file. It exists for prompts too large to pass on the command line, which is most likely to matter in scripted and CI setups that build long subagent instructions.
Retries change as well. When the API sends no response headers, the retry now waits up to API_TIMEOUT_MS (10 minutes by default) instead of another 3 minutes, and the error messages say what to change. Separately, claude -p --resume <file> no longer adopts a malformed session ID recorded in the transcript. It resumes under a fresh ID instead. A sustained high-CPU loop, which came from retrying the wake-up of a background agent that couldn’t be resumed, is also gone.
Keys, rm and auto mode
Some changes will catch muscle memory or existing config. The prompt’s word-editing keys now follow Bash: Ctrl+W deletes back to whitespace, Alt+F and Alt+D stop at the end of a word, and punctuation separates words. keybindingFlavor no longer has any effect, so if you set it, that line in your config now does nothing. The same release fixes typed or pasted characters sometimes landing out of order, or being dropped, during fast input or key repeat. It also fixes being unable to delete the character just before an inline [Image #N] chip.
Auto mode gets stricter in one specific case. A link that packs content into a public diagram renderer’s URL now counts as an upload to that site, and it is no longer auto-approved unless you asked for it. The dangerous-rm safety prompt now also catches rm -rf on positional parameters and inside double-quoted sh -c scripts.
Two quieter fixes matter on machines running more than one install. Feature flags gated to a newer version sometimes applied to an older Claude Code version on the same machine, and that no longer happens. The terminal progress indicator in iTerm2, Ghostty and ConEmu no longer shows a session as finished while a background workflow or agent is still running.
Remote Control and VS Code
Remote Control gets the biggest share of the fixes again. Sessions no longer look like they’re still working, with a stuck spinner and Stop button, after you stop a turn from a phone or browser or run a local command like /clear. The permission mode shown to an attached phone, browser or claude.ai app now matches the terminal, and the effort level from settings shows up on claude.ai instead of the default. A session pulled in with /teleport is no longer uploaded into the connected session. SendMessage to an offline session on another machine now reports that delivery is queued until that machine reconnects, where before it read as delivered. On native Windows, the inbound event stream now works behind TLS-inspecting corporate proxies. In SDK and cloud sessions, a Stop sent just after the first prompt, before the turn had started, now stops the turn instead of being ignored.
In VS Code, the larger additions are:
- an Add server form and a Remove action in the MCP servers dialog, so MCP servers can be managed without leaving the IDE;
- a model picker that is one flat list of every model, with rows for older model spellings listed last;
- a “Build a custom style” walkthrough in the Output styles menu that writes the style file and lists it right away;
- a fold button on permission and question prompts, so you can read the conversation behind them without dismissing them;
- a hollow ring in the session list for sessions open in a terminal, another VS Code window or Claude Desktop, plus “Archive session” in the right-click menu.
The /model picker and the VS Code model pill now show a model’s name instead of its raw Bedrock, Vertex AI or LLM gateway ID when Claude Code recognizes it.
For org-managed setups
Admins running Claude through the apps gateway or a cloud provider get a set of fixes. On machines whose managed settings pin forceLoginMethod: "gateway", a leftover API key or claude.ai login is now ignored and the user is asked to /login. Bedrock, Vertex AI and Foundry sessions are unaffected. A gateway 403 while loading managed settings now says Claude Code may not be enabled for the organization, where it used to advise signing in again. The gateway now reads the client IP correctly when a trusted proxy appends a port to X-Forwarded-For. With an access list set, an unreadable entry gets a 403. The gateway also stopped telling Claude Desktop to export OpenTelemetry as JSON while the CLI used protobuf, a mismatch that made protobuf-only collectors reject Desktop’s data.
On the cloud side, the Bedrock setup wizard now times out with a clear error when AWS or a credential helper never responds, instead of hanging. Its model checks also work behind a TLS-inspecting proxy. On Vertex AI with GOOGLE_APPLICATION_CREDENTIALS set, startup no longer re-runs Google Cloud project discovery or spawns extra gcloud processes. gcpAuthRefresh no longer opens a browser at startup just because the credential check was slow. When the startup fetch of claude.ai connectors times out, the CLI now retries in the background instead of leaving them missing for the whole session.
For diagnosis, /status and claude doctor now include an “Organization policy” line. When the organization’s policy fails to load, it says why, for example a proxy that doesn’t pass the endpoint through.
Up next
Claude Code’s changelog: fixes now outnumber features
“Same amount of releases, thirteen times the content.” That’s Claude Code’s changelog between April 2025 and August 2026, where bullets starting with “added” fell from 41% in July 2025 to between 6% and 10% by mid 2026.
Related stories
- Claude Code 2.1.265 loads a whole folder of plugins
- Claude Code 2.1.260 opens a live diff panel
- Claude Code 2.1.259 hands MCP servers to the whole org
- Claude Code 2.1.312 stops overwriting big CLAUDE.md files
- Claude Code 2.1.311 compacts past 200K instead of stopping
- Claude Code 2.1.310 brings Monitor to Bedrock and Vertex
Comments
No comments yet. Be the first.
Join the conversation
Sign in to leave a comment. It appears after moderation.

