Cloudflare Agents SDK 0.14 Adds Recovery for Interrupted Agent Work
Cloudflare Agents SDK 0.14 adds Agent Skills, Telegram messenger support, scheduled tasks, ThinkWorkflow, and hardened recovery for durable agents.
- What happened: Cloudflare released
Agents SDK v0.14.0on June 2, 2026.- The release adds Agent Skills, Telegram messenger support, scheduled tasks,
ThinkWorkflow, and durable chat recovery.
- The release adds Agent Skills, Telegram messenger support, scheduled tasks,
- Developer impact: Agent capability loading moves from prompt glue toward runtime primitives on Workers and Durable Objects.
- Watch: Skill script execution is experimental, and V8 isolate-based Workers still carry different constraints from container-hosted MCP servers.
- The GitHub release details changes aimed at reducing work loss and duplicate tool execution during deploys, evictions, and stalled streams.
Cloudflare released Agents SDK v0.14.0 on June 2, 2026. The changelog describes four new surfaces for @cloudflare/think: on-demand Agent Skills, chat messengers starting with Telegram, declarative scheduled tasks, and a durable reasoning step that runs inside Cloudflare Workflows. The same release says the SDK now has stronger recovery paths for chat turns interrupted by deploys, Durable Object eviction, or stalled model streams. This is not a model benchmark story. It is a runtime release about the parts of production agents that fail after the demo works.
The premise of Cloudflare Agents SDK is that an agent should not be treated as a stateless HTTP handler. Cloudflare's Agents documentation frames each agent as a TypeScript class running on top of Durable Objects, with its own SQL database, WebSocket connections, and scheduling. A named instance receives an event, reads durable state, performs work, and can return to idle. Version 0.14.0 builds on that model by focusing less on what an agent can call and more on how the runtime resumes when an agent is interrupted mid-task.

The most visible addition is Agent Skills. Cloudflare says a skill source adds a catalog to the system prompt, and the model activates a skill only when the task matches it. A local ./skills directory can be bundled by the Agents Vite plugin and imported through agents:skills. Skills can also come from an R2 bucket or a manifest. Once activated, Think exposes tools such as activate_skill, read_skill_resource, and, optionally, run_skill_script. The structure keeps a large skill library out of every turn's prompt while still making task-specific instructions and resources available on demand.
That pattern is familiar from the skill systems now appearing around OpenAI Codex, Anthropic Claude, and other agent tooling. Cloudflare's version is different because the storage and execution boundary are tied to its runtime. The examples combine bundled local skills with R2-backed skills, making skill distribution a Cloudflare account-level storage concern rather than only a package or repository concern. Cloudflare also marks Agent Skills as experimental, with script execution called out as especially early. For teams, that means the feature is worth prototyping, but not something to expose broadly without versioning, permissions, and review.
The second addition is messenger support. Cloudflare says Think agents can now connect directly to chat platforms, with Think handling the webhook route, conversation routing, durable reply fiber, and streamed delivery. Telegram is the first provider. Group chats and direct messages map by default to separate Think sub-agents, so they do not share memory. This sounds smaller than a new reasoning API, but many agent products spend real engineering time turning a Slack or Telegram bot into stateful routed conversations. Cloudflare is pulling that glue code into the SDK surface.
Scheduled tasks are the third major surface. Cloudflare's examples use schedule strings such as every week on monday at 09:00 and every day at 08:00 in Europe/London. Think reconciles declarations at startup, arms the next occurrence after each run, and backs the work with durable idempotent submissions. That matters for agents that are not only chat responders. Weekly commit reports, daily workspace checks, support queue triage, recurring research digests, and monitoring jobs all need a way to wake up without a user message.
The fourth addition is ThinkWorkflow. Cloudflare says a model-driven reasoning step can now run inside a Cloudflare Workflow through step.prompt(). The example is an issue triage workflow: a zod schema defines fields such as title, summary, and labels, step.prompt("triage-issue", { output: draftSchema, timeout: "3 days" }) returns structured output, and a later step.do("apply-labels") calls an agent method. When the model call becomes a workflow step, it can participate in retries, long waits, approval gates, and typed orchestration outside the agent loop.
| Feature | New surface in 0.14.0 | Operational effect |
|---|---|---|
| Agent Skills | agents:skills, R2 source, manifest source | Manage repeatable task instructions and resources as a catalog instead of a full prompt dump |
| Messengers | Telegram provider, per-conversation Think sub-agents | Let the SDK handle chat bot routing, streaming, and memory separation |
| Scheduled tasks | Timezone-aware schedule DSL and durable submissions | Run recurring prompts and handlers without a user message |
| Think Workflows | ThinkWorkflow, step.prompt(), typed output | Combine LLM reasoning with long workflows, approvals, and retries |
| Recovery | isRecovering, stream stall watchdog, sub-agent reattach | Reduce work loss and duplicate execution during deploys and evictions |
The longest operational section of the release is recovery. Cloudflare says durable chat turns were already designed to tolerate mid-turn deploys and Durable Object eviction, but describes 0.14.0 as a production hardening pass. useAgentChat now exposes an isRecovering flag so a UI can distinguish a recovering turn from a frozen one, even if no new tokens are being generated yet. Stalled model streams can be moved into the recovery path through chatStreamStallTimeoutMs. When a parent agent is recovering while an agentTool() child is still running, the parent can reattach to the existing result instead of abandoning and rerunning the child.
The GitHub release for agents@0.14.0 makes the failure mode more concrete. Before this change, a sub-agent run interrupted by deployment or parent recovery could blur genuine failure, intentional cancellation, and transient interruption into similar error strings. Version 0.14.0 adds status: "error" | "aborted" | "interrupted" and retryable to AgentToolFailure. An interrupted failure is marked retryable. That gives the parent agent enough information to avoid telling the user that a transient interruption was a final failure.
The sub-agent reattachment change is the part that directly affects side effects. The release explains that if a parent agent was waiting for a child agentTool() run and then hit a deploy or Durable Object eviction, the old path could seal the child work as abandoned or interrupted and run the task again. Version 0.14.0 derives a stable child run ID from the tool call ID and reconnects to the same child facet to collect the terminal result. If a long-running child has already created a file, called an API, or started a write-heavy operation, avoiding a second execution is not a polish detail. It is part of making recovery economically and semantically safe.
MCP transport improvements point in the same direction. The changelog says an in-flight tool call over SSE can survive a dropped connection because the client reconnects with Last-Event-ID and replays missed events. addMcpServer can also take an optional id, producing readable tool keys such as tool_github_create_pull_request. The release also improves response correlation for overlapping JSON-RPC requests in HTTP and RPC transports. When an agent talks to multiple MCP servers for minutes rather than seconds, reconnect behavior and request correlation become failure surfaces rather than implementation details.
The release's competitive claim is not model quality. It is the set of operational primitives an agent platform should own. Skill activation, chat platform routing, schedules, workflows, stream recovery, sub-agent recovery, and MCP resumability all appear in one SDK release. A production agent does not only hold a prompt and a tool list. It survives deployment churn, model stream stalls, child tasks, approval waits, webhooks, recurring work, reconnects, and cost boundaries.
Cloudflare's advantage is that Workers and Durable Objects already provide a stateful edge runtime. The Agents documentation says each agent has its own SQL database and key-value state, and can use WebSocket hibernation and scheduling. A named agent instance can hibernate when idle and wake when an event arrives. That differs from keeping a container session alive or pushing all session state into a separate service. Cloudflare can argue that the agent session itself lives inside a durable runtime primitive.
The trade-off is portability. A June 2, 2026 r/LLMDevs comparison of agent platforms described Cloudflare Agents as an open-source TypeScript SDK built on Workers and Durable Objects. The same post noted that Workers use V8 isolates, so existing Go, Python, or Rust MCP servers cannot simply be run as isolated servers in the same way a container platform might host them. Durable Objects also do not have a direct on-prem equivalent. Building the agent inside Cloudflare can remove operational glue, but it also couples the application to Cloudflare primitives.
Cost needs separate attention. Cloudflare Agents can connect Durable Objects, Workflows, R2, Workers AI, AI Gateway, and other platform resources. Better recovery does not make a poorly designed long-running chat or recurring write workload cheap. In Cloudflare-related community discussions from spring 2026, developers repeatedly raised concerns about Durable Object write volume, MCP transport hangs, and Workers or Durable Object constraints. Version 0.14.0 addresses several production pain points, but it does not remove the need to model storage writes, invocations, retries, and duplicate side effects.
The first practical question for a team evaluating 0.14.0 is workload fit. If a support or community product depends on Telegram today or other messengers later, the messenger primitive can reduce integration code. If the agent needs recurring research, monitoring, or digest generation, scheduled tasks become more important than another chat UI. If the flow includes issue triage, approvals, multi-day waits, or label application, ThinkWorkflow maps more closely to the job than a single agent loop. For agents that attach many MCP servers, SSE resumability and readable server IDs may be the most immediate operational improvements.
The second question is failure testing. Cloudflare's release notes emphasize deploys, Durable Object eviction, stalled streams, and sub-agent recovery because those events happen in production. A staging agent should deliberately create deploy churn, simulate a stalled model stream, and interrupt a long child agentTool() run while the parent is recovering. Version 0.14.0 gives developers better primitives for those tests, but application-level idempotency still belongs to the team. A tool that charges a card, writes a ticket, or publishes a document must be safe under retry and reattach semantics.
The third question is Agent Skills security. Skills are a convenient way to package repeated procedures, but they also introduce resources and optional script execution. Once a catalog enters the prompt and run_skill_script can be exposed, teams have to account for malicious skills, stale instructions, credential exposure, and overbroad permissions. R2-backed skill loading also brings bucket policy, versioning, and approval workflow into the agent supply chain. Cloudflare's experimental label is not just about API churn. It is a signal that the permission model and operational review path matter.
That concern matches broader research on the agent skill ecosystem. A May 27, 2026 paper, Exploring the Emerging Threats of the Agent Skill Ecosystem, analyzed 3,984 agent skills across major marketplaces and reported 76 confirmed malicious payloads. Cloudflare's announcement does not cite that paper, but any platform turning skills into a runtime primitive faces the same class of supply-chain risk. Skill loading is both developer experience and an execution surface.
The news value of Cloudflare Agents SDK 0.14.0 is the combination rather than any single checkbox. Cloudflare is tying together memory, chat transport, scheduled wakeups, workflow reasoning, MCP tools, deployment recovery, and sub-agent reattachment in a Workers-based SDK. In the agent market, the runtime's ability to absorb interruption is becoming as important as the model picker. That is why "resuming interrupted work" can be the headline for an SDK release that also adds skills and Telegram.
Cloudflare is not competing with OpenAI or Anthropic by publishing a frontier model in this release. Its leverage is edge deployment, Durable Object state, WebSocket and SSE transport, Workflows, R2, and MCP integration. An AI team may choose Cloudflare not because the model is better, but because state, latency, recovery, chat transport, and cost boundaries are closer to the runtime.
The caveat is that runtime primitives do not complete the agent product on their own. Version 0.14.0 improves recovery and orchestration, but tool permissions, skill vetting, retry side effects, data retention, user approval, and cost guardrails remain application responsibilities. Cloudflare can reduce the odds that an agent appears stuck after a deploy or repeats child work after an eviction. Developers still have to decide which actions are safe to resume, which actions require explicit confirmation, and which actions should never run twice.
Cloudflare Agents SDK 0.14.0 shows agent frameworks moving from libraries toward runtimes. A skill becomes an activatable catalog instead of a prompt folder. A schedule becomes a durable submission instead of cron glue. A model call becomes a workflow step. Recovery becomes a UI flag, a stalled-stream watchdog, and sub-agent reattachment. The release is less dramatic than a new model leaderboard, but it touches the operational failures that appear when agents run long enough to matter.