Claude Code v2.1.269: Plugin Eval Suites, /output-style Switching, and Concurrent Agent Limits

✍️ OpenClawRadar📅 Published: September 12, 2026🔗 Source
Ad

Claude Code v2.1.269 landed with a plugin evaluation harness, output-style switching that works over Remote Control and headless sessions, a concurrency knob for the Workflow tool, and a long list of prompt-cache and terminal fixes.

New commands and settings

claude plugin eval runs a plugin's eval suite against Claude Code and returns scored, reproducible results as a JSON and HTML report. Run claude plugin eval --help for usage.

/output-style [name] lists and switches output styles — and it now works over Remote Control and in cloud and other headless sessions, not just interactive terminals.

When the Bash tool handles file edits, its result now includes a diff of the files the command changed. This is gated behind the bashEditDiffEnabled setting.

Two new environment variables target gateway and fan-out workloads:

  • CLAUDE_CODE_GATEWAY_MODEL_DISCOVERY_TIMEOUT_MS — extends the LLM gateway /v1/models discovery timeout (default 3s).
  • CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS (1–256) — raises the Workflow tool's per-run concurrent agent limit for inference-bound fan-outs.

Observability got two additions: OTEL_METRICS_INCLUDE_REPOSITORY tags OpenTelemetry metrics and events with vcs.* repository attributes, and with OTEL_LOG_TOOL_DETAILS commit events pick up vcs.ref.head.*.

Prompt cache fixes

Two cache-related bugs are fixed. First, the prompt cache was being partially invalidated on the turn after a response was cut off at the output-token limit and automatically resumed. Second, resuming a session after interrupting Claude mid-thought could change how earlier context was re-sent, hurting prompt-cache reuse.

Terminal and keyboard fixes

A regression from 2.1.247 broke several keybindings. Fixed in this release: F1/F2/F4 in kitty-protocol terminals, Delete in st, Alt+arrows acting as Escape in rxvt-unicode, and Shift+punctuation typing the unshifted key in WezTerm. Also fixed stray capability-query replies (^[[?1;2c) appearing at startup, blank rows at the top or bottom of the transcript after a fullscreen resize, and synchronized output being assumed on GNOME Terminal and Konsole versions that don't support it.

Ad

Session, plugin, and permission fixes

  • Deny or ask permission rules starting with ! no longer apply beyond the settings source that wrote them; a bare ! negation is ignored.
  • The git status Claude sees after a compaction is now the current status, not the one from session start.
  • Synced plugin MCP servers connect again when a remote session resumes.
  • Resumed headless sessions no longer lose a turn's replies when the model was switched or a request retried mid-turn.
  • Plugin LSP servers that reject shutdown params (e.g. rust-analyzer) now get exit sent even if shutdown fails.
  • CMYK JPEGs now attach instead of failing with "cannot decode"; they're converted and resized like other JPEGs.
  • The attribution reminder no longer overrides a CLAUDE.md or memory rule against commit and PR attribution — managed settings still apply.
  • Prompt suggestions are no longer dropped for Japanese, Chinese, Thai, and other languages written without spaces.
  • permission_denials in --output-format stream-json now include Read, Edit, and Write calls blocked by path-scoped deny rules.
  • /insights now falls back to the session model on Bedrock, Vertex, Foundry, and gateway deployments that can't reach the default Opus model.

Headless and remote sessions that reported "waiting for your input" while background agents were still running are fixed; set CLAUDE_CODE_BG_TASKS_REPORT_RUNNING=0 to restore the old behavior. A spinner tip now suggests /focus for a view with just your prompt, a one-line work summary, and the response.

📖 Read the full source: GitHub Claude-Code

Ad

👀 See Also