Last week I wrote about Token Use reaching 1.0.0, and the point of that post was mostly about what Iād taken out. The Insights area was gone, the Agent Setup page was gone, and the tool had settled into a single sentence: it reads your local usage records, normalises them, prices them, and shows you the result.
That lasted about four days. Since then there have been five releases and Token Use is on 1.2.2. In my defence, the thing I added back is nothing like the thing I removed.
Thatās the last seven days. Ā£1538, 8,308 calls, 61 sessions. Graph, Coach, and Scrollback in the sidebar are all new since the 1.0.0 post.
Coach mode, and the extension that started it
A colleague at work pointed me at AI-Engineering-Coach, a VS Code extension from Microsoft that watches how you work with AI coding tools and grades you on it. Not on your code, on your practice: are your prompts specific enough, are your sessions running long past the point where context has gone stale, are you reviewing what the model writes before you accept it. Itās MIT licensed, and the rules are readable.
The reason it stuck with me is that itās answering a question Token Use was already sitting on the data for and never asking. I had every prompt, every response, every edited file, every timestamp, sat in a local archive being summed into a cost figure. Cost tells you what you spent. It tells you nothing about whether you spent it well.
So Coach is a report card for how you work with your AI tools. It landed in 1.1.0 āReport Cardā as a desktop sidebar page, and the TUI got the same grade, findings, and Setup panel a couple of releases later under k.
The detection is a Rust-native port of the extensionās rule catalogue, vibe-coded in Rust using Claude Code like the rest of Token Use. Worth being clear about the split, given what the rest of this post is about: Claude Code wrote the port, and the calls about what to carry over, what to leave out, and where to deviate were mine.
Itās all evaluated locally. No network calls, no model in the loop, which is the same line I drew when I cut Insights: Iām happy for the tool to count things, Iām not happy for it to start another model to tell you what the count means. There are 28 rules now across four groups (prompt quality, session hygiene, code review, tool mastery), each with a severity that costs you points when it fires, and the composite grade maps onto A+ through F. Attribution is in NOTICE at the repo root and in docs/development/coach.md. The port is rules-as-code rather than the referenceās user-editable markdown DSL, and thresholds are Microsoftās defaults unless thereās a documented deviation.
Below the grade thereās a Findings tab that turns each triggered rule into a filterable evidence list, an AI Output tab counting what the models actually produced, and an Activity tab with work hours, a calendar strip, and per-project breakdowns. The Flow and Pace panels sit at the bottom of the Report tab, and mine puts my average longest unbroken block at 222 minutes.
What I deliberately skipped
Sixteen of the reference rules donāt work here, and the reason is worth saying out loud because itās the whole shape of the port. Rules like yolo-mode, no-plan-mode, no-slash-commands and auto-approve-terminal are all detectable from VS Codeās own chat logs. Token Use reads the usage files that Claude Code, Codex, Cursor, Copilot, and Gemini write to disk, and those signals simply arenāt in there. Rather than approximate them and hand you a grade built on guesses, theyāre skipped.
The reference also has a profanity rule. That one I skipped on a judgement call: scanning someoneās prompts for swearing reads as surveillance in a usage dashboard, whatever the intent. And the extensionās LLM-backed features (Skill Finder, Learning Center, the Context Health review) are permanently out of scope under the no-network rule.
Going the other way, thereās one rule that isnāt in the reference set at all. Retry Loops borrows codeburnās one-shot/retry idea and points it at the archive: it flags periods where a high share of edited files needed a re-edit after a shell run, which is the pattern where a change didnāt survive its own verification. It only fires for tools that actually report edited files, so Claude Code, Codex, and Cursor.
The other thing I care about here is that rows with missing history stay NULL and are excluded from rule denominators. If half your archive predates the enrichment columns, that half doesnāt get to skew your grade. A grading tool that quietly marks you down for data it never had is worse than useless.
The Setup panel
A couple of releases later, in 1.2.0, Coach picked up an advisory panel alongside the grade thatās kept separate from it, deliberately. It looks at your local Claude Code configuration and flags configured MCP servers you never call, CLAUDE.md files over 200 lines once @imports are expanded, files being re-read repeatedly inside a single session, and reads under node_modules and friends. Each one comes with a rough token-savings estimate.
None of it affects your practice grade, because none of it is really about practice. Itās the stuff thatās quietly costing you input tokens on every single turn.
Everything else that shipped
Coach was the headline, but four more releases went out in the same week.
1.1.1 āGround Truthā was a correction. Cursor changed where it stores things, and Token Use had been reading a shape of the data that no longer reflected what Cursor actually does. Ingestion now goes through the current Agent store.db alongside the older state bubbles, rebuilt around a single canonical reconstruction of each user turn. Cursorās first-party model pricing went in too, and model lookups became tool-aware so Cursor models get Cursor rates instead of falling through to a global table. Codex Desktop was also silently dropping usage events where the credit balance arrived as a string rather than a number, which is fixed and backfilled. The archive now carries provenance labels for interaction mode, token quality, and timestamp quality, and Coachās timing rules only trust exact timestamps.
1.2.0 āTotal Recallā is the big one after Coach. Scrollback is full-text search across every archived transcript, backed by an SQLite FTS5 index, available as a TUI tab on / and a desktop page. Thereās a new MCP server (tokenuse mcp) exposing read-only status, overview, projects, and scrollback tools over stdio, and it will also serve over a loopback HTTP endpoint so it can run alongside the desktop app rather than fighting it for the archive. By Activity classifies every call into one of thirteen task categories using deterministic rules rather than a model. And thereās tokenuse doctor for per-tool diagnostics, plus tokenuse status and tokenuse overview for scriptable summaries with --json.
Buried in that release is a parser fix Iām quietly pleased with. Claude Code writes streamed JSONL where a single assistant turn can span multiple lines, and the old parser took the first line and dropped the rest, which silently lost tool calls. Incremental sync also went byte-level, so on a ~50MB project a one-file append now resyncs in about 0.04s rather than about 0.4s.
doctor is the one I keep going back to. It walks every probed location for every tool and tells you what it found, whatās missing, and how many calls it managed to parse, which turns āwhy is Cursor showing nothingā from a guess into a list.
The Projects page also became a two-level thing in this release: an index, then a page per project. This is the Token Use repo itself over the same seven days. Ā£1098, and 45,749 lines of Rust that Claude Code wrote rather than me, which is the honest accounting behind a post otherwise full of āI addedā.
1.2.1 āModel Citizenā made the Models catalogue clickable. Selecting a row opens a page for that model with its own KPIs, session list, token-composition split, per-tool donut, and an effective-pricing panel. That last one says so explicitly when a model is being billed through the pricing bookās fallback row, rather than presenting a guess as a price. The TUI got m for a typeable model picker, mirroring the existing p project picker.
Itās also where the shared model registry from 1.0.0 earns its keep. Every dated pin, vendor prefix, and router alias in the raw logs folds down into one row per model, which is why that table reads as a list rather than the same model three times under slightly different names.
1.2.2 āConstellationā shipped yesterday and adds a 3D Graph page: projects wired to the tools and models they use, or the same thing from the other end. Node size and edge strength follow whichever measure you pick (calls, spend, or tokens), and selected nodes drill straight into their detail pages. Large graphs get capped, and when that happens the view tells you how many entities it left out instead of pretending itās showing you everything.
Note the line above the canvas: 16 of 62 entities, 33 relationships. Drawing the top slice and letting you assume thatās everything would have been easier, and Iāve used enough dashboards that do exactly that.
Installing
# The terminal UIbrew install russmckendrick/tap/tokenusetokenuse
# The macOS desktop appbrew install --cask russmckendrick/tap/tokenuse-desktopopen -a "Token Use"Linux, Windows, and manual desktop downloads are on GitHub Releases, and thereās more at tokenuse.app.
Wrapping up
Adding a report card, a search index, an MCP server, and a 3D graph a week after a post about cutting features is not a great look. But Coach still passes the test I set for 1.0.0: it counts whatās already in your data and shows you the count, rather than starting a model to tell you what the count means.
My grade is a C. 77 out of 100, 19 of the 28 rules clean. Session hygiene came out at 66, which is a D, mostly down to 51 runaway agent loops and an average unbroken block of nearly four hours.
Coach has also flagged me for Vibe Coding eight times, with the advice to write a small spec first and review the output line by line. A tool I vibe-coded, telling me off for vibe-coding. I did briefly wonder about retuning that threshold.
Thanks to the team at Microsoft who wrote those rules and put them out under MIT, and to my colleague for pointing the extension out. Coach exists because someone else had already done the thinking about what good looks like.
If you give it a go and the grading feels wrong for how you work, thatās worth an issue. The rules are code, and thresholds tuned against VS Code chat logs wonāt be right for everyone. Pull requests and issues are welcome.











