See your Claude Code usage

One command turns the transcripts Claude Code keeps on your computer into a private, encrypted dashboard.

Run this in a terminal

macOS and Linux

curl -fsSLo report.sh https://github.com/shurikenharness/claude-code-usage-dashboard/releases/download/v1.0.0/report.sh && openssl dgst -sha256 -r report.sh | grep -q ^ca067721b9ec87078e6a72d1f9b6d3b351184fce9b958947d992acc633e9aa2c && bash report.sh

It downloads report.sh v1.0.0 from GitHub and runs it only if its SHA-256 matches.

Read it first

Download the script, check that its SHA-256 is the one in the command above, read it, then run it:

curl -fsSLo report.sh https://github.com/shurikenharness/claude-code-usage-dashboard/releases/download/v1.0.0/report.sh
openssl dgst -sha256 -r report.sh
less report.sh
bash report.sh

report.sh · SHA-256 ca067721b9ec8707…

Windows

irm "https://github.com/shurikenharness/claude-code-usage-dashboard/releases/download/v1.0.0/report.ps1" -OutFile report.ps1; if ((Get-FileHash report.ps1).Hash -eq 'e1e6203b000a09a7111069783b17f0c2166ddf5a06bc9408dc2f5a0e8ffdc1a3') { & ([scriptblock]::Create((Get-Content report.ps1 -Raw))) } else { 'report.ps1 does not match its SHA-256, so it was not run.' }

It downloads report.ps1 v1.0.0 from GitHub and runs it only if its SHA-256 matches.

Read it first

Download the script, check that its SHA-256 is the one in the command above, read it, then run it:

irm "https://github.com/shurikenharness/claude-code-usage-dashboard/releases/download/v1.0.0/report.ps1" -OutFile report.ps1
Get-FileHash report.ps1
notepad report.ps1
& ([scriptblock]::Create((Get-Content report.ps1 -Raw)))

report.ps1 · SHA-256 e1e6203b000a09a7…

See every line the command runs · Read the source on GitHub

Private by design

Only you can see this. We can't read it: the key never leaves your link.

Your report is encrypted on your computer with a new random key, and only the encrypted file is uploaded. The key sits in your link after the # sign, which browsers never send to a server. The file is deleted after 30 days, or when you press Delete now.

How it works

  1. Run the command

    It reads the transcripts in ~/.claude/projects and keeps only numbers: models, token counts, times, effort levels and limit errors. No account, nothing installed.

  2. Say yes to what it sends

    It prints what it found and what it will send, and asks before anything leaves your computer.

  3. Open your private link

    Your browser downloads the encrypted file, decrypts it with the key in the link and draws the dashboard.

What it sends

  • Model calls and tokens per hour, by model and effort level
  • Model names, such as claude-opus-4-6
  • Each session's start, end, active time and size
  • When you hit a usage limit, and which one
  • A number per project, never its name

What it never sends

  • Your prompts or Claude's replies
  • File paths, folder names or project names
  • Tool calls, code or command output
  • Your sign-in, settings or anything else in ~/.claude

What your report looks like

Example data

Made-up numbers, drawn the way your report will be.

11 Aug 2026 to 19 Oct 2026: active on 61 of 70 days

The example's times are in UTC; your report uses your own time zone.

Model calls
7,673
Sessions
128
Active days
61
Projects
6
Tokens
506.5M
API-equivalent cost
$391API-equivalent cost: what this usage would cost at API prices. You pay for your subscription, not this.

What stands out

Activity

  • Opus 4.6
  • Haiku 4.5
  • Sonnet 4.5
  • Sonnet 4.6
  • Other
131.3M
Show as a table
By weekOpus 4.6Haiku 4.5Sonnet 4.5Sonnet 4.6OtherTokens
Week of 10 Aug 202624.7M7.4M12.2M2.3M046.6M
Week of 17 Aug 202619.7M8.4M7.1M6.1M6.6M48M
Week of 24 Aug 202676.6M21.2M18.7M014.8M131.3M
Week of 31 Aug 202613.1M4.9M6.5M3M027.5M
Week of 7 Sept 202631.1M7.7M1.2M6.7M046.7M
Week of 14 Sept 202613.4M5M3.1M3.6M5.3M30.4M
Week of 21 Sept 202613.4M5M12.4M0891.4K31.7M
Week of 28 Sept 202626.1M7.5M10M0459.1K44.1M
Week of 5 Oct 202624.6M6.2M5.9M1M2.8M40.4M
Week of 12 Oct 202631.6M9.1M3.3M11.7M2.6M58.4M
Week of 19 Oct 20261.2M151.5K0001.4M

Model mix

  • Opus 4.654%
  • Haiku 4.516%
  • Sonnet 4.516%
  • Sonnet 4.67%
  • Opus 4.57%
ModelShare of callsCallsTokensCost
Opus 4.654%4,163275.4M$273
Haiku 4.516%1,24782.5M$16.39
Sonnet 4.516%1,23980.5M$48.55
Sonnet 4.67%52134.5M$20.33
Opus 4.57%50333.5M$33.22

Tokens

  • Input171.5K
  • Output6M
  • Cache read484.8M
  • Cache write, 5 minutes12.4M
  • Cache write, 1 hour3M

97% of the input side came from the cache.

Busiest hours

Your busiest 4 hours: 20:00–00:00, with 45% of your calls.

Sessions

Median session
1 h 53 min
Longest session
6 h 7 min
Most at once
33 or more at once on 3 days

Longest sessions

StartedActiveCallsMain modelTokens
24 Aug, 20:426 h 7 min167Sonnet 4.511M
16 Oct, 13:435 h 51 min164Opus 4.610.6M
27 Aug, 21:245 h 41 min154Opus 4.610.6M
28 Aug, 09:595 h 36 min154Opus 4.610.1M
12 Sept, 13:425 h 24 min150Opus 4.610.2M

Active time counts the gaps of 15 minutes or less between calls, plus a minute per call.

Projects

6 projects. The command counts them on your computer and never sends a name.

  • Project A38%
  • Project B19%
  • Project C16%
  • 3 more27%

Effort and Ultra Code

54% of your calls recorded an effort level.

  • Medium13%
  • High13%
  • Extra high23%
  • Max13%
  • Ultra Code38%

An Ultra Code keyword typed inside a prompt isn't counted, because the command never reads prompt text.

Usage limits

Days with a limit hit
9
5-hour limit
8
Weekly limit
1

Last hits

  • 16 Oct, 22:005-hour limit
  • 8 Oct, 20:005-hour limit
  • 6 Oct, 11:005-hour limit
  • 9 Sept, 19:005-hour limit
  • 27 Aug, 23:005-hour limit
  • 25 Aug, 09:005-hour limit
  • 24 Aug, 14:005-hour limit
  • 22 Aug, 16:00Weekly limit
  • 11 Aug, 12:005-hour limit

Streaks

Current streak
2 days
Longest streak
26 days

Calls per day, last 53 weeks

More

Calls from subagents
28%
Calls in fast mode
4%
Claude's working time
85 h 40 min
Web searches
71

Questions

What does the command read?

Only the usage lines of the transcripts in ~/.claude/projects: model names, token counts, timestamps, effort levels and limit errors. It never reads your prompts, Claude's replies, file paths or project names. Projects are counted on your computer and shown as Project A, B and C.

Can Shuriken see my report?

No. The report is encrypted on your computer, and the key sits in the link after the # sign, which browsers never send to a server. We store the encrypted file for 30 days, or until you press Delete now.

Where is the code, and how do I know it's what runs?

Both scripts are on GitHub (shurikenharness/claude-code-usage-dashboard) under the MIT license. The command downloads one tagged release from there and runs it only if its SHA-256 matches the one in the command, so a changed file never runs.

Is the cost what I paid?

No. It is what the same tokens would cost at Anthropic's API list prices. A Pro or Max plan has a fixed monthly price, so the number shows how much work went through your plan, not your bill.

Does it work on Windows?

Yes. The Windows command runs a PowerShell script that uses only what Windows has built in, written for Windows PowerShell 5.1 and PowerShell 7. On macOS and Linux it needs bash, awk, gzip, openssl and curl, which those systems ship with.

Why is there no effort or Ultra Code section?

Claude Code writes the effort level into a transcript only in some cases, such as an /effort command. When fewer than 1% of your calls carry a level, the dashboard leaves the section out. Ultra Code typed as a word inside a prompt isn't counted, because the command never reads prompt text.

Provided by Shuriken