Skip to content

Extra usage widgets show permanent [Timeout] when account has no monthly limit set #413

Closed

Description

@mhriemers

Summary

For accounts that have extra usage enabled but no monthly limit configured (monthly_limit: null), both extra-usage widgets permanently render [Timeout] even though the usage API responds quickly and successfully.

Environment

  • ccstatusline 2.2.19 (npx, auto-update), macOS 15
  • Claude subscription with extra usage enabled, no monthly limit set

Raw API response (/api/oauth/usage, trimmed)

"extra_usage": {
  "is_enabled": true,
  "monthly_limit": null,
  "used_credits": 542.0,
  "utilization": null,
  "currency": "EUR",
  "disabled_reason": null
}

What happens and why

USAGE_WIDGET_REQUIREMENTS declares extra-usage-remaining as requiring extraUsageEnabled, extraUsageLimit, and extraUsageUsed (and extra-usage-utilization requires extraUsageUtilization). With monthly_limit: null the API never supplies extraUsageLimit/extraUsageUtilization, so hasRequiredUsageFields() fails on every fetch — including perfectly successful ones. The fetch loop treats the response as incomplete, re-fetches each cycle, and the widget falls through to getUsageErrorMessage(), displaying [Timeout] indefinitely.

That error string is doubly misleading: the network round-trip succeeded, and no amount of waiting/cache-clearing can ever resolve it — the field will simply never exist for this account configuration.

Note hasRequiredUsageField() already special-cases extraUsageEnabled === false to excuse the detail fields; the enabled === true && monthly_limit === null configuration (pay-as-you-go with no cap) just isn't accounted for.

Expected behavior

When the fetch succeeds but a widget's required field is absent from the response, render something honest (n/a, or nothing) instead of a network-error string, and treat the response as complete so it doesn't trigger continuous re-fetching.

Related: #414 (feature request: widget for used_credits — the only displayable extra-usage number for limit-less accounts), #415 (hardcoded $ vs the API's currency field).

Happy to provide more details or test a fix.

Activity

  1. changed the title [-]Extra usage widgets show permanent [Timeout] when no monthly limit is set; no widget for used_credits; currency hardcoded to $[/-] [+]Extra usage widgets show permanent [Timeout] when account has no monthly limit set[/+] on Jun 4, 2026
  2. added a commit that references this issue on Jun 14, 2026
    bc34c3a
  3. added a commit that references this issue on Oct 20, 2026
    65273f3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions