[Bug]: Cursor enterprise accounts silently disappear from Usage → Limits#28477

opened10d agobyVvladikkuzn

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/server

Steps to reproduce

  1. Sign the Cursor provider in with an Enterprise Cursor account (team on a token-based enterprise contract).
  2. Open Usage → Limits with All providers.

Expected behavior

Cursor appears in Limits — either with plan bars, or, when Cursor reports no plan allowance, with a visible notice and a link to Cursor's usage dashboard.

Actual behavior

Cursor is missing entirely; no card, no notice. Only other providers (e.g. Claude) show.

Impact

Major degradation or frequent failure

Enterprise Cursor users get no signal at all that their usage exists or where to see it; it looks like the integration is broken.

Version or commit

main @ 8b74a69019

Environment

macOS desktop, Cursor CLI 2026.10.22

Logs or stack traces

For an Enterprise account DashboardService/GetCurrentPeriodUsage returns 200 with no planUsage at all, e.g. {"billingCycleStart":"…","billingCycleEnd":"…","displayThreshold":100}. GetPlanInfo reports planName: "Enterprise" and GetTeams reports membershipType: "ORG_TOKEN_BASED_CONTRACT". Cursor's own CLI shows only dollar spend for enterprise users in this case.

cursorUsageResponseToLimits (packages/provider-cursor/src/server/usageLimits.ts) maps "no plan percentages" to a bare unsupported with no message and no external link. In packages/shared/src/usageLimits.ts collectLimitNotices skips unsupported and collectLimitAccounts skips providers with a notice, so the account renders nothing.

This is separate from #19008 (browser/API-key sign-in never calls GetCurrentPeriodUsage). Fixing #19008 alone would still leave enterprise accounts hidden because the successful response has no planUsage.

Proposed fix: when Cursor answers successfully without plan percentages, return unsupported with a short message and externalUsage pointing to https://cursor.com/dashboard?tab=usage, so the existing external-usage-link row (same path as managed ChatGPT logins) shows on web and mobile. A PR will follow.