Claude Code UX - No loading indicator when resuming session with --resume
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
When resuming a session with claude --resume <session-id>, the terminal appears frozen with no visual feedback during session deserialization. The session is found immediately, but input is silently blocked -- no spinner, no "Loading session..." message, nothing. The user cannot type and has no way to distinguish between a loading state and a hung process.
Expected Behavior
During session deserialization, Claude Code should display a loading indicator (spinner, progress message, or similar) to communicate that the session is being restored. Input should either be buffered or the user should see a clear "Restoring session..." message until the session is ready.
Steps to Reproduce
- Start a session and do some work to build up conversation history
- Exit the session
- Resume with
claude --resume <session-id> - Visually, conversation history is loaded, but typing in the input field does not render typed text. There is no indication as to what is happening in the background.
Environment
- Claude Code version: 2.1.34
- Platform: Windows
- Interface: Terminal (direct)
- Auth: Anthropic API
- CPU and RAM are not under load during the issue -- system resources are not a factor
- Reproduced in both standalone PowerShell terminal and VSCode integrated PowerShell terminal with identical behavior
Additional Context
The issue is purely UX -- the resume itself works correctly. The problem is the absence of any feedback during the loading phase, which makes the tool appear unresponsive. This is especially confusing for longer sessions where deserialization takes more time. Even --verbose does not appear to provide feedback specifically for the deserialization step. However, the suspected loading is taking a very long time (potentially several dozen minutes) which is why the user perceives it as frozen.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗