Unofficial Cursor extension for VS Code–compatible editors. It shows included plan usage in the status bar (remaining allowance when the API returns it), with optional on-demand and token hints from secondary responses.
Important: Cursor does not publish a stable third-party usage API. This extension reads your local Cursor sign-in token from SQLite and calls Cursor-hosted HTTPS endpoints. Those endpoints or response shapes can change at any time and break the extension. This project is not affiliated with or endorsed by Cursor.
Team/Pro Usage:
Enterprise Usage:
The extension calls several endpoints on your configured apiBaseUrl (default https://api2.cursor.sh) and merges the results. What you see depends on your account:
| Plan | Primary source | What the status bar shows |
|---|---|---|
| Pro / Team / Ultra | Connect RPC GetCurrentPeriodUsage (planUsage: spend in USD cents toward your included allowance) |
Dollar-style remaining included spend (e.g. $123.45 left), unless your locale formats currency differently. |
| Enterprise (request-based quota) | GET /auth/usage (per-model buckets such as numRequests / maxRequestUsage) |
Remaining included requests for the preferred model bucket (see includedModelKey). |
GET /api/usage/summaryis merged when present (on-demand spend hints and extra fields).- Dashboard wins for “included” quota: if
GetCurrentPeriodUsagereturns usableplanUsage, it overrides empty or incompatible shapes from/auth/usage(which is why Team/Pro work alongside Enterprise-style responses).
Undocumented behavior; Cursor may change field names or routes without notice.
- Pro / Team / Ultra: status bar and tooltip for included plan spend (cents from API, displayed as money).
- Enterprise: status bar for monthly included requests per model bucket (configurable preferred key).
- Tooltip: billing period start, used/limit (or spend), optional on-demand lines, team spend limit pool hints when returned, and token-related keys when present.
- Background polling (default 5 minutes, minimum 60 seconds).
- Commands: Cursor Usage: Refresh and Cursor Usage: Show Details.
- Enterprise / proxy: set
cursorUsageStatusbar.apiBaseUrlto your approvedhttps://API origin; the extension only sends your bearer token to URLs under that origin (same checks for GET and POST paths below).
Relative to apiBaseUrl:
POST /aiserver.v1.DashboardService/GetCurrentPeriodUsage— Connect-style JSON body{}, headersContent-Type: application/jsonandConnect-Protocol-Version: 1(Pro/Team/UltraplanUsage).GET /auth/usage— legacy included usage / model buckets (often Enterprise).GET /api/usage/summary— optional summary and on-demand hints.
- Cursor (or a compatible build) with an active session (signed in).
- Local database path used by Cursor:
- Windows:
%APPDATA%\Cursor\User\globalStorage\state.vscdb - macOS:
~/Library/Application Support/Cursor/User/globalStorage/state.vscdb - Linux:
~/.config/Cursor/User/globalStorage/state.vscdb
- Windows:
All settings are under cursorUsageStatusbar.*:
| Setting | Default | Description |
|---|---|---|
apiBaseUrl |
https://api2.cursor.sh |
HTTPS origin for all usage API calls (must allow the GET and POST paths listed above if you use a proxy). |
pollIntervalSeconds |
300 |
Refresh interval (minimum 60). |
displayFormat |
remaining |
remaining, fraction, or compact (for cents plans, values are formatted as currency; for request plans, as counts). |
includedModelKey |
gpt-4 |
Preferred model bucket key when parsing /auth/usage (Enterprise-style JSON). Ignored when the dashboard response supplies planUsage. |
warningRemainingPercent |
20 |
Status bar warning color when remaining ≤ this % of limit. |
criticalRemainingPercent |
10 |
Status bar critical color when remaining ≤ this % of limit. |
- The access token is read from disk on each refresh and not stored by the extension.
- The token is sent only over HTTPS to the configured
apiBaseUrlorigin (same-origin enforcement for the dashboard POST and the GET endpoints above). - Errors are kept generic so tokens and local paths are not leaked in UI messages.
npm install
npm run compile
npm testPress F5 in this folder to launch the Extension Development Host (uses the default Run Extension configuration).
npm install -g @vscode/vsce
npm run compile
npx vsce packageInstall the generated .vsix via Extensions: Install from VSIX… in Cursor.
Cursor surfaces extensions from Open VSX. To publish:
- Create an access token at Open VSX.
- Use
npx ovsx publish -p <token>(aftervsce packageor from the packaged extension per Open VSX docs).
Update publisher in package.json to your Open VSX namespace before publishing.
MIT. The full license text is included in the extension package as LICENSE.

