statusLine.refreshInterval re-runs the command but does not repaint the display

Resolved 💬 4 comments Opened Apr 15, 2026 by TalatCikikci Closed May 24, 2026

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 (2.1.109)

Summary

When statusLine.refreshInterval is configured, the statusline command is re-executed on the timer interval as expected. However, the terminal statusline area is not visually repainted when the script output changes — the new output is only rendered on the next user interaction event (e.g., sending a message or a tool call completing).

Steps to reproduce

  1. Configure a statusline command that reads the current permissionMode from the session transcript JSONL (e.g., via grep '"permissionMode"' <transcript> | tail -1).
  2. Set "refreshInterval": 3 in settings.json.
  3. Press Shift+Tab to cycle through permission modes (default → plan → auto → etc.).
  4. Observe: the statusline label does not update within 3 seconds.
  5. Send any message — the statusline immediately shows the correct (new) mode.

Expected behavior

When refreshInterval fires and the script produces different output than the previous run, Claude Code should repaint the statusline area to reflect the new content — without requiring a user interaction.

Actual behavior

The statusline command is re-executed (confirmed via debug logging) but the terminal display is not updated until the next UI event.

Impact

Any statusline data that changes independently of user messages — such as permission mode changes via Shift+Tab, external process state, or time-based values — cannot be reflected in real time. The refreshInterval option exists specifically for this use case, so the missing repaint makes it largely ineffective.

Environment

  • Claude Code version: 2.1.109
  • Platform: Linux (Ubuntu)

View original on GitHub ↗

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