/stats current/longest streak under-reports continuous runs — anchored to a late-April data gap, not full activity history
Summary
The usage-stats dashboard (the auto-shown card; /stats in the CLI) reports a daily-usage streak that under-counts a continuous run. It is not frozen — it increments daily — but it is anchored ~11 days later than the true streak start, so it persistently reads short. With continuous daily use since ~April 19 (a ~45-day run), the dashboard shows 34d. The streak appears to be computed from a dataset that begins ~April 30 (there is a gap/truncation in late April), rather than from the full activity history that backs "Active days: 108".
Environment
- Claude Desktop (Claude for Mac): 1.9659.2 (390d6c)
- Embedded claude-code: 2.1.156
- Standalone claude-code CLI: 2.1.149 (reproduces there too)
- OS: macOS 26.4.1 (build 25E253), Apple Silicon (arm64)
- Plan: Max
Expected behavior
Current/Longest streak should reflect the full run of consecutive active days from the long-lived activity history (the same history that backs "Active days: 108" and the multi-month heatmap). With continuous daily use since ~April 19, the streak should read ~45d.
Actual behavior
The streak counts from ~April 30 instead of the true ~April 19 start, so it under-reports by ~11 days. It does advance one day per day (so it is not a fixed cap), but it stays ~11 days behind reality.
Evidence
Three dashboard snapshots, same account (screenshots attached):
| Date | Current streak | Longest streak | Active days | Sessions | Messages |
|------|----------------|----------------|-------------|----------|----------|
| May 8 | 20d | 20d | 102 | 607 | 96,900 |
| Late May | 32d | 32d | 106 | 758 | 127,169 |
| Jun 2 | 34d | 34d | 108 | 788 | 138,339 |
Key observations:
- May 8 was correct (20d). A 20-day streak on May 8 = continuous activity since ~April 19. Back then the streak was younger than the data window, so nothing was clipped.
- Usage never stopped — sessions (607→788), messages (96.9k→138k), and active days (102→108) all climbed steadily.
- The streak increments but stays short. 20d → 32d → 34d. It is anchored at ~April 30 (the first day after a gap in the locally-retained session data near April 29) and grows from there, rather than from the true ~April 19 start. As of Jun 2 the true run is ~45d; the dashboard shows 34d — an ~11-day shortfall equal to the lost April 19–29 stretch.
- Streak source ≠ activity source. "Active days" (108) and the heatmap span months, but the streak behaves as if it can only see back to ~April 30. The two are clearly derived from different datasets, and the streak's dataset has a truncation/gap in late April.
- Reproduces in the standalone CLI's
/statsas well, which independently anchors the contiguous run at April 30.
Likely root cause (hypothesis)
The streak appears to be recomputed from session-level data that has a gap/truncation around late April on this machine, rather than from the long-lived daily-activity aggregate that powers "Active days" (which spans 100+ days). Because of that gap, the contiguous run is anchored ~11 days after the true start, so the streak under-reports despite unbroken daily use.
Steps to reproduce
- Use Claude daily across a period that includes a day with no locally-retained session data (e.g., after a reinstall, machine switch, or data prune).
- Continue using Claude daily past that gap.
- Open the stats dashboard (auto card, or
/statsin the CLI). - Observe Current/Longest streak counting only from the first day after the gap, under-reporting the true consecutive-day run.
Impact
Long-running daily users see an inaccurate (under-counted) streak. The headline number on the dashboard is wrong for exactly the most engaged users, and is sensitive to local data gaps (reinstalls, machine switches, retention pruning) rather than reflecting true usage history.
Note
Day-level numbers here were reconstructed from local data and dashboard screenshots, so treat exact dates as approximate. The pattern is the robust part: unbroken daily use, a streak that advances but is anchored late, and a streak source that diverges from the activity-history source.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗