Claude Code 2.1.83: Policy Fragments, Transcript Search

2.1.83 brings managed policy fragments, transcript search, credential scrubbing, and fixes 40+ bugs including startup freezes, large file diffs, and macOS hangs.

Claude Code 2.1.83: Policy Fragments, Transcript Search

TL;DR

  • Managed settings now support drop-in policy fragments via managed-settings.d/ directory
  • New hook events (CwdChanged, FileChanged) for reactive environment management
  • Transcript search with / key, plus credential scrubbing for subprocess environments
  • Major fixes: UI freezes on startup, large file diffs timing out, macOS exit hangs, and 30+ other bugs

New

  • Managed settings drop-in directorymanaged-settings.d/ lets teams deploy independent policy fragments that merge alphabetically instead of maintaining a single JSON file.
  • Hook events for environment changesCwdChanged and FileChanged events enable reactive management like direnv integration.
  • Sandbox failure modesandbox.failIfUnavailable setting exits with error when sandbox is enabled but cannot start, instead of silently running unsandboxed.
  • Credential scrubbing for subprocessesCLAUDE_CODE_SUBPROCESS_ENV_SCRUB=1 strips Anthropic and cloud provider credentials from Bash tool, hooks, and MCP stdio server environments.
  • Transcript search — Press / in transcript mode (Ctrl+O) to search; use n/N to step through matches.
  • Image reference chips — Pasted images now insert [Image #N] chips at cursor for positional reference in prompts.
  • Agent auto-submit — Agents can declare initialPrompt in frontmatter to auto-submit a first turn.
  • Rebindable commandschat:killAgents and chat:fastMode now rebindable via ~/.claude/keybindings.json.
  • External editor aliasCtrl+X Ctrl+E now opens external editor (readline-native binding; Ctrl+G still works).
  • Protocol handler controldisableDeepLinkRegistration setting prevents claude-cli:// protocol handler registration.
  • Rewind picker in VSCode — Press Esc twice or use /rewind to open keyboard-navigable rewind picker.

Fixed

  • UI freeze on startup when voice input enabled — native audio module now loads lazily (1–8 second freeze eliminated).
  • Large file diffs causing hangs — diffs now time out after 5 seconds and fall back gracefully.
  • Claude Code hanging on exit on macOS.
  • Screen flashing blank after idle periods.
  • Startup regression where Claude Code waited ~3s for claude.ai MCP config fetch.
  • --mcp-config CLI flag bypassing allowedMcpServers/deniedMcpServers managed policy enforcement.
  • Claude.ai MCP connectors (Slack, Gmail, etc.) unavailable in single-turn --print mode.
  • caffeinate process not terminating on exit, preventing Mac from sleeping.
  • Bash mode not activating when tab-accepting !-prefixed command suggestions.
  • Stale slash command selection showing wrong highlighted command.
  • /config menu showing both search cursor and list selection simultaneously.
  • Background subagents becoming invisible after context compaction, causing duplicate spawns.
  • Background agent tasks stuck in "running" state when git or API calls hang during cleanup.
  • --channels showing "not currently available" on first launch after upgrade.
  • Uninstalled plugin hooks continuing to fire until next session.
  • Queued commands flickering during streaming responses.
  • Slash commands sent to model as text when submitted during message processing.
  • Scrollback jumping when collapsed read/search groups finish offscreen.
  • Scrollback jumping to top when model starts or stops thinking.
  • SDK session history loss on resume caused by hook progress/attachment messages forking parentUuid chain.
  • Copy-on-select not firing when releasing mouse outside terminal window.
  • Ghost characters in height-constrained lists when items overflow.
  • Ctrl+B interfering with readline backward-char — now only fires when foreground task can be backgrounded.
  • Tool result files never cleaned up, ignoring cleanupPeriodDays setting.
  • Space key swallowed for up to 3 seconds after releasing voice hold-to-talk.
  • ALSA library errors corrupting terminal UI on Linux without audio hardware (Docker, headless, WSL1).
  • Voice mode SoX detection failing on Termux/Android.
  • Remote Control sessions showing as Idle in web session list while actively running.
  • Footer navigation selecting invisible Remote Control pill in config-driven mode.
  • Memory leak in remote sessions where tool use IDs accumulate indefinitely.
  • Mouse tracking escape sequences leaking to shell prompt after exit.
  • API 400 error when pasted image queued during failing tool call.
  • MCP tool calls hanging indefinitely when SSE connection drops mid-call.
  • Remote Control session titles showing raw XML when background agent completed before first user message.
  • Remote sessions forgetting conversation history after container restart.
  • Remote sessions requiring re-login on transient auth errors instead of retrying.
  • rg ... | wc -l and similar piped commands hanging in sandbox mode on Linux.
  • Voice input hold-to-talk not activating with CJK IME full-width space.
  • --worktree hanging silently when worktree name contained forward slash.
  • [VSCode] Session history not loading correctly when reopening via URL or after restart.
  • [VSCode] "Fork conversation from here" and rewind actions failing silently after session cache goes stale.

Improved

  • Bedrock SDK cold-start latency by overlapping profile fetch with other boot work.
  • --resume memory usage and startup latency on large sessions.
  • Plugin startup — commands, skills, and agents now load from disk cache without re-fetching.
  • Remote Control session titles — AI-generated titles appear within seconds of first message.
  • WebFetch now identifies as Claude-User for site operator allowlisting via robots.txt.
  • WebFetch peak memory usage for large pages.
  • Scrollback resets in long sessions — reduced from once per turn to once per ~50 messages.
  • claude -p startup with unauthenticated HTTP/SSE MCP servers (~600ms saved).
  • Bash ghost-text suggestions now include just-submitted commands immediately.
  • Non-streaming fallback token cap (21k → 64k) and timeout (120s → 300s local) to reduce truncation.
  • Interrupting prompt before response now auto-restores input for editing and resubmission.
  • /status now works while Claude is responding instead of being queued.
  • Plugin MCP servers duplicating org-managed connectors now suppressed instead of running second connection.
  • --bare -p (SDK pattern) ~14% faster to API request.
  • MEMORY.md index now truncates at 25KB as well as 200 lines.
  • [VSCode] Spinner turns red with "Not responding" when backend hasn't responded for 60 seconds.

Changed

  • "Stop all background agents" keybinding moved from Ctrl+F to Ctrl+X Ctrl+K to stop shadowing readline forward-char.
  • Linux: now respects XDG_DATA_HOME when registering claude-cli:// protocol handler.
  • Ctrl+L now clears screen and forces full redraw — use this to recover when Cmd+K leaves UI partially blank.

Deprecated

  • TaskOutput tool — use Read on background task's output file path instead.

New Settings & Environment Variables

  • CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK — disable non-streaming fallback when streaming fails.
  • Plugin options (manifest.userConfig) now available externally — plugins can prompt for configuration at enable time, with sensitive: true values stored in keychain (macOS) or protected credentials file (other platforms).
  • Claude can now reference on-disk path of clipboard-pasted images for file operations.
  • Disabled AskUserQuestion and plan-mode tools when --channels is active.

Update via brew upgrade claude-code or download from code.claude.com.

Source: Claude Code