After the accounting release that was 2.1.268, here’s one for people building things. The list is long, but three items stand out.
Plugins can be measured now
claude plugin eval runs a plugin’s eval suite against Claude Code and returns scored, reproducible results — as JSON and as an HTML report. claude plugin eval --help shows how it’s put together.
This is the part I care most about. Ever since plugins and skills arrived, the honest answer to “does this actually work?” has usually been: vibes. You try three prompts, it looks fine, done. A reproducible score doesn’t make plugins better on its own, but it makes claims checkable. Together with the /skill-doctor report from 2.1.261, a toolkit is slowly forming that lets you evaluate a plugin collection instead of merely collecting one.
Bash shows what it touched
When the Bash tool handles file edits, the result now carries a diff of the files that changed. Controlled by the bashEditDiffEnabled setting.
Sounds minor, isn’t. A sed -i through the Bash tool used to be a black box: Claude says “done”, and you find out what really happened at the next git diff. If you work in auto mode, this hands back the oversight that Edit and Write have had all along.
In the same spirit: /output-style [name] lists and switches output styles, including over Remote Control and in cloud or headless sessions. And the spinner tips now suggest /focus — a view with just your prompt, a one-line summary of the work, and the answer.
Two prompt-cache leaks fewer
The third theme continues the last few releases. Two cases where the cache quietly cost money are fixed:
- If a response got cut off at the output-token limit and was resumed automatically, the prompt cache was partially invalidated on the following turn.
- If you interrupted Claude mid-thought and resumed the session later, the way earlier context was re-sent could change, which hurt cache reuse.
Cloud sessions now also wait briefly for server configuration before the first request, because otherwise that first hit missed.
Permissions: the exclamation mark stays home
A deny or ask rule starting with ! used to apply beyond the settings source that wrote it. It now applies only within its own source, and a bare ! negation is ignored. If you have rules like that in .claude/settings.json, go check whether they still do what you think.
Also sealed: Edit deny rules and the write-path check now cover the file a Bash tee writes, and a Bash(tee:*) allow rule no longer covers destinations outside the working directories. And plugin archives extracted for a session were readable by other local users, kept world-writable bits from the archive, and left stale files behind on re-extraction. All three gone.
Small stuff that still hurt
/goal used to stall silently after API errors, dropped connections or token limits. It now retries with backoff, or pauses and says why — including telling you when a usage limit resets. /btw sometimes invented tool calls and their output; the side question is now told not to, and anything that still shows up is flagged as not executed. And the git status Claude is handed after a compaction is the current one, not the one from the start of the session.
For fan-outs there’s CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS (1 to 256) to raise the per-run agent limit. CMYK JPEGs attach properly instead of bouncing with “cannot decode”.
VS Code gets three dialogs
The extension now has an agent map: an “N agents” footer pill opens an overview of the session’s sub-agents, with a card per agent, a Stop button, and read-only transcripts. There’s also a Hooks dialog and a Permission rules dialog, both letting you add, edit and remove entries in user, project and local settings. Managed, plugin and session rules stay read-only.
On claude.ai/code you can take back a queued message before Claude reads it. And two scheduled-run bugs are fixed: one-off routines occasionally ran a second time after a transient server error, and runs using subagents were sometimes treated as finished too early — which skipped the retry after a real failure, or kicked off a duplicate run.
My take
Three releases in a row of cache and permission work, and now a tool for checking plugins. The pattern is visible: the feature building of recent months is being caught up with by cleanup. For a codebase shipping a release most days, that’s better news than any new command.
Sources: Claude Code changelog, Claude Code release v2.1.269