What changed
On October 26, 2026, Cloudflare released @cloudflare/computer v0.7.0 with replay recovery for WorkerJavaScriptBackend and human approval interrupts. Set onInterrupt: 'replay' to enable recovery after Durable Object restarts, deployments or crashes; completed call results are reused from recorded state, while unrecorded calls may execute again. Recovery normally begins at the next workspace.runtime invocation, or can be triggered with a Durable Object alarm. Custom modules can use ctx.interrupt() to pause until an external approval arrives. workspace.runtime.pending() lists pending calls and respond() supplies the decision; approval waits survive deploys and do not count toward the run timeout.
Why it matters
Builders of agents that touch infrastructure, publishing, payments or production data need durable progress and explicit authorization, not just a prompt loop that disappears on restart. This release supplies two primitives for reliable workflows without a separate queue or bespoke checkpoint store. But replay is not exactly-once execution: if a side-effecting API call succeeds and the worker crashes before its result is recorded, the call may happen again. Operators need idempotency keys or unsafeToRepeat guards, and approvals should be enforced at the privileged action boundary.
Replay resumes JavaScript after deploys or crashes
Cloudflare's WorkerJavaScriptBackend can now run with onInterrupt: 'replay'. The runtime restarts code from the beginning and reuses recorded results of completed calls, avoiding repeated output. It does not promise to resume from the exact instruction that stopped; unrecorded calls can be executed again. A Durable Object alarm can call workspace.runtime.recover() without waiting for the next user request.
Approval interrupts survive deployment and do not consume the run timeout
A custom module function calls ctx.interrupt() with context, such as a proposed GitHub comment. The runtime suspends execution until the application calls pending() and respond() with an approval or rejection. Cloudflare's example passes an idempotency key to the downstream write, separating approval from the actual side effect.
Recovery is not exactly-once execution
Cloudflare explicitly warns that a call may succeed externally but be replayed if the result was not recorded before interruption. Use idempotency keys for writes, unsafeToRepeat() for non-replayable operations, and read-back verification after ambiguous outcomes. A successful replay of code does not prove that an external payment, deployment or comment happened only once.
Scope and operational caveats
The release applies to @cloudflare/computer's JavaScript backend in Durable Objects, not arbitrary existing Cloudflare Workers or every agent framework automatically. The Computer workspace stores files in Durable Object SQLite, and JavaScript execution uses a Dynamic Worker backend; developers must configure the required bindings and nodejs_compat. Independent failure-injection benchmarks and production reliability comparisons were not available in this research pass.