Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Claude CLI source silently drops "Current week (Fable)" when Claude Code reports "Per-model breakdown unavailable (rate limited …)"

Open
#4,809 1 comment 1 reaction 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
1-2 days
Newbie friendliness
58/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
swift
Domain
backend, cli

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

clawsweeper:fix-shape-clear clawsweeper:needs-maintainer-review clawsweeper:needs-product-decision clawsweeper:no-new-fix-pr clawsweeper:source-repro impact:ux-friction issue-rating: 🦞 diamond lobster P2
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 /usage per 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 --json on 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/snapshot and /usage, ran claude /usage about 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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from steipete/CodexBar

All issues in steipete/CodexBar

Similar issues

More Swift issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.