Thinking spinner keeps animating while permission prompt is awaiting input

Resolved 💬 3 comments Opened May 14, 2026 by liuyunhaozz Closed May 18, 2026

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

  1. Open Claude Code in a directory where Bash isn't pre-allowed.
  2. Ask Claude to run any shell command that fires a permission prompt (e.g. python3 something.py).
  3. 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.93121: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.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗