Cursor extension that shows plan quota usage in the IDE status bar after activation—no need to open Settings manually.
- Two status bar indicators (visible on activation):
- Included quota usage — API/included pool (
apiPercentUsed) with progress bar and percentage - Plan quota usage — total plan usage (
totalPercentUsed) with progress bar and percentage
- Included quota usage — API/included pool (
- Separates Auto mode vs included/API usage in tooltips
- Auto-refresh (default 60s, configurable)
- Cached last-known usage on startup while fetching
- Click status bar → guidance to open Cursor Settings → Usage
- Command: Cursor Quota: Refresh Now
- Node.js 22 via nvm:
nvm use 22(see .nvmrc) - pnpm:
corepack enableornpm install -g pnpm
Use pnpm only for this repo—do not mix npm install with pnpm-lock.yaml.
nvm use 22
pnpm install
pnpm run compilePress F5 in Cursor/VS Code to launch an Extension Development Host, or package:
pnpm run packageThen in Cursor: Extensions → ⋯ → Install from VSIX… → select the generated .vsix.
Reload the window if prompted. Status bar items appear automatically on startup (onStartupFinished)—no manual setup.
| Setting | Default | Description |
|---|---|---|
cursorQuota.refresh.enabled |
true |
Enable automatic polling |
cursorQuota.refresh.intervalSeconds |
60 |
Poll interval (30–300 seconds) |
cursorQuota.statusBar.showIncluded |
true |
Show included usage indicator |
cursorQuota.statusBar.showTotal |
true |
Show total plan percentage indicator |
cursorQuota.statusBar.showAccountEmail |
false |
Show cached email in tooltips |
- Reads the Cursor session from local
state.vscdb(cursorAuth/accessToken,cursorAuth/refreshToken). - Calls the same reverse-engineered endpoint the IDE uses:
POST https://api2.cursor.sh/aiserver.v1.DashboardService/GetCurrentPeriodUsage - Refreshes expired tokens via
https://api2.cursor.sh/oauth/tokenand stores them in VS Code Secret Storage (does not write back tostate.vscdb).
See docs/RESEARCH.md for data sources, limitations, and account-switching investigation.
Not supported by this extension. Cursor does not expose a supported API for switching subscription accounts inside one window.
Recommended approach (official workaround): run separate Cursor instances with different user data directories:
open -na "/Applications/Cursor.app" \
--args --user-data-dir="$HOME/.cursor-profile-work"Optional: enable cursorQuota.statusBar.showAccountEmail to display the cached login email in tooltips and avoid using the wrong account.
Community “account switcher” extensions swap SQLite snapshots of state.vscdb—unsupported, fragile, and a security risk. This project does not implement that.
| Symptom | Action |
|---|---|
Quota unavailable |
Confirm Cursor Settings → Usage works natively; sign in again |
| Stuck on loading | Run Cursor Quota: Refresh Now from the Command Palette |
| Wrong percentages | Cursor may show included vs credits separately; compare with Settings UI |
| DB read errors | Uses bundled SQLite binary (no installation required). If issues persist, check Extension Host log |
This extension includes pre-compiled SQLite 3.53.1 binaries for all supported platforms:
- macOS Intel (
darwin-x64) and Apple Silicon (darwin-arm64) - Linux x64 (
linux-x64) and ARM64 (linux-arm64) - Windows x64 (
win32-x64) and ARM64 (win32-arm64)
No additional installation or configuration required.
To regenerate the Linux ARM64 binary (no official precompiled CLI from SQLite):
docker run --rm --platform linux/arm64 -v "$PWD:/project" -w /project ubuntu:24.04 \
bash -c 'apt-get update && apt-get install -y build-essential curl file && bash scripts/build-linux-arm64-sqlite.sh'Validate all bundled binaries with bash scripts/verify-binaries.sh.
- Reads auth tokens from your local Cursor install (same data the IDE already uses).
- Network requests go only to
api2.cursor.sh(Cursor). - No third-party servers.
- Unofficial API — may change without notice when Cursor updates.
- Enterprise teams — Admin/Analytics APIs at
api.cursor.comare not used (team keys required). - Credits vs included pool — UI follows
GetCurrentPeriodUsage; “100% included” in Settings can still allow usage via credits. - Cursor-only — built for Cursor; standard VS Code may lack
state.vscdbauth keys.
nvm use 22
pnpm run watch # compile on save
pnpm test # unit tests
pnpm run lint # typecheckMIT