[BUG] TUI input blocked after task completion — requires Escape to unlock prompt
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?
After Claude Code completes a task (response fully rendered, no agents or background activity running), the TUI appears to remain in a "model turn active" state. The input prompt does not become responsive — typing has no effect, and new prompts cannot be entered.
Pressing Escape immediately unlocks the input and returns to the normal prompt state.
This is not a status-line cosmetic issue (cf. #27084/#20336) — the status line may appear normal, but the input is genuinely blocked. It also occurs with no background agents, no team sessions, and no pending tool calls.
When It Started
Noticed in recent versions (approximately v2.1.70+). Frequency has increased over the past week. It does not happen on every response but occurs multiple times per session, especially after multi-step tool-heavy responses.
Steps to Reproduce
- Start a Claude Code session (terminal, not VS Code)
- Issue a prompt that triggers multiple sequential tool calls (e.g., read several files, then edit)
- Wait for the response to fully complete
- Observe: the input area does not become active — cursor may appear but typing is ignored
- Press Escape — input immediately unlocks and accepts the next prompt
Expected Behavior
After a response completes and all tool calls finish, the TUI should automatically return to the idle input state, ready for the next prompt.
Actual Behavior
The TUI remains in a locked state as if a model turn is still active. No spinner or "Computing..." indicator — the response appears done, but the input is blocked. Only pressing Escape releases it.
Environment
- Claude Code version: 2.1.76
- Platform: Windows 11 Pro (10.0.26200)
- Shell: Git Bash (bash)
- Terminal: Windows Terminal
- Model: claude-opus-4-6 (1M context)
- API: Direct (Anthropic, Max subscription)
- Session hooks: Yes (SessionStart, PreToolUse, PostToolUse, Notification)
- MCP servers: Yes (claude-in-chrome, Gmail, Google Calendar)
Possibly Related
- #20336 (CLOSED) — hangs after background processes, but that requires active background tasks
- #27084 (CLOSED as dupe) — status line stuck, but input still works
- #20572 (OPEN) — full freeze on Linux, different root cause (SIGTERM ignored)
This issue is distinct: no background activity, no status line anomaly, input simply does not unlock until Escape is pressed.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗