TL;DR
Ctrl+Ono longer toggles focus view. Use the new/focuscommand instead;Ctrl+Ois now transcript-only (normal vs verbose). (more below)/tui fullscreenlets you switch rendering modes mid-conversation. Replaces theCLAUDE_CODE_NO_FLICKER=1env var that required a restart.- Hook security fix:
PermissionRequesthooks can no longer bypass deny rules. If you rely onpermissions.denyas a security boundary with third-party plugins, this gap is now closed. (more below) - Stray-line stdio MCP servers no longer disconnect on the first bad line. Regression from 2.1.105 is fixed; revisit any workarounds you had.
- Session recap is now on by default for telemetry-disabled users. Opt out via
/configorCLAUDE_CODE_ENABLE_AWAY_SUMMARY=0.
New in 2.1.110
2.1.110 (April 16, 2026)
- Added
/tuicommand andtuisetting; run/tui fullscreento 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+Oto toggle between normal and verbose transcript only; focus view is now toggled separately with the new/focuscommand - Added
autoScrollEnabledconfig to disable conversation auto-scroll in fullscreen mode - Added option to show Claude's last response as commented context in the
Ctrl+Gexternal editor (enable via/config) - Improved
/pluginInstalled tab; items needing attention and favorites appear at the top, disabled items are hidden behind a fold, andffavorites the selected item - Improved
/doctorto warn when an MCP server is defined in multiple config scopes with different endpoints --resume/--continuenow resurrects unexpired scheduled tasks/context,/exit, and/reload-pluginsnow 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/TRACESTATEfrom the environment for distributed trace linking - Session recap is now enabled for users with telemetry disabled (Bedrock, Vertex, Foundry,
DISABLE_TELEMETRY). Opt out via/configorCLAUDE_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.jsonwhen the marketplace entry omits them;/plugininstall now lists auto-installed dependencies - Fixed skills with
disable-model-invocation: truefailing when invoked via/<skill>mid-message - Fixed
--resumesometimes showing the first prompt instead of the/renamename 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
PermissionRequesthooks returningupdatedInputnot being re-checked againstpermissions.denyrules;setMode:'bypassPermissions'updates now respectdisableBypassPermissionsMode - Fixed
PreToolUsehookadditionalContextbeing 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_TRAFFICorCLAUDE_CODE_DISABLE_TERMINAL_TITLEis set - Fixed potential excessive memory allocation when piped (non-TTY) Ink output contains a single very wide line
- Fixed
/skillsmenu 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
Notes
Ctrl+O was split from focus mode. In 2.1.97, Ctrl+O toggled focus view in NO_FLICKER mode (prompt, one-line tool summary, final response only). As of 2.1.110, Ctrl+O is transcript-only (normal vs verbose), and focus view lives behind /focus. If focus mode is in your muscle memory as "the thing Ctrl+O does," remap now. Focus mode behavior itself is unchanged.
PermissionRequest hooks could silently bypass your deny rules. A hook returning updatedInput was accepted without re-validation against permissions.deny, meaning a plugin-shipped hook could effectively override your deny list. The same fix ensures setMode:'bypassPermissions' respects disableBypassPermissionsMode, closing a second escalation path. Relevant if you run third-party plugins and treat deny rules as a security boundary.
--resume now resurrects unexpired scheduled tasks. Previously, resuming a session with active /loop or CronCreate work silently dropped those tasks. If you use /loop for recurring checks (deploy monitoring, PR babysitting), resuming picks up where you left off instead of requiring a re-arm.
MCP SSE/HTTP transport hang is fixed. Tool calls that froze when the server connection dropped mid-response on SSE/HTTP are resolved. A related stdio fix landed in 2.1.105. If you were seeing tool calls freeze during network blips with remote MCP servers, this should resolve it.