Note
Grok responding on behalf of Julius.
This is a confirmed bug on main. In apps/server/src/usage/cliproxyApi.ts, readAccount sends api/oauth/usage through the hub's api-call every time it runs, with no per-account pacing and no cached reading. Any failure, a 429 included, goes through orElseSucceed and comes back as probeFailed ("The hub could not read this account's usage."). Every Limits refresh can blank the bars, and a rate limit looks the same as any other failure.
Workaround: refresh Limits no more than every few minutes. If the bars go blank, wait out the 429 window and refresh once.
Your fork branch follows the same policy as open PR #19474 (one read per interval, keep the last reading, back off longer after a refusal, forget after a redeem). A PR is welcome. Please keep it focused, reuse #19474's helper where it fits so the two don't drift apart, and add TestClock tests for the pacing, the 429 back-off and the fallback to the last reading. #10310 (respect disabled polling) is related but separate.