Help & FAQ
Answers to common questions and troubleshooting guides. Most issues can be fixed by pasting a command into Claude Code.
1 Setup & Installation
How do I install the tracking hook? ▼
Go to the Install page, copy the prompt, and paste it into any Claude Code session. Claude will add the hook to your settings automatically.
The hook is a single entry in ~/.claude/settings.json that fires when a session ends and sends your usage data to your dashboard.
Which editors/platforms are supported? ▼
Anywhere Claude Code runs and reads ~/.claude/settings.json:
- ✓ Claude Code CLI (terminal)
- ✓ VS Code extension
- ✓ JetBrains plugin
- ✓ Windows (PowerShell, CMD, WSL, Git Bash)
- ✓ macOS and Linux
- ✗ Claude.ai (web) — no hook support
- ✗ Claude mobile app — no hook support
- ✗ Windsurf / Cursor — different products
On Windows, the settings file is at %USERPROFILE%\.claude\settings.json (same as ~/.claude/settings.json in WSL or Git Bash). The hook uses curl, which is built into Windows 10 and later.
I already have Stop hooks — will this conflict? ▼
It can. Claude Code pipes session data to hooks via stdin, but only the first hook that reads stdin gets the data. If you have an existing hook that uses $(cat) or reads stdin, our hook needs a different approach.
The install prompt on our Install page handles this automatically — it tells Claude to detect existing hooks and use the right method.
If it still doesn't work, paste this into Claude Code:
Check my ~/.claude/settings.json hooks.Stop array. If there's a MyTokenTracker hook that uses "-d @-" but another hook before it reads stdin with cat or $(cat), change the MyTokenTracker hook to read from the last entry of whatever log file the first hook writes to instead of stdin. The curl command should stay the same — just change how it gets its input.
How do I uninstall? ▼
Paste this into Claude Code:
Remove the MyTokenTracker hook entry from hooks.Stop in my ~/.claude/settings.json. It's the one with "mytokentracker.io" in the command. Keep any other hooks.
! Troubleshooting — Not Working
Dashboard says "Not connected" or shows no data ▼
Most common cause: No session has ended yet. The hook only fires when a Claude Code session ends — not while it's active.
Test it: Open a separate terminal and run:
claude -p "hello"This starts and immediately ends a session. Refresh your dashboard — you should see data.
Still nothing? Paste this into Claude Code to verify your hook is installed correctly:
Read my ~/.claude/settings.json and show me the hooks.Stop array. Is there an entry with "mytokentracker.io" in the command?Hook is installed but data still isn't showing up ▼
The hook might be failing silently. Common causes:
- The command got modified — especially
-d @-at the end. It must be exactly-d @-(dash, at-sign, dash). Paste this into Claude Code to check:Show me the MyTokenTracker hook in ~/.claude/settings.json. Does the command end with exactly "-d @-"? If not, fix it. - Another hook consumes stdin first — see the "I already have Stop hooks" FAQ above.
- Network issue — the hook runs
curlwhich needs internet access. Test manually:curl -s https://mytokentracker.io/up
I see data but the token counts seem wrong ▼
Token counts come directly from Claude Code's Stop hook event. If they look off, it's usually because:
- The session was very short (few tokens)
- Cache read tokens dominate — this is normal, often 95%+ of all tokens
- The model shown doesn't match what you expected — Claude Code may switch models
Use Quick Sync on the dashboard to calibrate accuracy against Claude's actual reported percentages.
500 error on the dashboard ▼
Try logging out and back in. If the issue persists, try a hard refresh (Cmd+Shift+R on Mac, Ctrl+Shift+R on Windows).
If you still see a 500, open an issue on GitHub with what you were doing when it happened.
Windows: hook not working or curl errors ▼
The install prompt works the same on Windows — just paste it into Claude Code. A few things to check:
- Verify curl is available — it ships with Windows 10 and later. Open PowerShell and run
curl --version. If you get a "not recognized" error, you may need to update Windows or install curl manually. - Settings file location — on native Windows, the settings file is at
%USERPROFILE%\.claude\settings.json. In WSL, it's~/.claude/settings.jsoninside the Linux filesystem. Make sure the hook was added to the right one for how you run Claude Code. - WSL users — if you run Claude Code inside WSL, everything works exactly like Linux. The paste-into-Claude-Code install method works identically.
- PowerShell alias conflict — PowerShell aliases
curltoInvoke-WebRequestby default. Claude Code hooks run via the system shell, not PowerShell, so this should not be an issue. If it is, ask Claude Code to usecurl.exeinstead ofcurlin the hook command.
If you're still stuck, paste this into Claude Code:
Check my settings.json for the MyTokenTracker hook. Is curl available on this system? Try running the hook command manually with test data to see if it connects to mytokentracker.io.
% Data & Accuracy
Why don't my percentages match Claude's? ▼
Several reasons this is expected:
- We only track Claude Code — Claude's limits include web, mobile, and API usage too
- Anthropic's formula isn't public — we estimate using published API pricing, but their internal calculation may differ slightly
- No syncs yet — the correction factor starts at 1.0x (no adjustment)
Fix it: Use Quick Sync on the dashboard. Enter Claude's reported percentages from claude.ai/settings/usage and we'll learn a correction factor. After 3-5 syncs, the numbers closely match.
What does "estimated cost" mean? Am I being charged this? ▼
No — this is the API-equivalent cost, not what your subscription charges. It's what you'd pay if you used Anthropic's pay-per-token API instead of your Claude subscription.
We use this because Anthropic's rate limits are cost-weighted — they use API-equivalent dollars to calculate your usage percentage. So this number drives the plan usage bars on your dashboard.
If your estimated cost is higher than your subscription price, your plan is saving you money (check the Plan Savings card in Data Insights).
Why is cache hit rate so high (90%+)? ▼
This is normal. Claude Code reuses conversation context heavily via caching. Cache read tokens are 90% cheaper than fresh input tokens, so a high cache hit rate means Claude is being efficient with your budget. In a typical session, 95-99% of all tokens are cache reads.
↺ Quick Sync & Self-Learning
How does Quick Sync work? ▼
Open Claude's usage screen and note your session % and weekly %. Enter them in the Quick Sync bar on your dashboard and hit Sync.
We calculate the ratio between Claude's number and ours (e.g., Claude: 34%, ours: 29% = 1.17x correction). This factor is stored and applied automatically. Each sync refines the factor — recent syncs count more than older ones.
When should I sync? ▼
Best time: When usage is 10-50% on Claude's screen. Very low or very high percentages amplify small errors.
How often: 3-5 syncs over different sessions is enough for the factor to converge. After that, occasional syncs keep it tuned.
Don't sync when: You have very little tracked data (under $0.10 of usage), or right after a fresh weekly reset.
Quick Sync says "Not enough tracked usage" ▼
You need at least $0.10 of tracked API-equivalent cost before syncing is meaningful. Use Claude Code for a few sessions, let the data accumulate, then try again.
My correction factor seems off — how do I reset it? ▼
Go to Settings and scroll to Correction Factors. You can reset session, weekly, or both factors back to 1.0x and start fresh.
$ Plans & Limits
How do I set my Claude plan? ▼
Go to Settings > Calibration Settings and select your Claude plan (Free, Pro, Max $5, Max $20, Team, or Enterprise). This sets the budget limits used for the session and weekly progress bars.
How do I find my weekly reset day/time? ▼
Open Claude's usage screen. Under "Weekly limits" it shows something like "Resets Thu 10:00 AM". Set that same day and time in your Settings.
What's the difference between session and weekly limits? ▼
Session limit — a rolling 5-hour window. As older usage ages out, capacity frees up. This is the "Current session" bar in Claude.
Weekly limit — resets on a fixed day/time (e.g., Thursday 10 AM). All usage within the week counts against this budget. This is the "Weekly limits" section in Claude.
You can hit either limit independently. The session limit governs short-term burst usage; the weekly limit governs sustained usage over days.
🔒 Security & Privacy
What data do you collect? ▼
Only aggregate metadata: token counts (input, output, cache read, cache write), model used, project directory name, session duration, and timestamp. We never see your conversations — the hook only receives usage statistics, not prompt or response content.
Is my API token safe? ▼
Your token is stored as a SHA-256 hash (for authentication) plus an AES-256 encrypted copy (so you can always see it in Settings). It's transmitted over HTTPS only. If you suspect it's compromised, regenerate it in Settings — the old one stops working immediately.
Can I delete my data? ▼
Contact us at support@champlinenterprises.com and we'll delete your account and all associated data.
Can you see my code or conversations? ▼
No. The hook only sends aggregate usage statistics from Claude Code's Stop event. This includes token counts, model name, project directory name, and session duration.
Your prompts, Claude's responses, file contents, and any code you're working on are never transmitted. You can verify this yourself by inspecting the hook command in ~/.claude/settings.json — it only sends the JSON payload that Claude Code passes to Stop hooks.
How is my data transmitted? ▼
All data is transmitted over HTTPS (TLS 1.2+) to mytokentracker.io. The hook uses curl with HTTPS by default — there is no plaintext HTTP fallback. Our SSL certificate is issued by Let's Encrypt and auto-renews.
Where is my data stored? ▼
Your usage data is stored in a MySQL database on our production server. Each user's data is isolated by their account — you can only access your own data when authenticated via GitHub OAuth.
We do not share, sell, or provide your data to any third parties. Your usage data is used solely to power your personal dashboard.
What does the hook have access to on my machine? ▼
The hook is a single curl command that runs when a Claude Code session ends. It:
- Reads the session data that Claude Code pipes to it via stdin (token counts and metadata only)
- Sends that data to our API endpoint over HTTPS
- Does nothing else — no file access, no background processes, no persistent connections
The hook runs in the same sandbox as other Claude Code hooks. You can inspect the full command in ~/.claude/settings.json at any time, and remove it instantly by deleting the entry.
Why do you use GitHub OAuth instead of passwords? ▼
GitHub OAuth means we never store or handle your password. Authentication is delegated entirely to GitHub. We only receive your GitHub username, email, and avatar — the minimum needed to create your account.
This also means you benefit from any security features you've enabled on GitHub (2FA, passkeys, SSO) without us needing to implement them separately.
Do you track project names or directory paths? ▼
We receive the project directory name (e.g., "my-app") from the session data, which we use to group usage by project on your dashboard. We do not receive the full file path (e.g., /Users/you/code/my-app).
If your project directory name is sensitive, you can rename the folder or contact us to have specific project names scrubbed from your account.
How do I report a security issue? ▼
Email security@champlinenterprises.com with details. We take security reports seriously and will respond within 48 hours. Please do not disclose vulnerabilities publicly before we've had a chance to address them.
★ Pro Tips
Sync early, sync often. Do your first Quick Sync as soon as you have 10%+ session usage. 3-5 syncs over a few sessions locks in accuracy.
Check your plan settings first. If the progress bars seem way off, make sure you've selected the right Claude plan in Settings.
Watch the weekly bar. Session limits roll off after 5 hours, but weekly limits accumulate. If you're approaching 80%, pace yourself or wait for the reset.
Use project breakdown. If costs are high, check which projects consume the most tokens. Long-running sessions on large codebases use the most cache.
Export your data. Hit "CSV Export" on the dashboard to download your full usage history for analysis in Excel, Google Sheets, or any BI tool.
Output tokens are 5x the cost. Claude's responses cost much more than your prompts. If you're hitting limits fast, consider asking for shorter responses or splitting large tasks.
📖 From the Blog
Still need help?
Most issues can be diagnosed by asking Claude Code to check your settings. Try pasting this:
Read my ~/.claude/settings.json and check if the MyTokenTracker hook is installed correctly in hooks.Stop. Verify the command ends with "-d @-" and hasn't been modified. If there are issues, fix them.