Know before you run out
A menu bar app that shows what’s left of your coding agents’ usage limits and whether they’ll last until they reset.
Free and open source. Requires macOS 26, on Apple silicon or Intel.
>Use subagents to write the parser's tests.
●turnscope - check_limits (MCP)(hours: 2)
⎿2 more hours of work don't fit: 5 hours runs out after about 1h 10m of work.
Claude Max
([email protected]): about 1h 10m of work left (40m–2h 10m) before 5 hours runs out; it resets 10:00 (in
3h).
… +5 lines (ctrl+o to expand)
●That's about an hour of work, too little for subagents. I'll write the tests myself.
Claude Max runs out in 1h
Back in 3h.
Used this week
Claude Max runs out in 1h
Back in 3h.
Used this week
Works with Claude Code, Codex, OpenCode, Pi and Grok Build.
At a glance
Each account you’re using gets one number in the menu bar. The most urgent comes first.
68%
Will last until it resets. Shows what’s left.
1h 40m
Will run out before it resets. Counts down the last 3 hours.
Back 5:40 AM
Used up. Shows when it’s back.
Plan around your limits
Turnscope reads what your agents already store on your Mac and asks each provider for your limits. Nothing to set up.
When it runs out
Whether each limit will last until it resets, or when it’ll run out at your current pace.
Hours of work left
How many hours of agent work you have left, with an 80% range. Counts time your agents spend working, not the clock.
What used it
Usage and cost by session, project, model, agent or account, at list prices.
Notifications
When a limit is about to run out, runs out or comes back, and when an account needs you to sign in again.
Your agents can check too
Turnscope is also an MCP server, so agents can check their own limits before taking on big jobs. Every tool is read-only.
check_limits
Whether planned work will fit, and which account has room.
explain_usage
What used a limit, or what your agents cost.
find_sessions
Search any session on your Mac by text, folder, agent or time.
handoff
Everything another agent needs to finish a session’s work.
read_session
Read a session page by page, or just what failed.
continueprompt
Start a new session from the last one’s handoff.
Connect from Settings → Agents, or run:
claude mcp add --scope user turnscope -- / Applications/ Turnscope.app/ Contents/ Helpers/ turnscope mcp codex mcp add turnscope -- / Applications/ Turnscope.app/ Contents/ Helpers/ turnscope mcp opencode mcp add --global turnscope -- / Applications/ Turnscope.app/ Contents/ Helpers/ turnscope mcp pi mcp add turnscope -- / Applications/ Turnscope.app/ Contents/ Helpers/ turnscope mcp grok mcp add --scope user turnscope / Applications/ Turnscope.app/ Contents/ Helpers/ turnscope mcp Hand off to another agent
When a limit runs out mid-task, another agent can finish the job. The handoff covers what you asked for, what got done and where it stopped. Turnscope builds it from the session files without calling a model.
›Claude Code ran out. Pick up its work on the parser.
•Called turnscope.handoff({})
└# Handoff: Fix the parser
Claude Code session `claude-code:0f6e3f6a-713c-4d1e-9a6b-2b8c1d4e5f60` in
`/work/app` on branch `main`, last active 08:01 (4m ago), 52 entries. Times are local; it's now Thu Oct 8 08:05.
… +71 lines
•Claude Code fixed nested tables and wrote two of the four test files. The third fails on inline tables, so I'll start there.
Get one with the handoff tool, the continue prompt or turnscope handoff.
A status line and a guard
turnscope statusline prints your limits on one line. turnscope guard exits with an error when a limit runs low, so a hook can stop subagents before you run out.
>
Claude Max · 5h 28%, out in 1h · weekly 60% · Opus weekly used up, back Sat 09:00
It picks up the account of the agent it’s running in.
Add to settings.json:
{
"hooks": {
"PreToolUse": [{
"matcher": "Agent",
"hooks": [{
"type": "command",
"command": "turnscope guard --limit week --below 10"
}]
}]
},
"statusLine": {
"type": "command",
"command": "turnscope statusline"
}
} Add to .tmux.conf:
set -g status-right '#(turnscope statusline)'
set -g status-interval 60 The command line
It ships with the app. Add --json to any command that prints data.
- turnscope status # every account’s limits, forecasts and work left
- turnscope status --hours 3 # whether 3 more hours of work fit
- turnscope usage --by model # the last 30 days by model, at list prices
- turnscope usage --limit week # what used your weekly limit
- turnscope sessions --since today # today’s sessions
- turnscope handoff # a handoff of the latest session in this folder
- turnscope doctor # what can’t be read, and how to fix it
Your history stays on your Mac
Turnscope only reads your agents’ history and logins. The one thing it changes is adding its MCP server to an agent, and only when you ask.
No secrets kept
Each login is only sent to its own provider. API keys are stored as fingerprints, never in full.
No telemetry
Other than your providers, it only talks to models.dev for prices and GitHub for updates.
No account
Nothing to sign up for. Everything it knows stays in a local database.
Agents and providers
Turnscope works with these agents and reads limits from these providers.
Agents
- Claude Code
- Codex
- OpenCode
- Pi
- Grok Build
Providers
- AnthropicClaude
- OpenAIChatGPT
- xAISuperGrok
- OpenCode Go
- OpenRouter
Turnscope
Free and open source. Requires macOS 26, on Apple silicon or Intel.
- Open the disk image and drag Turnscope to Applications.
- Open Turnscope. It lives in your menu bar and checks for updates on its own.
- Optional: put the command line on your
PATH:
sudo mkdir -p / usr/ local/ bin
sudo ln -sf / Applications/ Turnscope.app/ Contents/ Helpers/ turnscope / usr/ local/ bin/ turnscope