Workflow instances and their stored state can now be deleted via the Workflows API or Wrangler 4.125.0 and later, either one at a time with delete() on an instance handle or up to 100 at once with deleteBatch() on the Workflow binding. Batch results return deleted IDs and per-instance errors, non-existent IDs come back as errors, and Wrangler accepts positional IDs, a JSON file of IDs, or latest.
Developer Platform
npx @buildinternet/releases get developer-platformWorkers AI adds a rejectIfBusy option that lets synchronous inference requests fail immediately when capacity is unavailable, instead of waiting in a capacity queue. Pass it as the third argument to the AI binding or under options in the native REST API request body.
Workers traces now include caller-side JavaScript RPC session spans, showing session and method calls alongside the callee invocation, nested calls, and callbacks into another Worker; previously a trace stopped at the caller's RPC boundary. Spans are recorded automatically once tracing is enabled in the Wrangler configuration, with no application code or observability SDK changes required.
R2 Data Catalog now shows per-table maintenance settings, schedules, next eligibility, and a paginated audit log of recent compaction and snapshot expiration runs in the dashboard. A new Queue maintenance action requests compaction during normal scheduler polling, with permission checks and conflict or daily-limit messages.
Python Workers can now connect to PostgreSQL and MySQL through Hyperdrive. Setup guidance, code examples, and limitations are documented in the Hyperdrive Python Workers guide.
WorkflowInstance.subscribe() and the GET /subscribe API endpoint stream workflow and step events, including attempts, sleeps, waits, and rollbacks, so Workers and HTTP clients can react without polling for instance status. A subscription first replays the instance's full event history, then waits for new events, with filter and cursor options to narrow or resume the stream.
Access can now be scoped to individual Workers with four roles: Metadata Read-Only, Content Read-Only, Editor, and Admin, configurable in the dashboard, via the API, or with Terraform. Durable Objects have no roles of their own and inherit the permissions of the Worker that implements them.
AI Gateway can now require credentials for third-party provider requests, either stored on the gateway or sent with the request, preventing fallback to Cloudflare-managed Unified Billing credentials. Enable "Require provider credentials" in gateway settings or set byok_only to true on the gateway update endpoint; per-request, the cf-aig-no-wholesale header can require credentials but cannot relax the gateway setting. Requests without applicable credentials return HTTP 400, while Workers AI requests remain allowed with their configured billing mode unchanged.
Browser Run now supports guardrails that limit a browser session's HTTP and HTTPS requests to permitted hostnames, set via the guardrails option with allowedDomains when launching Puppeteer, Playwright, or the REST API. Live View also gains a read-only mode created by passing mode: "readonly" when generating the Live View URL.
Each speech or text turn now produces a typed VoiceTurnMetrics summary with a turnId, a terminal outcome such as completed, no_output, output_limit, content_filtered, model_error, tts_error, or aborted, and stage timings for speech-to-final-transcript, model-to-first-text, TTS-to-first-audio, and total turn duration, surfaced through VoiceClient, useVoiceAgent(), and useVoiceInput(). Local debugging can forward server lifecycle events to the browser console via a diagnostics option that is off by default.
AI Search can now index R2 objects whose keys have no filename extension when the objects carry supported Content-Type metadata, preserving file-type validation during indexing.
Workflows created on or after September 10, 2026, on the Workers Paid plan now retain completed and errored instance state for seven days by default, down from 30 days, to reduce storage costs. Existing Workflows retain their current settings, and the maximum retention limit remains 30 days.
Cloudflare Containers can now provide self-hosted execution environments for the OpenAI Agents API, which gives applications access to Codex through an OpenAI-managed API that handles sessions, orchestration, context compaction, and recovery. An open-source Workers template maintains a Container per Codex session, keeps active work running, reconnects on follow-up input, and shuts down when idle.
AI Gateway custom cost metrics now accept per_cache_read_token and per_cache_write_token rates in the cf-aig-custom-cost header, enabling negotiated cache pricing across providers. Omitted cache rates default to per_token_in, while omitting both preserves existing input/output calculations; AI Gateway handles provider differences to prevent double-counting.
Miniflare v5 introduces a new configuration shape aligned with cloudflare.config.ts and prepares local Workers development for the upcoming cf CLI. Breaking changes include removal of deprecated/alpha D1 bindings and internal wrappedBindings APIs, dropped built-in module discovery, /cdn-cgi routes moved to /cdn-cgi/local, and per-resource persistence options replaced with shared persistence roots.
Python Workers now use Python 3.14 by default for all new workers with compatibility date 2026-09-08 or later, updating the internal Pyodide runtime to 314.0.6.
Enterprise customers can set a zone's Maximum Upload Size up to 5 GB from the Network page in the Cloudflare dashboard, removing the need to contact their account team for request bodies above the 500 MB default. Limits above 5 GB still require configuration through an account team or Support.
R2 Data Access Logs are now GA, recording read, write, list, multipart upload, and delete operations with response status codes below 400 across S3-compatible API, Cloudflare API, dashboard, Workers bindings, and public buckets. Events are available in Workers Observability with filtering by bucket, operation, interface, actor, and more. Log delivery is asynchronous and best effort, so it should not be relied on as a complete record; available for non-jurisdictional buckets.
Wrangler no longer checks compressed bundle size — the 3 MB (Free) and 10 MB (Paid) limits are removed. Cloudflare now enforces a single 64 MiB uncompressed limit across all plans. Use wrangler deploy --outdir bundled/ --dry-run to check your bundle's uncompressed size before deploying.
Cursor Cloud Agents can now run on Cloudflare via self-hosted machines, with each session in an isolated environment backed by Cloudflare Containers. Cloudflare executes commands, file edits, and repository operations on infrastructure you control, while Cursor hosts the agent loop and inference.