SPECIMEN

~/.claude ~/.codex~/.local/share/opencode/opencode.db

TESTS

Claude Code, Codex, OpenCodeAny model provider in OpenCode

SENT TO

nowhere, it runs on your computer

Where did your
limits go?

vectiscode reads the logs Claude Code, Codex and OpenCode keep on your computer, finds what drains your usage and tells you what to change.

npx vectiscode

Uses no AI and none of your limits. Nothing is uploaded. Never changes your logs.
Node 22 or newer. OpenCode needs 22.13 or newer.

SAMPLE RESULTS · 7 DAYS · ONE DEVELOPER'S LOGS
TestResultReference rangeFlag
Saved by fresh chats at 150kHIGH
Tool resultsMEDIUM
Setup re-sent with every requestMEDIUM
Cache rewritten after breaksLOW
Helpers and subagentsOK
Codex, biggest chat of a weekly limit

The case for a fresh chat.

SIMULATION / FRESH AT 150k

From one developer's Claude Code logs. Simulated savings.

UP TO

less on a long chat

UP TO

of a whole week's usage

UP TO

more work from the same limits

35% on a chat that grew to 665k tokens. The whole-week estimate is 13%; 15% more work is its equivalent, 1 / 0.87. These are upper bounds: fresh chats may need to read files again.

One command.
About three seconds.

~/projects

npx vectiscode

 vectiscode usage doctor · last 7 days

 CLAUDE CODE  1107 units · 11,717 requests · 48 chats
   re-reading the chat                             42%
   writing to cache                                29%
   output                                          29%
   new input                                       <1%
   projects             web-app 83% · api 6% · tools 4% · docs-site 2%

 CODEX        2,649 turns · 144 chats · Plus plan
   re-reading the chat                             37%  estimated
   new input                                       40%
   output                                          24%
   weekly limit                                   8% used · resets Sun, Oct 25, 11:44
   5-hour limit                                   49% used · resets Sun, Oct 18, 17:44
   biggest chats        web-app Oct 11 60% · billing Oct 17 49% · web-app Oct 16 46% of a weekly
                        limit
   You use more than one ChatGPT account. The reading above is from the one used last; each
   account's chats are counted against its own limit.

 ╭─ WHAT TO DO FIRST ──────────────────────────────────────────────────────────────────────────────╮
 │ 1  Start a fresh chat from a short handoff note at about 150k                         up to 13% │
 │ 2  Keep tool results small: read files in slices, short logs                                27% │
 │ 3  Turn off MCP servers and tools a project doesn't use                                     17% │
 ╰─────────────────────────────────────────────────────────────────────────────────────────────────╯

 Units are API-equivalent dollars, used to weigh tokens against each other. They are not your bill.

 FINDINGS

  HIGH    Long chats: fresh chats at 150k would have saved up to 13% of your Claude usage
          67% of your Claude usage ran in chats past 150k tokens of context, 24% past 300k.
          Starting a fresh chat at 150k would have saved up to 145 units, up to 13% of your Claude
          usage, after paying about 0.23 units to set up each of 321 more chats.
          23 chats grew past 300k and were compacted 60 times.
            web-app, Oct 16: 124 units, peaked at 268k, 20 compactions.
            web-app, Oct 15: 72.7 units, peaked at 410k, 7 compactions.
            web-app, Oct 12: 66.8 units, peaked at 409k, 6 compactions.
          Codex: 33% of the weekly limit you used went to turns past 150k tokens of context.
          Fix  In Claude Code, start a fresh chat from a short handoff note once a chat passes about
               150k. Much sooner doesn't pay, because each new chat loads its setup again. In Codex,
               start fresh sooner: a new chat costs about as much as one small step in a 170k chat.
               Fresh chats also keep the detail that compaction throws away.

  MEDIUM  Tool results: 27% of your Claude usage went to what tools returned
          Tool results took 27% of your Claude usage: each one is written to the cache, then re-read
          by every later step of the chat.
          By tool: Read 13%, Bash 9%, Grep 1%, ToolSearch 1%, update_plan (ccd_turn) <1%.
          Biggest single result: Read, 56k tokens in web-app on Oct 16, re-read by 19 later steps.
          Fix  Read files in slices or search them. Keep command output to tails, counts and errors.
               Take screenshots for visual checks; let a helper summarize big files.

  MEDIUM  Always-on context: 17% of your Claude usage is re-sending the same setup
          A new Claude Code chat starts at about 71k tokens (median of 44 chats), and most of that
          goes out again with every request.
          Re-sending it cost 189 units, 17% of your Claude usage.
          Where it comes from in your latest chat (36k): tool definitions 15k, not itemized 5k,
          skills list 5k, system prompt 5k, CLAUDE.md and rules 3k, deferred tool list 1k, subagent
          list 845, other 831.
          Never called in the 4 chats that logged their tools: SendFeedback (2k), Workflow (2k),
          ScheduleWakeup (2k), Agent (1k), ReportFindings (735) and 4 more, about 8k per request.
          A new Codex chat starts at about 33k tokens.
          Fix  Turn off MCP servers and plugins a project doesn't use. Deny unused built-in tools
               with permissions.deny in settings.json and shorten instruction files. Your system
               prompt, tool definitions, skills and CLAUDE.md go out with every request.

  LOW     Coming back to big chats after a break cost 3% of your Claude usage
          34 times a chat was picked up after its cache had expired, so the whole chat was written
          to the cache again.
          That cost 33.8 units, 3% of your Claude usage.
          Biggest: docs-site on Oct 13, 332k tokens rewritten after a 1-hour break.
          Fix  Before a long break, finish the step and continue in a fresh chat, or run /compact so
               the rewrite is small. The cache lasts about an hour (5 minutes for some requests);
               after that, the next step pays to write the whole chat again.

 LOOKS FINE

 ✓ Helpers and subagents (14%)

 Saved today's date. Run vectiscode again after a few days of work to see what changed.

npx vectiscode

 vectiscode usage doctor · last 7 days

 SINCE YOUR LAST CHECK (Oct 15)
                                   before     after
   units per request                0.100     0.092  ▼ 8%
   average context                   257k      205k  ▼ 20%
   usage past 150k context            86%       59%  
   Codex weekly % per 100 turns      15.4      16.0  ▲ 4%

 CLAUDE CODE  1107 units · 11,717 requests · 48 chats
   re-reading the chat                             42%
   writing to cache                                29%
   output                                          29%
   new input                                       <1%
   projects             web-app 83% · api 6% · tools 4% · docs-site 2%

 CODEX        2,649 turns · 144 chats · Plus plan
   re-reading the chat                             37%  estimated
   new input                                       40%
   output                                          24%
   weekly limit                                   8% used · resets Sun, Oct 25, 11:44
   5-hour limit                                   49% used · resets Sun, Oct 18, 17:44
   biggest chats        web-app Oct 11 60% · billing Oct 17 49% · web-app Oct 16 46% of a weekly
                        limit
   You use more than one ChatGPT account. The reading above is from the one used last; each
   account's chats are counted against its own limit.

 ╭─ WHAT TO DO FIRST ──────────────────────────────────────────────────────────────────────────────╮
 │ 1  Start a fresh chat from a short handoff note at about 150k                         up to 13% │
 │ 2  Keep tool results small: read files in slices, short logs                                27% │
 │ 3  Turn off MCP servers and tools a project doesn't use                                     17% │
 ╰─────────────────────────────────────────────────────────────────────────────────────────────────╯

 Units are API-equivalent dollars, used to weigh tokens against each other. They are not your bill.

 FINDINGS

  HIGH    Long chats: fresh chats at 150k would have saved up to 13% of your Claude usage
          67% of your Claude usage ran in chats past 150k tokens of context, 24% past 300k.
          Starting a fresh chat at 150k would have saved up to 145 units, up to 13% of your Claude
          usage, after paying about 0.23 units to set up each of 321 more chats.
          23 chats grew past 300k and were compacted 60 times.
            web-app, Oct 16: 124 units, peaked at 268k, 20 compactions.
            web-app, Oct 15: 72.7 units, peaked at 410k, 7 compactions.
            web-app, Oct 12: 66.8 units, peaked at 409k, 6 compactions.
          Codex: 33% of the weekly limit you used went to turns past 150k tokens of context.
          Fix  In Claude Code, start a fresh chat from a short handoff note once a chat passes about
               150k. Much sooner doesn't pay, because each new chat loads its setup again. In Codex,
               start fresh sooner: a new chat costs about as much as one small step in a 170k chat.
               Fresh chats also keep the detail that compaction throws away.

  MEDIUM  Tool results: 27% of your Claude usage went to what tools returned
          Tool results took 27% of your Claude usage: each one is written to the cache, then re-read
          by every later step of the chat.
          By tool: Read 13%, Bash 9%, Grep 1%, ToolSearch 1%, update_plan (ccd_turn) <1%.
          Biggest single result: Read, 56k tokens in web-app on Oct 16, re-read by 19 later steps.
          Fix  Read files in slices or search them. Keep command output to tails, counts and errors.
               Take screenshots for visual checks; let a helper summarize big files.

  MEDIUM  Always-on context: 17% of your Claude usage is re-sending the same setup
          A new Claude Code chat starts at about 71k tokens (median of 44 chats), and most of that
          goes out again with every request.
          Re-sending it cost 189 units, 17% of your Claude usage.
          Where it comes from in your latest chat (36k): tool definitions 15k, not itemized 5k,
          skills list 5k, system prompt 5k, CLAUDE.md and rules 3k, deferred tool list 1k, subagent
          list 845, other 831.
          Never called in the 4 chats that logged their tools: SendFeedback (2k), Workflow (2k),
          ScheduleWakeup (2k), Agent (1k), ReportFindings (735) and 4 more, about 8k per request.
          A new Codex chat starts at about 33k tokens.
          Fix  Turn off MCP servers and plugins a project doesn't use. Deny unused built-in tools
               with permissions.deny in settings.json and shorten instruction files. Your system
               prompt, tool definitions, skills and CLAUDE.md go out with every request.

  LOW     Coming back to big chats after a break cost 3% of your Claude usage
          34 times a chat was picked up after its cache had expired, so the whole chat was written
          to the cache again.
          That cost 33.8 units, 3% of your Claude usage.
          Biggest: docs-site on Oct 13, 332k tokens rewritten after a 1-hour break.
          Fix  Before a long break, finish the step and continue in a fresh chat, or run /compact so
               the rewrite is small. The cache lasts about an hour (5 minutes for some requests);
               after that, the next step pays to write the whole chat again.

 LOOKS FINE

 ✓ Helpers and subagents (14%)

 Next check: run it again in a few days to see what changed.

npx vectiscode compare 2026-10-17

 vectiscode compare · 7 days before Oct 15 vs 4 days since

 CLAUDE CODE                       before     after
   units per request                0.103     0.092  ▼ 11%
   units per active hour              9.2      17.9  ▲ 94%
   average context                   255k      209k  ▼ 18%
   usage past 150k context            86%       60%  
   new chats start at                 73k       70k  ▼ 4%
   compactions per chat               2.6       1.8  
   33 active hours before, 45 after

 CODEX                             before     after
   weekly % per active hour           9.7      10.1  ▲ 4%
   weekly % per 100 turns            14.9      16.5  ▲ 11%
   average context                   119k      118k  ▼ 1%
   21 active hours before, 22 after

Real output from one developer's logs, with project names changed.

One prompt.
Your AI does the rest.

Paste it into Claude Code, Codex or OpenCode. Your assistant runs vectiscode, tells you what matters for you and makes only the changes you say yes to.

  1. It runs the check.A few seconds, on your computer.
  2. It explains your top three.In plain words, about your own chats and setup.
  3. It shows each change first.Settings, MCP servers, CLAUDE.md, AGENTS.md or a habit. Nothing changes without your yes.
  4. It reminds you to check again.A few days later, the report shows what changed.
PROMPTClaude Code · Codex · OpenCode

Run npx -y vectiscode@latest, explain my top three findings in plain words, and show me the exact change you would make for each one (settings, MCP servers, CLAUDE.md or AGENTS.md, or a habit). Wait for my yes before changing anything. Afterwards, remind me to run it again in a few days to see if it worked.

vectiscode itself uses no AI. This chat uses about as much of your limit as a short task.

Come back.
It remembers.

The first check gives you a place to start. The next shows what changed since the date it saved.

average context on the next check

One developer's logs, before and after Oct 15. Usage past 150k fell from 86% to 59%, units per request by 8%. Codex usage per 100 turns rose 4%. A comparison, not a promise.

See the next check in the terminal

FIRST CHECK

Oct 15

WHAT TO DO FIRST

  1. Start a fresh chat at about 150ksaves about 13%
  2. Keep tool results small27% of usage
  3. Turn off tools a project doesn't use17% of usage

Saved today's date.

FOLLOW-UP

Since Oct 15

SINCE YOUR LAST CHECK

Claude CodeBeforeAfterChange
Units per request0.1000.092−8%
Average context257k205k
Usage past 150k86%59%

Codex weekly % per 100 turns: 15.4 to 16.0 (+4%)

Every step re-reads
the whole chat.

Claude Code sends the entire conversation with every step: the setup, your messages, every file it read and every tool result. Most of it comes from the cache at a fraction of the price, but in a long chat it adds up, and every compaction throws detail away.

124 units, one chat, 20 compactions

Tokens read at each step of a real chatThe conversation grows and drops when it compacts. Choose a fresh chat threshold to compare with restarting the chat.k tokens010020030004008001,2001,636step150k
A real chat: 1,636 steps over 18 hours, compacted 20 times. The fresh-chat lines assume each new chat starts from a 5k handoff note and costs 0.23 units to set up, the median for a new chat in these logs.

One step, by chat size

Units per step

UP TO

more per step

A step over 300k costs up to 60% more than one at 100 to 150k: 0.120 vs 0.075 units. A new chat costs more at first because its setup must be written to the cache.

What actually saves,
measured.

Every number here comes from real logs or from a test on a real account, October 2026.

WHAT SAVES
  1. UP TO

    Back from one habit.

    Across the whole week, fresh chats at 150k would have saved up to 13% of Claude usage, after paying for every new chat's setup. On the chat above, the simulated saving is 8%. At 100k the saving is gone: each new chat costs about as much to set up as it saves. vectiscode works this out for your own chats. The estimate does not count files a fresh chat would need to read again.

  2. Is the same setup, sent again.

    A new Claude Code chat in these logs started at about 71k tokens (the median), and re-sending that setup was 17% of all usage. Turn off MCP servers a project doesn't use, deny tools you never call, keep CLAUDE.md short.

  3. Went to what tools returned.

    More than a quarter of this week's Claude usage. Everything a tool returns is written to the cache once and re-read on every later step. Read files in slices, search instead of opening whole files, keep logs and screenshots out unless they're needed. File reads alone were 14%, shell commands 9%.

  4. In Codex, start fresh sooner.

    Codex charges nothing extra to put a chat in its cache, so a new chat is cheap: about 0.21% of a Plus 5-hour limit. A small step in a 170k chat costs 0.26%, so once a Codex chat is that long, every step costs about as much as starting over. New input costs the most: 125k tokens the cache hadn't seen took 3.3% in a single step.

  5. Check that it worked.

    Run npx vectiscode again after a few days of work. It remembers the date of your last check. Use compare 2026-10-17 to compare against a date you choose.

One pasted file.

The cost of 16 small steps.

Pasting 125k tokens of new text took 3.3% of a 5-hour limit. A small step in a new chat took 0.21%. In a 170k chat, that step took 0.26%, more than starting fresh.

A test on one ChatGPT Plus account with gpt-6.1-sol, October 2026: 154 turns in five blocks, measured with the 5-hour limit readings Codex logs after every turn.

TurnTokens5-hour limit per turn
A small step in a new chat22k read, 7k of them new0.21%
A small step in a 170k chat170k read, 1.5k new0.26%
Pasting 125k tokens of new text143k read, 125k new3.3%
A 1,200-word answer22k read, 1,600 written0.38%

1% of the 5-hour limit is about 37k new tokens, 780k tokens from the cache, or 7k tokens of output.

How it works

  1. STEP 1

    Reads your logs.

    ~/.claude/projects, ~/.codex/sessions and OpenCode's ~/.local/share/opencode/opencode.db. It reads them on your computer and never changes your logs.

  2. STEP 2

    Weighs every request.

    Claude Code: each request's tokens at API list prices, checked against Claude Code's own cost records, shown as units. Codex: the real 5-hour and weekly percentages it logs after every turn. OpenCode: any model provider, using recorded costs or known API prices when available.

  3. STEP 3

    Writes the findings.

    Ranked by what they cost you, with what to do first. It saves a small local file with your last check date. Next time, the report opens with what changed. --json for your own scripts.

Questions

Does it use any of my AI limits?

No. The report is plain arithmetic on your log files, done by a small program on your computer. It calls no AI model and makes no network request, so your limits don't move. Only the prompt for your AI uses some: that chat costs about as much as a short task.

Is a unit a dollar on my bill?

No. Units are API-equivalent dollars, a common scale to weigh requests against each other. Plans are not billed this way.

Does anything leave my computer?

No. There is no account, no telemetry and no network call. The package has no dependencies, so that's easy to check.

Which plans does it work with?

Claude Code on any plan or API key, Codex on any ChatGPT plan and OpenCode with whatever model it runs: Anthropic, OpenAI, Google or local models. Codex limit percentages show for plans that have limits.

I use two ChatGPT accounts.

Each account's limit windows are counted separately.

Windows, macOS, Linux?

All three, with Node 22 or newer. OpenCode needs 22.13 or newer for SQLite support. Built and tested on Windows; the log formats are the same on macOS and Linux.

Cursor, Gemini, OpenCode?

OpenCode, yes, with whatever model it runs. Cursor and Gemini CLI, not yet: they do not keep per-request token logs on your computer that vectiscode can read. Open an issue if yours does.

Find out where
yours went.

npx vectiscode
Or hand it to your AI