Claude Code 2.1.110
TUI fullscreen rendering + Push notifications: interactive experience upgrades bringing flicker-free rendering to focused work and async notification capability to remote/mobile clients. Enables longer-form agent conversations without terminal flicker and lets Claude proactively notify the user when remote.
New primitives
/tui commandcommandSwitch to flicker-free rendering in the same conversation
tui settingsettingConfigure fullscreen rendering mode
push notification tooltoolClaude can send mobile push notifications when Remote Control and "Push when Claude decides" config are enabled
/focus commandcommandToggle focus view separately from transcript view
autoScrollEnabled configsettingDisable conversation auto-scroll in fullscreen mode
Ctrl+G editor context optionsetting/capabilityShow Claude's last response as commented context in external editor
--resume/--continue task resurrectionflag/capabilityResurrect unexpired scheduled tasks on session resume
Remote Control slash-command supportcapability`/context`, `/exit`, and `/reload-plugins` now work from Remote Control (mobile/web) clients
TRACEPARENT/TRACESTATE env supportenv-varSDK/headless sessions now read distributed trace linking from environment
CLAUDE_CODE_ENABLE_AWAY_SUMMARY env-varenv-varOpt out of session recap for users with telemetry disabled
Workflow recipes
Scheduled agents (via --resume) can now resurrect unexpired tasks, send mobile push notifications when decisions require user input, and execute remote commands from mobile/web clients. This unlocks fully async agent delegation where the agent runs on a schedule, makes progress, and notifies the user to review/approve via mobile before resuming.
Create a scheduled agent workflow for high-stakes decisions (deal review, prospect intake, compliance checks). The agent runs on cron, processes queued work, resurrects any prior session tasks via --resume, and when it encounters a decision gate, sends a push notification. The user reviews on mobile via Remote Control, executes /context or /exit to pass direction, and the agent resumes in the background. This enables multi-day agent execution with minimal user interruption while keeping the user async-aware.
Agents can now work in a flicker-free TUI mode (/tui fullscreen), toggle focus to hide distracting elements (/focus), and persist checkpoints by exiting and resuming via --resume. This unlocks long-running interactive refactoring sessions where the agent can take clean breakpoints without losing context.
For large codebase refactoring tasks, spawn an agent in fullscreen TUI mode (/tui fullscreen), enable focus mode (/focus) to suppress transcript noise, and structure the work as a series of checkpoint tasks. The agent completes one refactoring chunk, exits cleanly, and the scheduler resumes the session via --resume --continue to pick up the next chunk. The flicker-free rendering keeps the focus sharp, and the checkpoint pattern allows graceful interruption and observability.
Cloud-orchestrated agents can now link their execution traces to parent traces via environment variables, enabling end-to-end observability when agents are spawned by a parent service or orchestrator (e.g., a Temporal workflow, a Dagster job, or a cloud function).
Build a cloud-native agent orchestration layer where parent services inject TRACEPARENT and TRACESTATE headers into the agent environment. When agents run via SDK or headless mode, they automatically read and forward these traces, making every agent turn observable in a unified distributed-trace backend (e.g., Datadog, Jaeger, Honeycomb). This unlocks multi-agent workflows with full visibility into latency, error propagation, and decision trees across the fleet.
Agentic relevance
The `/tui` command and push notification tool enable agents to work in flicker-free environments and send async notifications to remote/mobile clients when decisions or results require user attention. The expanded Remote Control support (`/context`, `/exit`, `/reload-plugins`) and task resurrection via `--resume`/`--continue` unlock headless/scheduled agent patterns. The distributed trace linking (`TRACEPARENT`/`TRACESTATE`) unlocks agent observability in cloud environments, critical for multi-turn cloud orchestration.
Hardening & fixes (24)
- 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 `/<skill>` 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
- 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
- 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
Raw 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 `/<skill>` 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