2.1.136 untested · changelog-derived

Claude Code 2.1.136

**Enterprise telemetry integration and auto-mode hardening.** 2.1.136 adds environment-variable control for OpenTelemetry survey feedback and a new `hard_deny` classifier rule type for absolute permission blocking — expanding enterprise audit/compliance options and tightening auto-mode decision boundaries.

2 new primitives 2 workflow recipes 50 fixes

New primitives

CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTELenv-var

Re-enables the session quality survey for enterprises capturing responses through OpenTelemetry

Added `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` to re-enable the session quality survey for enterprises capturing responses through OpenTelemetry
settings.autoMode.hard_denysetting

Defines auto mode classifier rules that block unconditionally regardless of user intent or allow exceptions

Added `settings.autoMode.hard_deny` for auto mode classifier rules that block unconditionally regardless of user intent or allow exceptions

Workflow recipes

Enterprise Compliance Audit Loop
CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL + settings.autoMode.hard_deny

Sensitive deployments (government, regulated industries) can now wire session quality feedback directly into compliance telemetry pipelines while enforcing immutable permission boundaries that satisfy air-gapped security reviews.

Configure an agent operating in a classified environment with hard_deny rules blocking all file mutations, tool invocations, and external API calls by default. Enable CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL to automatically ship anonymized session quality metrics (latency, tool-call patterns, reasoning depth) to a compartmentalized OpenTelemetry collector. Auditors can then review both the decision boundary (what hard_deny blocked) and agent health (latency/error spikes correlating with blocked requests) in a single chain-of-custody feed.

MCP Server Resilience in Multi-Tenant Agent Fleets
MCP OAuth refresh token fix + MCP server persistence fix (from hardening)

Multi-server remote MCP fleets previously required daily re-auth and lost server configurations on session clear. These fixes unlock sustained unattended agent operation without stale-credential loops or silent server dropout.

Deploy a long-running agent service using multiple remote MCP servers (e.g., Claude Drive + Slack + Anthropic API). Previously, concurrent OAuth refresh of servers would fail, forcing agents to re-authenticate daily and losing all server connections after /clear. With 2.1.136, the agent can operate for weeks without intervention — servers persist across session clears and refresh concurrently without token collision. Combine with a cron-based /resume loop to implement true agent daemoning.

Agentic relevance

The two new primitives enable enterprise and compliance scenarios. `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` integrates session quality signals into OpenTelemetry pipelines for monitoring and audit. `settings.autoMode.hard_deny` allows agents deployed in sensitive environments to define immutable permission boundaries that override both user intent and allow-rule exceptions — critical for enforcement of security policies in multi-tenant or regulated contexts. The remaining ~60 fixes are robustness improvements with moderate indirect impact on agent reliability.

Hardening & fixes (50)

  • Fixed MCP servers configured in `.mcp.json`, plugins, and claude.ai connectors silently disappearing after `/clear`
  • Fixed a rare login loop where concurrent credential write could overwrite a freshly-rotated OAuth token
  • Fixed MCP OAuth refresh tokens being lost when multiple servers refresh concurrently
  • Fixed API error (400) when extended thinking emitted a redacted thinking block after a tool call
  • Fixed `--resume` / `--continue` not finding sessions when project path contains underscores
  • Fixed plan mode not blocking file writes when a matching `Edit(...)` allow rule exists
  • WSL2: image paste from Windows clipboard now works via PowerShell fallback
  • Fixed plugin `Stop`/`UserPromptSubmit` hooks failing when cache cleanup deletes a version still in use
  • Improved visual consistency across slash command dialogs (footer hints, dialog spacing, arrow-key styling, immediate frame rendering)
  • Fixed colors appearing at wrong positions in bash command output and markdown code blocks
  • Fixed ReasonML diffs rendering corrupted "undefined" text artifacts at word-diff boundaries
  • Fixed worktree exit dialog warning about uncommitted files in wrong directory
  • Fixed `@` file picker not matching files created mid-session in small non-git directories
  • Fixed `@`-mention file picker not finding files in directories with more than 100 entries
  • Fixed failed tool calls not being click-to-expand in fullscreen mode when truncated
  • Fixed Backspace and Ctrl+Backspace getting swapped after using Ctrl+G on persistent extended-key terminals
  • Fixed `/usage` weekly reset showing time of day instead of calendar date
  • Fixed welcome banner ellipsis causing column overflow on CJK terminals
  • Fixed `/insights` crash when session history contains tool calls with malformed input fields
  • Fixed renderer crash when a tool's collapsibility classification changes mid-session
  • Fixed `skills` entry in `plugin.json` hiding the plugin's default `skills/` directory
  • Fixed IDE shell-integration lock files not respecting `CLAUDE_CONFIG_DIR`
  • Fixed trailing whitespace in copied terminal output during streaming
  • Fixed plugin uninstall and enable/disable not matching slugs case-insensitively
  • Fixed tool error truncation marker showing negative count for surrogate-pair strings
  • Fixed env vars from `CLAUDE_ENV_FILE` SessionStart hooks going stale after `/resume` or `/clear`
  • Fixed `/branch` saving multi-line session title when given pasted multi-line name
  • Fixed stray leading space on second line of wrapped text at column boundary
  • Fixed Esc not dismissing dialogs in `/install-github-app`, `/desktop`, `/resume`, `/web-setup`
  • Fixed `/doctor` MCP schema errors not naming the missing field or source file path
  • Fixed Bash permission prompts showing internal parser diagnostic instead of user-readable explanation
  • Fixed plugin slash commands with spaces not resolving to namespaced form
  • Fixed `AskUserQuestion` discarding multi-select answers when supplied as array
  • Fixed `/clear <name>` not labeling the cleared session for `/resume`
  • Fixed `CronList` output missing qualifiers and scheduled prompt
  • Fixed "Jump to bottom" overlay leaving color artifacts on CJK characters in fullscreen mode
  • Fixed wide markdown tables leaving stale bordered render in terminal scrollback while streaming
  • Fixed pasted text being silently dropped during auto-truncation
  • Fixed `/release-notes` getting stuck on old version after failed changelog refresh
  • Fixed `/mcp` server list not scrolling when more servers than terminal height
  • Fixed mid-input slash command autocomplete not working after initial slash command
  • Fixed scrolling to bottom re-engaging auto-follow with `autoScrollEnabled: false`
  • Fixed prompt suggestions being auto-submitted by Enter on empty input
  • Fixed keyboard shortcut hints not reflecting rebound keys from `keybindings.json`
  • Fixed `/settings` language change being reverted on Escape
  • Fixed `/terminal-setup` only appearing in autocomplete on exact name match
  • Fixed "Chat about this" on `AskUserQuestion` dialog erasing question text
  • Fixed MCP tool results being invisible when server returns content blocks
  • Improved error message when `--worktree` collides with existing or stale worktree
  • Changed plugin marketplace removal key to `d` instead of `r`

Raw changelog

## 2.1.136

- Added `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` to re-enable the session quality survey for enterprises capturing responses through OpenTelemetry
- Added `settings.autoMode.hard_deny` for auto mode classifier rules that block unconditionally regardless of user intent or allow exceptions
- Fixed MCP servers configured in `.mcp.json`, plugins, and claude.ai connectors silently disappearing after `/clear` in the VS Code extension, JetBrains plugin, and Agent SDK
- Fixed a rare login loop where a concurrent credential write could overwrite a freshly-rotated OAuth token and force re-login
- Fixed MCP OAuth refresh tokens being lost when multiple servers refresh concurrently — users with several remote MCP servers should no longer need daily re-authentication
- Fixed an API error (400) when extended thinking emitted a redacted thinking block after a tool call
- Fixed `--resume` / `--continue` not finding sessions when the project path contains underscores
- Fixed plan mode not blocking file writes when a matching `Edit(...)` allow rule exists
- WSL2: image paste from Windows clipboard now works via a PowerShell fallback when xclip/wl-paste cannot read image data
- Fixed plugin `Stop`/`UserPromptSubmit` hooks failing when cache cleanup deletes a version still in use by a running session
- Improved visual consistency across slash command dialogs: standardized footer hints, dialog spacing, and arrow-key styling, and the dialog frame now appears immediately during loading instead of popping in after
- Fixed colors appearing at wrong positions in bash command output and markdown code blocks
- Fixed ReasonML diffs rendering corrupted "undefined" text artifacts at word-diff boundaries
- Fixed worktree exit dialog warning about uncommitted files in the wrong directory after worktree removal
- Fixed `@` file picker not matching files created mid-session in small non-git directories
- Fixed `@`-mention file picker not finding files in directories with more than 100 entries
- Fixed failed tool calls not being click-to-expand in fullscreen mode when their output was truncated
- Fixed Backspace and Ctrl+Backspace getting swapped after using Ctrl+G to open an external editor on terminals with persistent extended-key modes
- Fixed `/usage` weekly reset showing time of day instead of the calendar date
- Fixed welcome banner ellipsis causing column overflow on CJK terminals
- Fixed `/insights` crash when session history contains tool calls with malformed input fields
- Fixed a renderer crash when a tool's collapsibility classification changes mid-session
- Fixed a `skills` entry in `plugin.json` hiding the plugin's default `skills/` directory, and listing a file path now shows an error instead of failing silently
- Fixed IDE shell-integration lock files not respecting `CLAUDE_CONFIG_DIR`
- Fixed trailing whitespace in copied terminal output during streaming
- Fixed plugin uninstall and enable/disable not matching slugs case-insensitively
- Fixed tool error truncation marker showing a negative count for surrogate-pair strings
- Fixed env vars from `CLAUDE_ENV_FILE` SessionStart hooks going stale after `/resume` or `/clear`
- Fixed `/branch` saving a multi-line session title when given a pasted multi-line name
- Fixed a stray leading space on the second line of wrapped text at the column boundary
- Fixed Esc not dismissing dialogs in `/install-github-app`, `/desktop`, `/resume`, and `/web-setup`
- Fixed `/doctor` MCP schema errors not naming the missing field or showing the source file path
- Fixed Bash permission prompts showing an internal parser diagnostic instead of a user-readable explanation
- Fixed plugin slash commands with spaces (e.g. `/myplugin review`) not resolving to their namespaced form
- Fixed `AskUserQuestion` discarding multi-select answers when supplied as an array
- Fixed `/clear <name>` not labeling the cleared session for `/resume`
- Fixed `CronList` output missing qualifiers and the scheduled prompt
- Fixed "Jump to bottom" overlay leaving color artifacts on CJK characters in fullscreen mode
- Fixed wide markdown tables leaving a stale bordered render in terminal scrollback while streaming
- Fixed pasted text being silently dropped when a long prompt with a pasted-text placeholder was auto-truncated
- Fixed `/release-notes` getting stuck on an old version after a failed changelog refresh
- Fixed `/mcp` server list not scrolling when there are more servers than fit in the terminal
- Fixed mid-input slash command autocomplete not working after an initial slash command
- Fixed scrolling to bottom re-engaging auto-follow with `autoScrollEnabled: false`
- Fixed prompt suggestions being auto-submitted by Enter on an empty input instead of requiring Tab or arrow to accept
- Fixed keyboard shortcut hints not reflecting rebound keys from `keybindings.json`
- Fixed `/settings` language change being reverted on Escape after confirming
- Fixed `/terminal-setup` only appearing in autocomplete on exact name match instead of partial prefixes
- Fixed "Chat about this" on an `AskUserQuestion` dialog erasing the question text
- Fixed MCP tool results being invisible when the server returns content blocks
- Improved error message when `--worktree` collides with an existing or stale worktree
- Changed plugin marketplace removal key to `d` (matching delete elsewhere) instead of `r` which collided with retry