[Bug] Rate limit reset countdown truncates to floor(hours) — "3h" shown when 3h56m remain
Summary
The Claude Code usage overlay (and Desktop App popover) displays the rate limit reset time as a whole-hour count using floor division. "Resets 3h" is shown when the actual time remaining is 3 hours 56 minutes — hiding 56 minutes, nearly 19% of the 5-hour window, from the display.
This is not rounding. It is truncation. The server already has the correct value.
Evidence
The two displays are captured simultaneously. The server-side value is "3 hr 56 min" (visible at claude.ai/settings/usage). The Claude Code overlay renders it as "3h".
Steps to observe
- Open Claude Code when a rate limit reset is upcoming.
- Note the displayed time in the status overlay — e.g. "resets 3h".
- Open claude.ai/settings/usage in a browser.
- The settings page shows the full precision (e.g. "3 hr 56 min"), confirming the exact value is available server-side.
Impact
A user who sees "resets 3h" and waits 3 hours will find the window has not reset. The display is systematically low by up to 59 minutes. Planning a final task before a reset based on the overlay will frequently result in hitting the limit mid-execution.
The claude.ai settings page already renders the minute component correctly. This is a presentation-layer discrepancy, not a data availability problem — the fix is one format string.
Prior report
Previously reported as #55722 (closed stale, never fixed). That report independently reproduced the same truncation in Japanese locale using the Desktop App popover. This report adds: (a) simultaneous screenshot comparison confirming the server has the precise value, (b) CLI overlay reproduction on macOS, (c) quantification that up to 59 minutes of a 5-hour budget window are hidden. Behavior is unchanged as of v2.1.170.
Environment
- Claude Code v2.1.170, macOS 15.x
- Reproduced in CLI overlay and Desktop App popover
- claude.ai/settings/usage shows correct precision in same browser session
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗