Cloudflare Workers now keep a Durable Object alive while it waits on pending I/O operations even if the original client has disconnected. This behavior is the default for Workers with a compatibility date of 2026-10-01 or later, and can be enabled earlier with the durable_object_io_tasks_prevent_eviction flag or disabled with durable_object_io_tasks_do_not_prevent_eviction.
Runtime Change Overview
When a Durable Object initiates a service‑binding fetch, an RPC call to another Durable Object, or calls this.ctx.container.monitor(), the runtime now treats those pending promises as a reason to keep the object in memory. The same protection applies to promises supplied to this.ctx.waitUntil() and to timers created with setTimeout() or setInterval(). Each pending operation can prevent eviction for up to fifteen minutes, and subsequent operations can extend that window.
Why It Matters for Engineers
Previously, an idle Durable Object could be shut down while any of the above operations were still pending, potentially aborting long‑running jobs such as background agents or coordination workflows. The new guarantee lets developers design agents that continue processing after the client drops, without needing to keep a client connection alive solely for eviction avoidance.
Architectural and Operational Implications
- Long‑Running Tasks: Agents can now safely perform multi‑step workflows that involve external services, inter‑object RPC, or container monitoring without risking premature termination.
- Resource Planning: Since each pending operation holds the object in memory for up to fifteen minutes, workloads that spawn many concurrent pending I/O calls may increase memory usage and associated duration charges.
- Compatibility Management: Projects targeting older compatibility dates must add the appropriate flag to obtain the new behavior; conversely, teams that rely on the previous eviction semantics can opt out with the opposite flag.
- Monitoring and Alerting: Operators should track the number and duration of pending I/O tasks to detect unexpected long‑lived objects that could indicate stuck processes or mis‑configured timers.
Security Considerations
The eviction protection does not alter the security model of Durable Objects; it merely extends their lifetime while awaiting I/O. However, longer lifetimes increase the window during which an object can be targeted by denial‑of‑service attempts that flood it with pending operations. Practitioners should therefore enforce reasonable limits on the number of concurrent pending calls and validate inputs that trigger external fetches or RPCs.
Related CloudNinjas coverage: hands-on guides.
What This Means For Practitioners
Adopt the new flag or update the compatibility date to benefit from reliable background processing. Review existing agents for reliance on client‑connected lifetimes and refactor to use waitUntil or timers where appropriate. Update monitoring dashboards to surface objects that remain in memory solely because of pending I/O, and consider rate‑limiting patterns that could unintentionally keep objects alive indefinitely. By aligning architecture with the extended eviction guard, teams can build more resilient, decoupled workflows while keeping cost and security exposure in view.

