claude --continue/--resume: UI renders but keyboard input unresponsive

Resolved 💬 4 comments Opened Feb 4, 2026 by Z-M-Huang Closed Mar 9, 2026

Description

claude --continue and claude --resume render the TUI (prompt appears, status line plugins work) but keyboard input is completely unresponsive — unable to type anything. A fresh claude start works normally. This reproduces with all plugins uninstalled and after clearing all cached data.

Environment

  • Claude Code version: 2.1.31
  • OS: Windows 11
  • Shell: Git Bash / PowerShell

Steps to Reproduce

  1. Start a normal session: claude — works fine, can type normally
  2. Exit the session
  3. Run claude --continue or claude --resume
  4. The prompt appears, status line renders, but cannot type anything

What Was Tried

All of the following had no effect — the input freeze persists:

  • Uninstalling all plugins
  • Clearing ~/.claude/debug/
  • Clearing ~/.claude/file-history/
  • Clearing ~/.claude/plans/
  • Clearing ~/.claude/projects/
  • Clearing ~/.claude/plugins/cache/
  • Clearing ~/.claude/shell-snapshots/
  • Clearing ~/.claude/todos/
  • Killing all stale claude.exe processes

Fresh claude works every time with the exact same configuration.

Debug Log Analysis

Compared debug logs (~/.claude/debug/) from a successful fresh session and a frozen --continue session. Both sessions are identical up to the critical divergence point.

Successful fresh session

Both sessions complete 2 render cycles during showSetupScreens(). After that:

[39.594Z] Getting matching hook commands for SessionStart (0 hooks)
[39.624Z] [API:auth] OAuth token check complete
[39.625Z] [render] initLayout starting            ← 3rd render fires
[39.628Z] [render] initLayout complete
[39.634Z] [keybindings] KeybindingSetup initialized
[39.674Z] [REPL:mount] REPL mounted, disabled=false  ← Input works
[39.675Z] Official marketplace auto-install skipped
[39.676Z] performStartupChecks called

Frozen --continue session

[35.236Z] Getting matching hook commands for SessionStart (0 hooks)
[35.267Z] [API:auth] OAuth token check complete
[35.275Z] Loaded 1 LSP server(s) from plugin: gopls-lsp  ← NO 3rd render
[35.275Z] Loaded 1 LSP server(s) from plugin: rust-analyzer-lsp
[35.276Z] Loaded 1 LSP server(s) from plugin: typescript-lsp
[35.276Z] Total LSP servers loaded: 3
...
[35.370Z] MCP server connected (185ms)
[36.209Z] MCP server connected (1036ms)
           ← END OF LOG — no 3rd render cycle, no [REPL:mount]

Key Difference

  • Fresh claude: A 3rd React/Ink render cycle fires 1ms after OAuth completes → mounts the REPL with input enabled
  • --continue/--resume: The 3rd render never fires. LSP/MCP async initialization runs immediately after OAuth and the render that would enable keyboard input is never scheduled

The UI appears (from the first 2 renders during showSetupScreens), but the render cycle that wires up keyboard input to the REPL component never executes.

Expected Behavior

claude --continue and claude --resume should accept keyboard input the same as a fresh claude session.

Workaround

Use claude (fresh start) instead of claude --continue or claude --resume.

View original on GitHub ↗

This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗