Custom statusLine never renders (built-in footer badge row works) — 2.1.220, macOS 15.6, native

Status Open
Reported on v2.1.220
Maintainer reply None cached
Activity 0 comments · opened Aug 3, 2026

Bug: custom statusLine never renders (built-in footer badge row works fine)

What happens

The custom statusLine row does not render at all. The built-in footer badge row directly below it renders normally (shows ⏵⏵ bypass permissions on (shift+tab to cycle) · PR #10 · ← for agents, including auto-detected PR #10). So the TUI footer area is drawing — only the custom statusLine row above it is missing.

Environment

  • Claude Code 2.1.220 (native install)
  • macOS 15.6 (24G84), arm64
  • Node v24.14.1
  • Terminal.app, TERM=xterm-256color

Config (~/.claude/settings.json) — valid per the published schema

"statusLine": { "type": "command", "command": "~/.claude/status.sh", "refreshInterval": 1 }

Validated against https://json.schemastore.org/claude-code-settings.jsonstatusLine block matches (type/command/refreshInterval all legal).

The script is not the problem — extensively verified

  • Runs standalone with exit 0 and correct stdout under: realistic JSON on stdin, empty {}, and a stripped env -i PATH=/usr/bin:/bin (no Homebrew).
  • Replaced it with a trivial two-line script (cat >/dev/null; echo "PLAINTEXT", no colors/escapes) — still nothing rendered, even though refreshInterval: 1 should re-run it every second. So the per-second timer isn't firing → the feature isn't executing, independent of script content.

Other things ruled out

  • Repeated full quit/relaunch (not mid-session config load).
  • Wide terminal; also plain Terminal.app (not just IDE-embedded).
  • No statusLine override in ~/.claude.json or project settings.
  • Removed two invalid top-level keys (servers, lsp) from settings.json — no change.
  • SessionStart hook fires normally, so settings.json is being loaded.

Note on debugging

claude --debug 2>&1 | grep -i statusline produces no output, but that appears to be because piping stdout drops the interactive TUI (and the status line is a TUI feature), so that probe may be uninformative rather than diagnostic.

Expected

The custom statusLine row renders above the built-in footer badges.

Actual

Custom statusLine row absent; built-in footer badge row present.

View original on GitHub ↗