Zero-Loss Debugging
Work survives
restarts.
Return to the conversation, see what happened, and continue the task with its history intact.
- 1ParentFix the flaky checkout testSaved
- 2ChildMigration, in its own threadSaved
- 3QueuedDocs update, sends nextQueued
Work that carries forward
Every run is durable. Reload anytime. See the exact state, not a guess.
Durable command lane
Every run starts with an idempotent command. Server writes thread + run + command atomically. Reload. You get the exact sequence back. No re-runs, no duplicates.
SSE event stream with reconnect
Live updates stream over Server-Sent Events. Browser closed? Reconnect gets a fresh authoritative snapshot. No event IDs, no replay. Just the current state.
Restart reconciliation
Backend goes down mid-run. Sandbox keeps executing. When you reconnect, the backend re-probes the sandbox, streams the events that happened while it was down, and adopts the real result.
Child sessions that last
A run can open a child session for part of the work. The child is a real thread: durable, with its own history, and you can message it directly instead of going through the parent.
Nested live visibility
While the child runs, its progress shows inside the parent's timeline, nested under the step that opened it. The parent links to the child's own thread, so you can open it and read the full trace.
Queued follow-ups, or send now
Reply while a run is still going and the message queues behind the current turn. If it cannot wait, send now steers the running turn instead. Either way the order is recorded in the event log.
SEE IT WORK
One agent. Real tasks.
Our widget service returns 500 on DELETE /widgets/:id when the widget has 3 or more linked components. Fix it.
Clone and search
Cloned repo, found DELETE handler in handlers/widgets.ts. Searched error logs. Every 500 has 'permission check failed' after component count check.
Reproduce locally
Set up test DB with 3 linked components, sent DELETE request, confirmed 500. Traced the stack: permission middleware runs after cascade check, causing the 500.
Fix the order
Moved permission check before cascade. Added test case: DELETE with 3+ components now returns 204. Old test suite still green.
Open PR
Created PR #487: 'Fix widget delete with linked components'. Added test case to prevent regression.
Questions, answered.
If my browser closes mid-run, does the agent keep working?
Yes. The sandbox and backend keep going. When you reload, you'll see the heartbeat events and the final result.
Can I pause a run and come back later?
Yes. A completed run is always resumable. Reply with a new prompt and the agent picks up with full context. Pause/checkpoint primitives for pausing mid-execution are on the roadmap.
Can I message a child session directly?
Yes. Open the child's thread from the link in the parent and reply there. It keeps its own history and engine. The parent keeps the link and shows the child's live progress nested in its timeline. A bot's delegated thread works the same way.
What happens if I reply while a run is still going?
The message queues behind the current turn and shows as queued in the thread. If it cannot wait, choose send now and it steers the running turn. Nothing is lost either way.
How far back does the history go?
Forever. The thread is durable. You can reload a run from weeks ago and see the exact state, terminal output, and artifacts.
Start with one task.
See what you can hand off.
Explore a completed run, or join the early-access list to hear about getting your team started.