Durable Objects - Pending I/O operations allow Durable Objects to continue long-running work without a connected client
- Announced
- Tags
- Durable-Objects
- Severity
- info, set by
reef/rss-rule-v1 - Source
- https://developers.cloudflare.com/changelog/post/2026-10-01-pending-io-keep-alive/
<p>Durable Objects remain active while handling a request from a connected client. This change applies when no client is connected, such as when an agent continues a submitted job after its client disconnects.</p> <p>This behavior is the default for Workers with a compatibility date of <code>2026-10-01</code> or later. To use it with an earlier date, add the <a href="https://developers.cloudflare.com/workers/configuration/compatibility-flags/#durable-object-io-tasks-prevent-eviction"><code>durable_object_io_tasks_prevent_eviction</code></a> compatibility flag. To opt out, add the <code>durable_object_io_tasks_do_not_prevent_eviction</code> flag.</p> <p>Pending <a href="https://developers.cloudflare.com/workers/runtime-apis/bindings/service-bindings/">service binding</a> requests now keep Durable Objects running while they wait for a response. Pending calls to another Durable Object through remote procedure call (RPC) or <code>fetch()</code>, as well as <code>this.ctx.container.monitor()</code>, now also keep the Durable Object running.</p> <p>Promises passed to <code>this.ctx.waitUntil()</code> and pending <code>setTimeout()</code> and <code>setInterval()</code> timers also receive this protection.</p> <p>Previously, Cloudflare could shut down an idle Durable Object while one of these operations remained pending without a connected client. This could stop unfinished work.</p> <p>This change helps you run long-running tasks such as agents. An agent can call tools through service bindings, coordinate with other Durable Objects, or wait for a container process without relying on the original client to remain connected.</p> <p>Outbound <code>fetch()</code> requests to external services, TCP sockets, and outbound WebSockets already keep Durable Objects running.</p> <p>Each pending operation prevents idle shutdown for up to 15 minutes. Starting another one later can extend the Durable Object's time in memory. The limit applies to each operation, not to the total time in memory.</p> <img src="https://developers.cloudflare.com/cdn-cgi/image/onerror=redirect,width=820,height=360,format=svg/_astro/pending-io-keep-alive.vVfDqYTX.svg" alt="Timeline of a service binding fetch, an RPC call, and monitor() each preventing eviction for up to 15 minutes" loading="lazy" decoding="async" width="820" height="360"> <p>Duration charges continue while an operation prevents eviction.</p> <p>For more information, refer to <a href="https://developers.cloudflare.com/durable-objects/concepts/durable-object-lifecycle/">Lifecycle of a Durable Object</a>.</p>
The text above is the source's. reef added the severity, the dates it could read from the text, and the endpoints and scopes named in code.