Claude Code 2.1.84
`TaskCreated` hook — fires the moment a task is created via `TaskCreate`, giving orchestrators a synchronous interception point to record, route, or gate new tasks before they run. This is the most agentic primitive in the release; every other addition is either env-var tuning or hardening.
New primitives
PowerShell tool (Windows opt-in)toolExecutes PowerShell commands on Windows, parallel to Bash on Unix
ANTHROPIC_DEFAULT_{OPUS,SONNET,HAIKU}_MODEL_SUPPORTSenv-varOverrides effort/thinking capability detection for pinned default models on Bedrock/Vertex/Foundry
ANTHROPIC_DEFAULT_{OPUS,SONNET,HAIKU}_MODEL_NAME / _DESCRIPTIONenv-varCustomizes the `/model` picker label for third-party model deployments
CLAUDE_STREAM_IDLE_TIMEOUT_MSenv-varConfigures the streaming idle watchdog threshold (default 90s)
TaskCreated hookhookFires when a task is created via `TaskCreate`
WorktreeCreate HTTP hook output (hookSpecificOutput.worktreePath)hookAllows an HTTP hook to return the created worktree path in `hookSpecificOutput.worktreePath`
allowedChannelPlugins managed settingsettingTeam/enterprise admins can define a channel plugin allowlist
paths: YAML list in rules/skills frontmattercapabilityRules and skills `paths:` frontmatter now accepts a YAML list of globs instead of a single string
Workflow recipes
TaskCreated fires at task creation and WorktreeCreate HTTP now returns the worktree path to the hook server — together they let a remote hook server intercept both ends of an agentic sub-session: the task that owns the work, and the worktree it runs in. This closes the loop on remote orchestration: you can correlate task ID to worktree path, enforce policy (e.g. only allow tasks for approved repos), log both events to the same audit record, and inject environment before the subagent ever starts.
Configure an HTTP hook server that handles both TaskCreated (record task metadata, check policy, optionally abort) and WorktreeCreate (provision the worktree, return worktreePath, and staple the worktree to the task record). The orchestrator now has a correlated task↔worktree audit trail with a single interception point per subagent launch. Extend with a TaskCompleted handler to close the audit record.
When running Claude Code against Bedrock or Vertex with pinned model ARNs, capability detection and streaming reliability are the two most common breakage points in automated pipelines. These two env-vars address both simultaneously without code changes: MODEL_SUPPORTS tells the harness which effort/thinking capabilities the pinned model actually has (preventing silent fallback or wrong-mode selection), and STREAM_IDLE_TIMEOUT_MS prevents the streaming watchdog from firing prematurely on high-latency Bedrock endpoints that have longer inter-token gaps than the 90s default covers.
In a CI pipeline targeting Bedrock, set ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTS=thinking,extended-context (matching the pinned model's actual capability profile) alongside CLAUDE_STREAM_IDLE_TIMEOUT_MS=180000 to double the watchdog window for Bedrock p99 latency. Combine with _MODEL_NAME/_DESCRIPTION for human-readable /model picker labels in shared team environments. The result is a Bedrock pipeline that selects the right execution mode, doesn't false-timeout, and shows operators the actual model name in the UI.
Agentic relevance
The `TaskCreated` hook is the release's primary agentic primitive — it closes a previously missing interception point in the task lifecycle, enabling orchestrators to gate, log, or route tasks the instant they are created rather than only reacting after execution. The `WorktreeCreate` HTTP hook output field (`worktreePath`) completes the HTTP-hook worktree handshake, allowing remote hook servers to participate in worktree provisioning workflows. The `paths:` YAML list in rules/skills frontmatter is a low-noise but real capability improvement for agents managing scoped rule routing across multi-path subtrees.
Hardening & fixes (33)
- Added `x-client-request-id` header to API requests for debugging timeouts
- Added idle-return prompt nudging users back after 75+ minutes to `/clear`
- Deep links (`claude-cli://`) now open in the preferred terminal
- MCP tool descriptions and server instructions capped at 2KB to prevent context bloat from OpenAPI-generated servers
- MCP servers configured both locally and via claude.ai connectors are deduplicated (local wins)
- Background bash tasks stuck on interactive prompts surface a notification after ~45 seconds
- Token counts ≥1M display as "1.5m" instead of "1512.6k"
- Global system-prompt caching now works when `ToolSearch` is enabled
- Fixed voice push-to-talk key leaking characters into text input; transcripts now insert at correct position
- Fixed up/down arrow keys unresponsive when a footer item is focused
- Fixed `Ctrl+U` (kill-to-line-start) being a no-op at line boundaries in multiline input
- Fixed null-unbinding a default chord binding still entering chord-wait mode
- Fixed mouse events inserting literal "mouse" text into transcript search input
- Fixed workflow subagents failing with API 400 when outer session uses `--json-schema` and subagent also specifies a schema
- Fixed missing background color behind certain emoji in user message bubbles
- Fixed "allow Claude to edit its own settings for this session" permission not sticking for users with `Edit(.claude)` allow rules
- Fixed hang when generating attachment snippets for large edited files
- Fixed MCP tool/resource cache leak on server reconnect
- Fixed startup performance issue where partial clone repos (Scalar/GVFS) triggered mass blob downloads
- Fixed native terminal cursor not tracking text input caret (IME/CJK, screen readers)
- Fixed spurious "Not logged in" errors on macOS from transient keychain read failures
- Fixed cold-start race where core tools could be deferred without bypass active, causing Edit/Write to fail with InputValidationError
- Improved detection for dangerous removals of Windows drive roots
- Improved interactive startup by ~30ms (parallel `setup()`)
- Improved startup for `claude "prompt"` with MCP servers (REPL renders immediately)
- Improved Remote Control blocked reason message (specific instead of generic)
- Improved p90 prompt cache rate
- Reduced scroll-to-top resets in long sessions
- Reduced terminal flickering on animated tool progress
- Changed `#123` bare references to not auto-link; only `owner/repo#123` becomes a link
- Hidden slash commands unavailable for current auth setup instead of shown
- [VSCode] Rate limit warning banner with usage percentage and reset time
- Stats screenshot (Ctrl+S in /stats) now works in all builds and is 16x faster
Raw changelog
## 2.1.84
- Added PowerShell tool for Windows as an opt-in preview. Learn more at https://code.claude.com/docs/en/tools-reference#powershell-tool
- Added `ANTHROPIC_DEFAULT_{OPUS,SONNET,HAIKU}_MODEL_SUPPORTS` env vars to override effort/thinking capability detection for pinned default models for 3p (Bedrock, Vertex, Foundry), and `_MODEL_NAME`/`_DESCRIPTION` to customize the `/model` picker label
- Added `CLAUDE_STREAM_IDLE_TIMEOUT_MS` env var to configure the streaming idle watchdog threshold (default 90s)
- Added `TaskCreated` hook that fires when a task is created via `TaskCreate`
- Added `WorktreeCreate` hook support for `type: "http"` — return the created worktree path via `hookSpecificOutput.worktreePath` in the response JSON
- Added `allowedChannelPlugins` managed setting for team/enterprise admins to define a channel plugin allowlist
- Added `x-client-request-id` header to API requests for debugging timeouts
- Added idle-return prompt that nudges users returning after 75+ minutes to `/clear`, reducing unnecessary token re-caching on stale sessions
- Deep links (`claude-cli://`) now open in your preferred terminal instead of whichever terminal happens to be first in the detection list
- Rules and skills `paths:` frontmatter now accepts a YAML list of globs
- MCP tool descriptions and server instructions are now capped at 2KB to prevent OpenAPI-generated servers from bloating context
- MCP servers configured both locally and via claude.ai connectors are now deduplicated — the local config wins
- Background bash tasks that appear stuck on an interactive prompt now surface a notification after ~45 seconds
- Token counts ≥1M now display as "1.5m" instead of "1512.6k"
- Global system-prompt caching now works when `ToolSearch` is enabled, including for users with MCP tools configured
- Fixed voice push-to-talk: holding the voice key no longer leaks characters into the text input, and transcripts now insert at the correct position
- Fixed up/down arrow keys being unresponsive when a footer item is focused
- Fixed `Ctrl+U` (kill-to-line-start) being a no-op at line boundaries in multiline input, so repeated `Ctrl+U` now clears across lines
- Fixed null-unbinding a default chord binding (e.g. `"ctrl+x ctrl+k": null`) still entering chord-wait mode instead of freeing the prefix key
- Fixed mouse events inserting literal "mouse" text into transcript search input
- Fixed workflow subagents failing with API 400 when the outer session uses `--json-schema` and the subagent also specifies a schema
- Fixed missing background color behind certain emoji in user message bubbles on some terminals
- Fixed the "allow Claude to edit its own settings for this session" permission option not sticking for users with `Edit(.claude)` allow rules
- Fixed a hang when generating attachment snippets for large edited files
- Fixed MCP tool/resource cache leak on server reconnect
- Fixed a startup performance issue where partial clone repositories (Scalar/GVFS) triggered mass blob downloads
- Fixed native terminal cursor not tracking the text input caret, so IME composition (CJK input) now renders inline and screen readers can follow the input position
- Fixed spurious "Not logged in" errors on macOS caused by transient keychain read failures
- Fixed cold-start race where core tools could be deferred without their bypass active, causing Edit/Write to fail with InputValidationError on typed parameters
- Improved detection for dangerous removals of Windows drive roots (`C:\`, `C:\Windows`, etc.)
- Improved interactive startup by ~30ms by running `setup()` in parallel with slash command and agent loading
- Improved startup for `claude "prompt"` with MCP servers — the REPL now renders immediately instead of blocking until all servers connect
- Improved Remote Control to show a specific reason when blocked instead of a generic "not yet enabled" message
- Improved p90 prompt cache rate
- Reduced scroll-to-top resets in long sessions by making the message window immune to compaction and grouping changes
- Reduced terminal flickering when animated tool progress scrolls above the viewport
- Changed issue/PR references to only become clickable links when written as `owner/repo#123` — bare `#123` is no longer auto-linked
- Slash commands unavailable for the current auth setup (`/voice`, `/mobile`, `/chrome`, `/upgrade`, etc.) are now hidden instead of shown
- [VSCode] Added rate limit warning banner with usage percentage and reset time
- Stats screenshot (Ctrl+S in /stats) now works in all builds and is 16× faster