Thinking spinner keeps animating while permission prompt is awaiting input
Summary
When a tool (e.g. Bash) triggers a permission prompt, the bottom-line "thinking" clock/spinner continues animating while the modal waits for the user to choose Allow / Allow-rule / Deny. The CLI is not actually doing any inference at that point — no API request is in flight — so the spinner is misleading.
Environment
- Claude Code version: 2.1.141 (native install)
- OS: macOS (Darwin 24.6.0)
- Terminal: ghostty 1.3.1, running inside tmux (
TERM=tmux-256color) - Model:
claude-opus-4-7
Steps to reproduce
- Open Claude Code in a directory where Bash isn't pre-allowed.
- Ask Claude to run any shell command that fires a permission prompt (e.g.
python3 something.py). - When the "Allow / Allow + remember / Deny" prompt appears, observe the bottom status line.
Expected
While the permission prompt is awaiting a user choice, the thinking spinner should be paused/hidden — the CLI is idle.
Actual
The thinking spinner continues animating the entire time the prompt is on screen.
Evidence from debug log
From ~/.claude/debug/<session>.txt, the relevant window is 21:53:16.931 → 21:53:32.607 (~15.7s waiting on user input). During that span there are no [API REQUEST] or Stream started entries, but the renderer is still busy:
21:53:16.930 [DEBUG] Permission suggestions for Bash: [ ... ]
21:53:16.931 [DEBUG] executePermissionRequestHooks called for tool: Bash
21:53:16.944 [DEBUG] High write ratio: blit=0, write=2410 (100.0% writes), screen=40x237
21:53:32.607 [DEBUG] Aborting: tool=Bash isAbort=undefined hasFeedback=false isSubagent=false
21:53:32.607 [DEBUG] Bash tool permission denied
The 100.0% writes line during an idle prompt window is consistent with the spinner repainting frames while no work is happening.
Impact
Minor / UX — gives the impression Claude is still thinking when it's actually blocked on the user, which can cause users to wait instead of answering the prompt.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗