[FEATURE] statusLine JSON data-provider extensibility — let authors inject custom keys instead of filing per-field FRs

Resolved 💬 1 comment Opened Apr 18, 2026 by mjmirza Closed May 27, 2026

Summary

Users keep filing one-off requests to add specific fields to the statusLine JSON input (effort, rate-limit bars, /usage quota, background task count, autoCompactThreshold, context-input-vs-total, etc.). Rather than adding each field individually, expose a provider/hook pattern so authors can inject arbitrary keys into the statusLine JSON the command receives on stdin.

Why existing issues do not cover this

Each of these is a narrow single-field ask, not a consolidated extensibility request:

  • #28999 — /usage subscription quota (38 👍)
  • #31415 — effort level (19 👍)
  • #38392 — effort level (18 👍)
  • #19385 — rate limit data (15 👍)
  • #31987 — reasoning effort (9 👍)
  • #30341 — built-in rate-limit bars (7 👍)
  • #46428 — autoCompactThreshold
  • #36187 / #40261 / #39399 — effort (5-6 👍 each)
  • #33310 — background task count (4 👍)
  • #30232 — show statusline during permission prompts (4 👍)
  • #30784 — rate-limit utilization (3 👍)
  • #28167 — context % counts only input tokens (3 👍)

Combined ≈130 👍 across 13+ issues. Each new demand produces a new issue because there is no way for an author to fill the gap themselves.

Proposal

Introduce a statusLineProviders concept in settings.json:

{
  "statusLineProviders": [
    { "command": "bash ~/scripts/my-rate-limit-provider.sh", "refreshInterval": 30, "namespace": "my" }
  ]
}

Each provider is invoked on the statusLine refresh cycle, outputs JSON on stdout, and its keys are merged under the declared namespace into the JSON input piped to the main statusLine.command. Providers run in parallel, timeout-bounded, and failures are silent (same contract as hooks).

Why this is the right shape

  1. Moves per-field FRs from Anthropic's backlog into user-land.
  2. Aligns with the existing statusLine.command contract (stdin JSON → stdout text).
  3. Cache-friendly: providers declare their own refreshInterval.
  4. Backward compatible: absent statusLineProviders, behavior is unchanged.

Request

  1. Confirm or correct this framing.
  2. If acceptable, expose statusLineProviders (or equivalent) and deprecate the need to file per-field FRs.
  3. Alternative acceptable: document a supported pattern for authors to pre-process the statusLine stdin JSON before it reaches their command.

---
Suggested labels: enhancement, area:statusline

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗