Live Cursor usage in your status bar & sidebar — read-only, no login (reuses Cursor's local session).
code --install-extension <file>.vsixCopies a short prompt — paste it into Cursor (or another AI agent) to set this up for you.
A tiny, read-only VS Code / Cursor extension that shows your live Cursor usage in the status bar and a sidebar panel — with no separate login. It reuses the session token Cursor already stores locally.
⏲ 415/500 (included requests) · $0/$75 (on-demand spend); each turns white → amber (≥80%) → red (≥100%).cursorAuth/* keys read-only from Cursor's SQLite store; the token stays in memory only. Requires the sqlite3 CLI on PATH.Install: download the latest .vsix from Releases, then code --install-extension <file>.vsix (or "Install from VSIX" in the Extensions panel).
A tiny, read-only VS Code / Cursor extension that shows your live Cursor usage in the status bar and a sidebar panel — with no separate login. It reuses the session token Cursor already stores locally on your machine.
| Dark theme | Light theme |
|---|---|
![]() | ![]() |
The whole UI adapts to your VS Code / Cursor theme (dark, light, or high-contrast).
⏲ 415/500 $0/$75 (included
requests used/limit and on-demand spend), so each is colored on its own:
white → amber (≥80%) → red (≥100%). Click to open details.Resets <date> (<daysLeft>d left).$used / $limit, plan.<req>/day → ~<projected> by reset.cursorUsage.detailLevel.No comments yet.
The cursor.com dashboard authenticates via a cookie built from Cursor's own local session:
WorkosCursorSessionToken=<userSub>::<accessToken>
This extension reads that token read-only from Cursor's global SQLite store (the same DB
Cursor uses) via the sqlite3 CLI (-readonly -json, only the four cursorAuth/* keys — never
the whole file, never read-write, never VACUUM):
| OS | Path |
|---|---|
| macOS | ~/Library/Application Support/Cursor/User/globalStorage/state.vscdb |
| Linux | ~/.config/Cursor/User/globalStorage/state.vscdb |
| Windows | %APPDATA%/Cursor/User/globalStorage/state.vscdb |
The cookie/JWT is held in memory only — never logged, never persisted. Cursor rotates the token; on HTTP 401/403 the extension re-reads the keys once and retries once, then shows a Reconnect hint.
Requires the
sqlite3CLI on your PATH (preinstalled on macOS;apt install sqlite3/ available on Windows).
| Setting | Default | Description |
|---|---|---|
cursorUsage.enable | true | Enable the extension (status bar + polling). |
cursorUsage.refreshIntervalSec | 300 | Refresh interval in seconds (min 60). |
cursorUsage.detailLevel | "auto" | auto | compact | full. |
cursorUsage.showStatusBar | true | Show the status-bar badge. |
cursorUsage.checkForUpdates | true | Check GitHub once a day for a newer version and notify. |
Refreshes on activation, then polls on the interval (hard-throttled to at most 1 network fetch per 60s). Use Cursor Usage: Refresh for a manual refresh.
npm install
npm run build # bundle with esbuild → dist/extension.js
npm run package # produces cursor-usage.vsix
Install the .vsix: Command Palette → Extensions: Install from VSIX…
The extension checks the GitHub Releases
API once a day (in the background) and notifies you when a newer version is available, with
Download / Release Notes / Skip This Version actions. Disable via
cursorUsage.checkForUpdates, or run Cursor Usage: Check for Updates anytime.
These are undocumented internal cursor.com endpoints and can change without notice. This is
for personal, read-only use. The extension never writes to state.vscdb and never logs or stores
your session token.
MIT