# Changelog ## 2.1.110 - Added `/tui` command and `tui` setting — run `/tui fullscreen` to switch to flicker-free rendering in the same conversation - Added push notification tool — Claude can send mobile push notifications when Remote Control and "Push when Claude decides" config are enabled - Changed `Ctrl+O` to toggle between normal and verbose transcript only; focus view is now toggled separately with the new `/focus` command - Added `autoScrollEnabled` config to disable conversation auto-scroll in fullscreen mode - Added option to show Claude's last response as commented context in the `Ctrl+G` external editor (enable via `/config`) - Improved `/plugin` Installed tab — items needing attention and favorites appear at the top, disabled items are hidden behind a fold, and `f` favorites the selected item - Improved `/doctor` to warn when an MCP server is defined in multiple config scopes with different endpoints - `--resume`/`--continue` now resurrects unexpired scheduled tasks - `/context`, `/exit`, and `/reload-plugins` now work from Remote Control (mobile/web) clients - Write tool now informs the model when you edit the proposed content in the IDE diff before accepting - Bash tool now enforces the documented maximum timeout instead of accepting arbitrarily large values - SDK/headless sessions now read `TRACEPARENT`/`TRACESTATE` from the environment for distributed trace linking - Session recap is now enabled for users with telemetry disabled (Bedrock, Vertex, Foundry, `DISABLE_TELEMETRY`). Opt out via `/config` or `CLAUDE_CODE_ENABLE_AWAY_SUMMARY=0`. - Fixed MCP tool calls hanging indefinitely when the server connection drops mid-response on SSE/HTTP transports - Fixed non-streaming fallback retries causing multi-minute hangs when the API is unreachable - Fixed session recap, local slash-command output, and other system status lines not appearing in focus mode - Fixed high CPU usage in fullscreen when text is selected while a tool is running - Fixed plugin install not honoring dependencies declared in `plugin.json` when the marketplace entry omits them; `/plugin` install now lists auto-installed dependencies - Fixed skills with `disable-model-invocation: true` failing when invoked via `/` mid-message - Fixed `--resume` sometimes showing the first prompt instead of the `/rename` name for sessions still running or exited uncleanly - Fixed queued messages briefly appearing twice during multi-tool-call turns - Fixed session cleanup not removing the full session directory including subagent transcripts - Fixed dropped keystrokes after the CLI relaunches (e.g. `/tui`, provider setup wizards) - Fixed garbled startup rendering in macOS Terminal.app and other terminals that don't support synchronized output - Hardened "Open in editor" actions against command injection from untrusted filenames - Fixed `PermissionRequest` hooks returning `updatedInput` not being re-checked against `permissions.deny` rules; `setMode:'bypassPermissions'` updates now respect `disableBypassPermissionsMode` - Fixed `PreToolUse` hook `additionalContext` being dropped when the tool call fails - Fixed stdio MCP servers that print stray non-JSON lines to stdout being disconnected on the first stray line (regression in 2.1.105) - Fixed headless/SDK session auto-title firing an extra Haiku request when `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` or `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` is set - Fixed potential excessive memory allocation when piped (non-TTY) Ink output contains a single very wide line - Fixed `/skills` menu not scrolling when the list overflows the modal in fullscreen mode - Fixed Remote Control sessions showing a generic error instead of prompting for re-login when the session is too old - Fixed Remote Control session renames from claude.ai not persisting the title to the local CLI session ## 2.1.109 - Improved the extended-thinking indicator with a rotating progress hint ## 2.1.108 - Added `ENABLE_PROMPT_CACHING_1H` env var to opt into 1-hour prompt cache TTL on API key, Bedrock, Vertex, and Foundry (`ENABLE_PROMPT_CACHING_1H_BEDROCK` is deprecated but still honored), and `FORCE_PROMPT_CACHING_5M` to force 5-minute TTL - Added recap feature to provide context when returning to a session, configurable in `/config` and manually invocable with `/recap`; force with `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` if telemetry disabled. - The model can now discover and invoke built-in slash commands like `/init`, `/review`, and `/security-review` via the Skill tool - `/undo` is now an alias for `/rewind` - Improved `/model` to warn before switching models mid-conversation, since the next response re-reads the full history uncached - Improved `/resume` picker to default to sessions from the current directory; press `Ctrl+A` to show all projects - Improved error messages: server rate limits are now distinguished from plan usage limits; 5xx/529 errors show a link to status.claude.com; unknown slash commands suggest the closest match - Reduced memory footprint for file reads, edits, and syntax highlighting by loading language grammars on demand - Added "verbose" indicator when viewing the detailed transcript (`Ctrl+O`) - Added a warning at startup when prompt caching is disabled via `DISABLE_PROMPT_CACHING*` environment variables - Fixed paste not working in the `/login` code prompt (regression in 2.1.105) - Fixed subscribers who set `DISABLE_TELEMETRY` falling back to 5-minute prompt cache TTL instead of 1 hour - Fixed Agent tool prompting for permission in auto mode when the safety classifier's transcript exceeded its context window - Fixed Bash tool producing no output when `CLAUDE_ENV_FILE` (e.g. `~/.zprofile`) ends with a `#` comment line - Fixed `claude --resume ` losing the session's custom name and color set via `/rename` - Fixed session titles showing placeholder example text when the first message is a short greeting - Fixed terminal escape codes appearing as garbage text in the prompt input after `--teleport` - Fixed `/feedback` retry: pressing Enter to resubmit after a failure now works without first editing the description - Fixed `--teleport` and `--resume ` precondition errors (e.g. dirty git tree, session not found) exiting silently instead of showing the error message - Fixed Remote Control session titles set in the web UI being overwritten by auto-generated titles after the third message - Fixed `--resume` truncating sessions when the transcript contained a self-referencing message - Fixed transcript write failures (e.g., disk full) being silently dropped instead of being logged - Fixed diacritical marks (accents, umlauts, cedillas) being dropped from responses when the `language` setting is configured - Fixed policy-managed plugins never auto-updating when running from a different project than where they were first installed ## 2.1.107 - Show thinking hints sooner during long operations ## 2.1.105 - Added `path` parameter to the `EnterWorktree` tool to switch into an existing worktree of the current repository - Added PreCompact hook support: hooks can now block compaction by exiting with code 2 or returning `{"decision":"block"}` - Added background monitor support for plugins via a top-level `monitors` manifest key that auto-arms at session start or on skill invoke - `/proactive` is now an alias for `/loop` - Improved stalled API stream handling: streams now abort after 5 minutes of no data and retry non-streaming instead of hanging indefinitely - Improved network error messages: connection errors now show a retry message immediately instead of a silent spinner - Improved file write display: long single-line writes (e.g. minified JSON) are now truncated in the UI instead of paginating across many screens - Improved `/doctor` layout with status icons; press `f` to have Claude fix reported issues - Improved `/config` labels and descriptions for clarity - Improved skill description handling: raised the listing cap from 250 to 1,536 characters and added a startup warning when descriptions are truncated - Improved `WebFetch` to strip `