[Bug]: Cursor enterprise accounts silently disappear from Usage → Limits#28477
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
- Sign the Cursor provider in with an Enterprise Cursor account (team on a token-based enterprise contract).
- 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.