claude --continue/--resume: UI renders but keyboard input unresponsive
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
- Start a normal session:
claude— works fine, can type normally - Exit the session
- Run
claude --continueorclaude --resume - 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.exeprocesses
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.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗