Tracking Claude Code: terminal, desktop, IDE and cloud
How to install the Inlinr plugin for Claude Code once and have it cover the terminal, the desktop app and the IDE extensions, and the three extra steps cloud sessions need because they do not install plugins.
Setup5 min read

In this guide
The Inlinr plugin for Claude Code reads the transcripts Claude Code already writes on your machine and turns them into time, token counts and assistant-written lines. It is installed once per machine. What differs between the terminal, the desktop app, an IDE and a cloud session is only where Claude Code runs.
Which surfaces need what
- Terminal, desktop app, VS Code and JetBrains all run Claude Code on your own machine and share its plugins. One install and one activation cover all four.
- Claude Code on the web runs each session in a fresh cloud container that does not install plugins. It needs a token in the environment and a hook in the repository instead.
Terminal
Add the marketplace and install the plugin:
claude plugin marketplace add inlinrhq/inlinr-claude-code
claude plugin install inlinr@inlinr --scope userKeep --scope user. It installs the plugin for every project on the machine. Installed for one project only, the plugin runs in that project's sessions and nowhere else, which looks exactly like an activation that only works sometimes.
Then, once, inside any Claude Code session:
/inlinr:activateIt prints a link and a code. Open the link, sign in with GitHub and approve the device. The token is saved in ~/.inlinr, and from then on every session on this machine is tracked.
Tracking starts when you activate, not before. Claude Code keeps every transcript it has written, and uploading months of past work the moment you connect is not something anybody asks for by activating a plugin.
Desktop app
If you installed and activated from the terminal, there is nothing to do: the desktop app uses the same plugins and the same ~/.inlinr token.
Without a terminal, install from the app's /plugin menu: add the marketplace inlinrhq/inlinr-claude-code, then install inlinr. The desktop chat has no shell, so ask in plain words instead of typing commands. “Connect Inlinr” runs the activation and gives you the link; “Is Inlinr tracking?” runs the status check.
VS Code and JetBrains
The Claude Code extensions for VS Code and JetBrains IDEs drive the same Claude Code on your machine, so a plugin installed with --scope user already runs there. Nothing else to install.
The Claude Code plugin tracks what the assistant does. To track your own typing in the editor as well, install the Inlinr extension for VS Code, which also works in Cursor and Windsurf. The two are separate sources and can run side by side.
Cloud sessions
Claude Code on the web does not install plugins, not even the ones a repository enables. Two things do carry over into its containers: the environment's variables, and the hooks in a repository's own .claude/settings.json. Cloud tracking uses both:
- On your own machine, run
/inlinr:cloudand approve it. It prints a token and a hooks block. - In the cloud environment's settings, add
INLINR_TOKEN=<token>. Set network access to Custom, addinlinr.com, keep the default package managers, and save. - Merge the hooks block into
.claude/settings.jsonin each repository you work on in the cloud, and commit it. Never commit the token itself: it belongs in the environment only.
The hooks check CLAUDE_CODE_REMOTE, which is only set in the cloud, so on your laptop they do nothing and never double-count with the plugin. Claude Code reads a repository's hooks only in single-repository cloud sessions.
INLINR_TOKEN works on any machine nobody activates by hand, such as a CI runner or a shared dev box: a token from the environment is used whenever none was saved by /inlinr:activate.
Check that it works
/inlinr:statusIt says which build is running, whether this machine is connected, when it last synced, how many transcripts have something new, and whether errors were logged. An empty dashboard looks the same whether nothing was tracked or nothing was sent; this is how you tell which.
If a session starts on a machine that is not connected, Claude is told and offers to fix it. Nothing is said when tracking works. Work in a folder with no git remote is skipped, because there is no project to attribute it to.
Updating and disconnecting
claude plugin update inlinr@inlinrIf that changes nothing, uninstall and install again: the plugin cache is keyed by version. To have every machine update on its own, set autoUpdate on the marketplace in ~/.claude/settings.json:
{
"extraKnownMarketplaces": {
"inlinr": {
"source": { "source": "github", "repo": "inlinrhq/inlinr-claude-code" },
"autoUpdate": true
}
}
}/inlinr:deactivate removes the local token and revokes the device on inlinr.com. Your history is untouched, and /inlinr:activate connects the machine again.
What gets sent
File paths that were edited, lines added and removed per edit, the four token counts, the model name and session id, the repository remote and branch, and when the session was active, to the minute. Never file contents, your prompts or the assistant's responses.
See it on your own sessions
Once the plugin is connected, every Claude Code session shows up on your dashboard with its time, its four token counts and the lines the assistant wrote, per project.
Free for solo use · no source code leaves your machine