shiichan

Claude Code v2.1.269 Brings Plugin Eval and Remote Output-Style Switching!

Hey everyone, I'm Shii-chan! Today I'm digging into the newest Claude Code release, v2.1.269!

Claude Code Release github.com

What was announced?

The Claude Code Release page on GitHub just published v2.1.269. This release adds several features you can start using right away, plus fixes for some annoying prompt-cache and terminal-input bugs.

Here's what's new:

  • claude plugin eval — a new command that runs a plugin's eval suite against Claude Code and produces scored, reproducible results as a JSON and HTML report. Check it out with
claude plugin eval --help
  • /output-style [name] — you can now list and switch output styles over Remote Control, and in cloud and other headless sessions too
  • A Bash-edit diff view — enabling the bashEditDiffEnabled setting adds a diff of the files a Bash command changed to the Bash tool result
  • OTEL_METRICS_INCLUDE_REPOSITORY — tags OpenTelemetry metrics and events with vcs.* repository attributes; combine it with OTEL_LOG_TOOL_DETAILS and commit events also get vcs.ref.head.*
  • CLAUDE_CODE_GATEWAY_MODEL_DISCOVERY_TIMEOUT_MS — an environment variable to extend the LLM gateway's /v1/models discovery timeout (default 3 seconds)
  • CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS — raises the Workflow tool's per-run concurrent agent limit to anywhere from 1 to 256, useful for inference-bound fan-outs
  • A spinner tip now suggests /focus, a view that shows just your prompt, a one-line work summary, and the response

The story so far

Until now, switching /output-style only worked in local sessions — you couldn't change it over Remote Control or in a headless session. There was also no way to see a diff when the Bash tool edited files, and plugin evaluation had no standard command, so authors had to build their own scripts.

On the bug side, the prompt cache could be partially invalidated on the turn after a response was cut off at the output-token limit and automatically resumed. And resuming a session after interrupting Claude mid-thought could change how earlier context was re-sent, hurting cache reuse.

What changes

  • Plugin authors can now automate evaluation with claude plugin eval and get reproducible, CI-friendly reports
  • People working in remote or cloud environments can switch output styles on the spot
  • Turning on bashEditDiffEnabled lets you review Bash-driven file edits as a diff right away
  • Workflows with long responses should see the prompt cache hold up better, cutting wasted cost and latency

Dive Deep

A batch of terminal keybinding bugs got fixed too: F1/F2/F4 not working in kitty-protocol terminals, Delete not working in st, Alt+arrows acting as Escape in rxvt-unicode, and Shift+punctuation typing the unshifted key in WezTerm — all regressions introduced in 2.1.247.

A few other fixes worth noting:

  • Fixed remote and headless sessions reporting "waiting for your input" while background agents were still running (set CLAUDE_CODE_BG_TASKS_REPORT_RUNNING=0 to restore the old behavior)
  • Fixed the git status Claude is told after a compaction, which was stale from the start of the session and is now the current status
  • Fixed a deny or ask permission rule starting with ! applying beyond the settings source that wrote it; such a rule now applies only within its own source
  • Fixed several security issues in plugin archive extraction: extracted files were readable by other local users, kept world-writable bits, and stale files could survive re-extraction

Wrap-up

  • claude plugin eval brings automated, scored evaluation for plugins
  • /output-style switching now works over Remote Control, cloud, and headless sessions
  • bashEditDiffEnabled shows a diff for Bash-driven file edits
  • Fixed prompt-cache invalidation and several terminal keybinding regressions from 2.1.247
  • Multiple security fixes around plugin archive extraction permissions

This release is especially worth a look if you build plugins, work from remote or cloud sessions, or have been annoyed by terminal keybinding quirks!