← All work

Open Source | 2026 — Present

Carry-On — Claude Code Session Resumer

Carry-On catches a Claude Code turn that dies on a usage limit through the native StopFailure hook, records the session and its working directory, waits for the reset window, confirms the window is open with a free probe, and resumes the same session headlessly. It uses no resident daemon, polling loop, or terminal keystroke injection.

Carry-On workflow showing a usage limit triggering a hook, waiting for reset, confirming the window, and resuming the same session
fig. 03aThe hook-native resume flow: catch the limit, wait for reset, confirm the window, then resume the same session headlessly.
Carry-On turns Claude Code usage-limit interruptions into an automatic handoff, so long-running work can continue without manual intervention.

The problem

Long-running Claude Code work can stop mid-task when a usage limit is reached, leaving the session with all of its context but unable to continue until the window resets. Manually returning later and resuming interrupts unattended workflows.

The solution

Carry-On uses Claude Code’s native StopFailure hook to detect the exact limit event and capture the session ID and working directory. It waits for the reset, confirms that the window has actually reopened, then runs claude --resume against the same session so the existing context is preserved.

Key features

Hook-native detection with no polling

Headless resume with no terminal keystroke injection

Always-visible statusline badge and resume history

Wake spacing and transcript-size gating to control resume cost

Project and session policies for resume, chain, notify, or off modes

My role

I designed and built Carry-On end to end, including the hook-based limit detection, pending-session state, reset waiting and probing, headless resume workflow, statusline integration, cost-aware gating, safety controls, and CLI commands.

Want the full story behind this project?

houssem.djeghri@gmail.com