Keep a Claude Code usage window always running — and continue interrupted work in the terminal it stopped in.
A Claude Code usage window is five hours long. It starts at your first message — and it only advances when someone claims it. If your window ends at 02:00 and you send nothing until 09:00, those seven hours were dead. No window was running, so nothing accrued to you.
$ npm i -g claudekishmish claudekishmish Credits to Gantavya Singh Shekhawat Next: ckm setup
This writes the shim and the background service, then prints the one thing left for you to do.
$ ckm setup Two steps left — run these yourself: 1. Put the shim FIRST on PATH — run it once, then open a new terminal: [Environment]::SetEnvironmentVariable('Path', ...) 2. Start the background claimer. Both jobs are ON: auto-continue ON continue interrupted work window claiming ON keep the countdown running
Not optional. Until the shim is on PATH, only half the tool is running: boundaries get claimed, but nothing is watching your sessions, so nothing can continue your work.
$env:Path = … form lasts only until you close the terminal — and a tool that stopped working looks exactly like a tool that is working.
That's it. From here, run claude exactly as you always have.
$ ckm status Window current ends 11 Aug, 05:10 pm (computed) next boundary 11 Aug, 05:10 pm in 3h 52m last claimed 11 Aug, 12:10 pm Policy auto-continue on idle claiming on (7/14 used this week) Install shim active daemon running (pid 37444)
shim active is the line that matters. If it says installed but NOT on PATH, step 3 didn't take — in-place continuation is off and nothing else will tell you.
When something misbehaves, ckm doctor checks every dependency by actually running it — no billable request:
[ok ] claude is spawnable 2.1.227 (Claude Code) [ok ] node-pty available — sessions can be continued [ok ] shim ~/.claudekishmish/shim [ok ] daemon running (pid 37444) No blocking problems.
The moment a window expires, a minimal request starts the next countdown — even with no terminal open and nobody awake. Capped at 14 a week, announced at setup, and every claim is logged before it happens.
When a session stops at a limit, the continuation is typed into your actual terminal session once the window reopens. Same window, same context, work carries on.
Claude Code has three separate caps, and treating them as one is what makes naive wait-and-retry tools hang for days. This is the panel they come from — /usage inside Claude Code:
| Limit | What claudekishmish does |
|---|---|
| Session every 5 hours | Waits for the stated reset, then continues your work. |
| Weekly | Parks it, suspends claiming so it can't spend the budget it exists to protect, and tells you. |
| Per-model | Stops cleanly and hands back. Waiting cannot clear this one, so it doesn't pretend otherwise. |
| API overloaded 529 · stalled · dropped | No reset time exists, so it retries on a bounded backoff — 30s, 1m, 2m, 4m, 8m, then stops. |
And if the account itself can't make requests — logged out, subscription ended — it halts rather than retrying an impossible request several times a day forever.
| Command | When |
|---|---|
ckm setup | Once, after installing. |
ckm status | Windows, boundaries, sessions, and what it will do next. |
ckm pause | Stop auto-continuing this session. --all for everything, before you sleep. |
ckm resume | Switch it back on. Also clears a halt. |
ckm claim off | Stop claiming boundaries when nothing is pending. Auto-continue stays on. |
ckm doctor | Check every dependency by running it. Costs nothing. |
ckm logs | What it did while you were away. |
ckm config | Continuation text, caps, backoff, poll interval. |
ckm uninstall | Remove the shim and the service unit. |
Nothing here was typed by a person. This is ckm logs from a machine left running:
12:10:28 boundary.attempt no pending work — claiming with a new session 12:10:34 ping.ok 17:10:26 boundary.attempt no pending work — claiming with a new session 17:10:33 ping.ok 17:48:05 ledger.corrected believed the window ended 12:20Z, evidence says 11:40Z
That last line is the tool catching itself being wrong. What it believes about your window is re-derived from your own conversation history on every tick, so a mistaken belief lasts one tick instead of forever.
It does not reset, extend or bypass server-side limits — that's impossible, and nothing here attempts it. It waits for normal availability and then makes ordinary requests on your own account.
A sleeping machine claims nothing. If your laptop is suspended at 02:00, that boundary is claimed when you wake it, not at 02:00. Nothing in user space can fix that; if you want the countdown to survive the night, the machine has to stay awake.
And it never types over a message you've half-written. Every keystroke is forwarded, so it knows when your input box has a draft in it — appending to that and pressing Enter for you is the one way a tool like this could destroy work instead of saving it.