Desktop app: plan-usage-history.json is missing model-scoped limits (Fable)

Status Open
Maintainer reply None cached
Activity 0 comments · opened Sep 24, 2026

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet
  • [x] This is a single feature request (not multiple features)

Problem Statement

The Claude desktop app saves plan usage to plan-usage-history.json so menu bar tools (like Vorssaint) can show limits without handling a login token.

The app writes only the old flat fields from the usage response, abbreviated to two-letter keys: "fh" (five_hour), "sd" (seven_day), "so" (seven_day_opus), "sn" (seven_day_sonnet) and a few more. Fable has no flat field. The server reports it only in the newer limits array, as kind "weekly_scoped" with scope.model.display_name "Fable", and the writer never looks at that array.

Right now the file gets written as {"fh": 8, "sd": 23}, so it is missing a Fable-only key even though the server reports Fable at 38%. Any tool built on the file cannot show the one limit that actually constrains me, and the only workaround is calling api.anthropic.com/api/oauth/usage with the Claude Code keychain token, which is what this file was meant to avoid.

Proposed Solution

Have the history writer also persist model-scoped entries from the limits array, following the existing two-letter key pattern. For Fable that would be "sf" (seven_day Fable), like "so" is seven_day Opus.

What the app writes today:
{"fh": 8, "sd": 23}

What it should write:
{"fh": 8, "sd": 23, "sf": 38}

Alternative Solutions

Calling https://api.anthropic.com/api/oauth/usage directly with the Claude Code OAuth token from the Keychain. That returns the full limits array including Fable. But it means every menu bar tool reads and handles a login token, and the endpoint rate limits quickly (429 after a handful of requests), which is exactly what plan-usage-history.json exists to avoid.

Priority

Nice to have

Feature Category

Other

Use Case Example

Vorssaint's AI agents section reads plan-usage-history.json to show Claude plan limits in the Dynamic Island. It maps "fh", "sd", "so" and "sn" today. With an "sf" key it would show the Fable weekly limit next to the session and weekly ones, without any token handling.

Additional Context

Claude desktop 2.7032.0, macOS 26.2, Max plan.

View original on GitHub ↗