Token Police
Free · Open source · Chrome extension

Know how much AI coding quota you have left — at a glance.

One side panel shows your remaining usage for Claude Code, Codex, Cursor, Grok, Grok Bot and Gemini — with reset times, burn rate and low-quota alerts. No account linking, no API keys, and nothing leaves your browser.

Token Police is a Chrome extension for Claude Code, Codex and Cursor quota. It is not a guide for shortening prompts.

Latest release

Works in Chrome and other Chromium browsers (Edge, Brave, Arc). The button always points to the newest version on GitHub.

The side panel showing remaining quota for six coding agents, with the hair mascot floating over the cards

The real panel, with sample data.

Tracks the usage pages you already use
Claude Code Codex Grok Cursor Grok Bot Gemini
What it does

Stop tab-hopping to check six different usage pages.

Every AI coding tool hides its quota in a different place. This extension reads them all and puts the numbers where you can see them.

All quotas, one click

Weekly and short-term limits for all six agents, plus exactly when each one resets. Pick which agents to track in ⚙.

Burn rate & 7-day trend

Once it has a few hours of data, it estimates how fast you're spending and warns when you'll run out before the next reset. Each card draws a sparkline.

Stays in the side panel

Click the toolbar icon to open the side panel. Quotas stay visible while Refresh runs — no extra windows stacked on top.

Low-quota alerts

Desktop notification when any tracked agent drops below 15%, and again below 5%. Turn it off in settings if you'd rather not.

Auto-check, in the background

On the interval you pick (default once an hour) it re-reads your usage pages in background tabs without stealing focus. Or hit Refresh for a fresh read.

Private by design

No API keys, no account linking. It reads the numbers off pages you're already signed into and keeps everything in your browser's local storage.

New in v1.5 · Dispatch

One prompt, opened in all of them.

The Dispatch button in the footer opens a composer. Tick Chat or Code and they come up as real Chrome tabs with the prompt already filled in. You still hit Send yourself. Auto-send is optional — and it does spend quota.

Dispatch composer in the side panel: a prompt, Chat and Code chips, and an Open button
Type a prompt, pick Chat or Code, tick where it goes.
Dispatch board listing three opened agent tabs so you can jump back
A tab list. Click a card to jump back.
  • Filled in, not sent. Each tab opens with the prompt in the composer. You confirm Send or Start task on that site. Chat can opt into auto-send; Code always stays fill-only.
  • Chat vs Code. Chat opens Claude, ChatGPT, Grok and Gemini. Code opens Claude Code, Codex Cloud and Cursor Agents. Grok Bot stays on the quota cards — it has no public web composer.
  • A tab list so you can jump back. After opening, the panel keeps a tab list. Click a card to focus that tab. Live output stays on their page.
Auto-dispatch picks the agent with the most leftover and skips anyone under 15%.
Take breaks too

A hair mascot that thins while you sit, and makes you stretch.

Quota isn't the only thing that runs out while you vibe-code. The panel comes with a small companion that keeps an eye on you as well.

The panel with the hair mascot floating over the quota cards, showing 51% hair left
Hair falls the longer you sit. Leftover quota is the cap.
Break time: the quota cards are frosted over and the mascot offers three short activities with a Done button
Break time: cards frost over until you finish one activity.
  • Hair falls while you sit. After a stretch it grows back to full, then thins over 2 hours — or 1 hour if you are burning hard. Leftover quota is the cap. Drag it anywhere, or let it wander.
  • Every 2 hours it asks you to move (every hour if an agent burned more than 10% in that window). A frosted veil covers the cards and 2–3 random stretch or rest activities appear, drawn from a pool of 100.
  • Pick one, go do it, tap Done. The veil lifts, the hair grows back, and the numbers are readable again.
  • Move reminder (on by default, switch in ⚙): a desktop nudge when an agent burns more than 10% of its quota within 2 hours, at most once every 2 hours per agent. It's a nudge, not a lock — an extension can't stop your terminal.
Not your thing? Both the mascot and the move reminder are switches in ⚙. Turn them off and the panel is back to plain numbers.
Install in 2 minutes

No store listing — just a folder.

The extension ships as a plain .zip. You unzip it once and tell Chrome where the folder is.

Download the .zip

Use the Download button on this page. It is always the newest release.

Unzip it somewhere permanent

Double-click on macOS, or right-click → Extract All… on Windows. You get a folder containing manifest.json. Keep it out of Downloads — Chrome loads the extension from this folder every time it starts.

Open chrome://extensions and turn on Developer mode

Paste the address into Chrome's address bar. The Developer mode toggle is in the top-right corner.

Click “Load unpacked” and pick the folder

Select the unzipped folder (the one with manifest.json inside). The extension icon appears in the toolbar — pin it if you like.

Click the icon, then Refresh

The dashboard opens in Chrome's side panel. Press Refresh to fetch your numbers — a few tabs may flash open and close while it reads each usage page.

Why “Developer mode”? Chrome calls any extension loaded from a folder a “developer” extension. Nothing here needs coding — it's just how Chrome installs extensions outside its store.

Steps 3 and 4, as they look in Chrome (loops every 12 s):

Recorded in a real Chrome. Click the video to view it full-screen. The folder picker will be your operating system's own dialog, so it looks a little different.
Staying up to date

The panel tells you when there's a newer version.

  • Once a day the extension asks GitHub what the newest release is. When there is one, the version line at the bottom of the panel turns into a “New version available — download” link.
  • To update: download the .zip again, replace the contents of your extension folder, then press the ↻ reload button on the extension's card in chrome://extensions. Your settings and history stay.
Privacy

Your usage data never leaves your browser.

  • No server. Numbers are read from each product's own usage page and stored in chrome.storage.local.
  • No accounts, no keys. It only works on pages you're already logged into. If you're signed out, the card says so and links you to that page.
  • One optional request. The daily update check asks GitHub for the latest version number and sends nothing about you. You can turn it off in ⚙.
FAQ

Questions people ask

Why isn't it on the Chrome Web Store?

It's a small open-source side project that reads other products' pages, and store review for that kind of extension is slow and unpredictable. Shipping a .zip from GitHub means every fix reaches you the same day. You can inspect every file in the folder — it's plain JavaScript.

Is it safe? What can it access?

It only has permission for five domains (claude.ai, chatgpt.com, grok.com, cursor.com, gemini.google.com). It reads the usage numbers shown there. It cannot see other sites, and it makes no network requests apart from the optional daily version check.

Which browsers work?

Google Chrome, plus any Chromium-based browser with a side panel: Edge, Brave, Arc, Vivaldi. Firefox and Safari are not supported.

A card says it couldn't read the page.

Almost always you're signed out of that product. Click the link on the card, sign in, then press Refresh. Some pages (Cursor, Grok) won't render in a background tab, so the automatic check keeps their last value — Refresh briefly brings them to the front for a guaranteed read.

I don't use one of the agents.

Open ⚙ in the panel and untick it. Unticked agents are skipped by Refresh and hidden from the dashboard.

Can I turn off the hair mascot?

Yes. Open ⚙ in the panel and untick "Hair mascot". The break-time veil goes with it. The move reminder is a separate switch in the same menu, on by default.

Does Dispatch send the prompt for me?

Not by default. It opens real Chrome tabs and fills the composer — you confirm Send or Start task on each site. Turn on Auto-send and Chat will be submitted for you (that does spend quota); Code always stays fill-only. Grok Bot has no public web composer, so it stays on the quota cards.

Can I get the very latest unreleased code?

Yes — grab the source zip of the main branch. It installs the same way, just with a few extra development files in the folder.

Ready? It's free.

Download, unzip, load the folder. Two minutes from now you'll know exactly how much quota you have left.