CLI can get stuck on 'Cancelling' and stop accepting Enter (slash commands become unusable)
- Dominant language
- Shell
- Stars
- 11.2k
- Forks
- 1.9k
- Avg merge
- 14h 16m
- Merged PRs (30d)
- 6
Description
### Describe the bug
In some failure cases (seems to correlate with server-side rate limiting / request hang), Copilot CLI becomes unusable after attempting to cancel. The UI input remains responsive (you can type and see autocomplete), but pressing **Enter** stops doing anything — commands like `/restart` and `/session info` cannot be executed.
After pressing **Esc**, the UI shows **"Cancelling"** indefinitely. Esc no longer interrupts, and Enter will not submit commands.
### Steps to reproduce (approx)
1. Submit a prompt that triggers a backend request.
2. Backend appears rate limited / hung; CLI shows no useful feedback for 5+ minutes.
3. Press **Esc** to cancel.
4. Observe: status shows **"Cancelling"** and never completes for a long time.
5. Try `/restart` + Enter or `/session info` + Enter.
6. Observe: the text remains in the input line but **Enter does not execute**.
Eventually (8–10+ minutes later) it “releases” and starts working again, but until then there’s no way to recover.
### Expected behavior
- Cancellation should complete quickly (or time out with a clear failure state).
- Even while a request is cancelling/hung, **Enter should still work** for local slash commands like `/restart`, `/session info`, and ideally a “force cancel” action.
- If the CLI is rate-limited, show actionable feedback (retry-after / backoff) rather than appearing frozen.
### Actual behavior
- Stuck in **"Cancelling"**.
- **Esc** no longer works.
- Input is responsive for typing/autocomplete, but **Enter does not execute** `/restart` or `/session info`.
- Cannot retrieve session info to safely force-quit and resume.
### Environment
- OS: Windows
- Trigger: appears during/after suspected rate limit or hung server connection
### Additional context / suggestions
This feels like an input state machine deadlock where cancellation disables submit/Enter processing globally. Local commands should remain functional regardless of backend request state.
Contributor guide
Assessment
This issue has not been assessed yet.