Claude CLI source silently drops "Current week (Fable)" when Claude Code reports "Per-model breakdown unavailable (rate limited …)"
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 58/100
Research direction
Start with ClaudeStatusProbe.swift around lines 1490–1506 and ClaudeCLISession.swift around line 242, then inspect the parser and rate-limit checks under Sources/CodexBarCore/Providers/Claude. Reproduce the partial notice using the recorded /usage stream through CLAUDE_CLI_PATH. Done means clients can distinguish a rate-limited per-model breakdown from an account with no Fable limit; the issue lists retaining stale data or reporting unavailability as possible outcomes.
Written by the indexing model from the issue text.
Description
Problem
With the Claude source set to CLI, claude-weekly-scoped-fable is missing from part of the results. "Current session" and "Current week (all models)" are always there, the exit code is 0, error is null, and nothing in the output says that a window is missing. To a client this looks the same as an account without a Fable limit.
This is the symptom of #3746 again, with a different cause than the one fixed there.
Cause
The scoped rows in /usage ("Current week (Fable)") come from Claude Code's per-model breakdown. When /usage is opened often, Claude Code 2.1.310 draws the panel with session and weekly values but replaces the scoped rows with:
Per-model breakdown unavailable (rate limited until 2:32pm) r to retry
CodexBar parses the panel as complete. The rate-limit checks in ClaudeStatusProbe and ClaudeCLIRateLimitGate only fire when the whole panel is missing, and the parser has no case for this partial notice (no match for "breakdown" or "per-model" in Sources/CodexBarCore/Providers/Claude, v0.80.0 through v0.82.0 and main 5f93dc3).
Observations (macOS 26.6.2 arm64, Claude Code 2.1.310, Max plan)
- About one
/usageper minute for 20 minutes: the Fable row was there every time. After that, about every second run showed the notice instead (4 of 8 timed recordings from 13:25 to 13:32 UTC). - Every recording without the Fable row had the notice. No recording with the Fable row had it (21 recordings).
- The time in the notice is not a hard stop: the next run 50 s later could have the Fable row again.
usage --provider claude --source cli --jsonon 0.80.0 and 0.81.0 in the same period: Fable missing in 6 of 12 runs, always exit 0 and an empty stderr. The web source had Fable in every run.codexbar serve --refresh-interval 60, polled for both/dashboard/v1/snapshotand/usage, ranclaude /usageabout 1.3 times per minute in our measurement. That is enough to reach this state.
Repro (deterministic, no account needed)
Replay a recorded rate-limited /usage stream through CLAUDE_CLI_PATH with a small fake claude:
| CodexBar | Stream | Result |
|---|---|---|
| 0.80.0 | rate-limited panel (notice instead of the Fable row) | exit 0, error: null, no claude-weekly-scoped-fable |
| 0.81.0 | same | same |
Happy to attach the fake claude (about 40 lines of Python) and the sanitized recording.
Expected
The scoped window is not reported as absent when Claude Code says it could not load it. For example:
- Keep the last known scoped window, marked stale, while the notice is shown, or
- Report the scoped window as unavailable (or add a provider warning), so a client can tell "rate limited" from "no Fable limit".
Use case
A client of codexbar serve, or a script polling codexbar usage --json, on a Mac without a claude.ai browser session, so the CLI source is used. With a one-minute refresh the Fable window then appears only now and then.
Related, much rarer
For /usage, the capture stops 2.0 s after the first session percentage (ClaudeStatusProbe.swift#L1490-L1506, ClaudeCLISession.swift#L242). Claude Code draws the Fable row in a second redraw. In replay, a redraw 2.5 s or later is dropped the same silent way. In real runs the redraw came after 0.13–0.27 s (once 1.8 s under heavy load), so this was not the cause in any real run here.
Prepared with AI assistance.
- Dominant language
- Swift
- Stars
- 22.8k
- Forks
- 2.2k
- Avg merge
- 21h 55m
- Merged PRs (30d)
- 403
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from steipete/CodexBar
-
Improve readability of red pace text in stacked menu bar layoutPossibly taken @steipete claimed this today. Openclawsweeper:fix-shape-clear clawsweeper:needs-live-repro clawsweeper:needs-maintainer-review clawsweeper:needs-product-decision clawsweeper:no-new-fix-pr impact:ux-friction issue-rating: 🐚 platinum hermit P2
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
steipete/CodexBar#4714 · 3 comments · 1 reaction ·
Maintainers usually reply within 1 day
-
Picking a quota window duplicates it across a mixed two-quota menu bar layoutPossibly taken @egigoka claimed this 1 day ago. Openclawsweeper:linked-pr-open clawsweeper:no-new-fix-pr clawsweeper:source-repro impact:ux-friction issue-rating: 🦞 diamond lobster P2
Difficulty 2/5 1-3 hours Newbie friendliness 25/100
steipete/CodexBar#4807 · 1 comment · 1 reaction ·
Maintainers usually reply within 1 day
-
opencodego: background refresh reports 100% free quota, manual refresh shows real quotaPossibly taken @egigoka claimed this 1 day ago. Openclawsweeper:linked-pr-open clawsweeper:no-new-fix-pr clawsweeper:source-repro impact:ux-friction issue-rating: 🦞 diamond lobster P2
Difficulty 4/5 3-5 days Newbie friendliness 25/100
steipete/CodexBar#4805 · 1 comment · 1 reaction ·
Maintainers usually reply within 1 day
-
0.82.0 (175) Cursor does not report usage.Possibly taken A pull request linked to this issue is open or already merged. Openimpact:auth-provider impact:ux-release-blocker issue-rating: 🦪 silver shellfish P0
Difficulty 4/5 3-5 days Newbie friendliness 35/100
steipete/CodexBar#4804 · 1 comment · 1 reaction ·
Maintainers usually reply within 1 day
-
0.82.0: reported memory rises from 605.9 MB to 1.62 GB between two screenshotsPossibly taken A pull request linked to this issue is open or already merged. Openimpact:other issue-rating: 🦪 silver shellfish P2
Difficulty 4/5 1-2 days Newbie friendliness 48/100
steipete/CodexBar#4803 · 1 comment · 1 reaction ·
Maintainers usually reply within 1 day
All issues in steipete/CodexBar
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
shanselman/TinyToolTown#883 ·
Maintainers usually reply within 5 days
-
Difficulty 1/5 Under an hour Newbie friendliness 85/100
521xueweihan/HelloGitHub#4149 ·
-
Android: theme prop is ignored in R8-minified release builds (Theme enum is not Enumerable)Possibly taken @1kuko3 claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 71/100
Cocoanetics/Loupe#8 ·