Releases Index

Developer Platform

$npx @buildinternet/releases get developer-platform
Mon
Wed
Fri
NovDecJanFebMarAprMayJunJulAugSepOctNov
Less
More
Releases162Avg Interval13hAvg Cadence53/mo

Flagship bindings now evaluate flags against a local flag store during local development instead of calling the remote app, applying to wrangler dev, the Vite plugin, Vitest integration, and cf dev. The store starts empty so evaluations return the default value in code, and flags can be managed via --local in wrangler and cf commands, Local Explorer, or pulled from the remote app with wrangler flagship flags pull; set remote: true to keep evaluating remotely.

Read more ↗

Workers subrequests to Cloudflare-proxied BYOIP hostnames are now identified as Cloudflare-to-Cloudflare traffic, preserving the CF-Worker header and cf.worker.upstream_zone field so security rules and Bot Management evaluate the original end-user connection instead of an internal one. Cross-zone subrequests now set CF-Connecting-IP to 2a06:98c0:3600::103, while same-zone subrequests still reflect the client IP.

Read more ↗

Browser Run now runs Chrome 152 by default, and the default User-Agent for Quick Actions reports Chrome 152 instead of Chrome 119, so allowlist or User-Agent matching rules may need updating. Also fixes large response headers not loading, makes /links return absolute URLs while links-only crawls follow relative links, preserves code block languages in Markdown output, and removes distrusted root certificates.

Read more ↗

Beginning November 4, 2026, D1 queries returning more than 50 MB will fail with a "query result exceeded the maximum response size limit" error, a threshold that covers the 99.999th percentile of requests. Import and export via the REST API are exempt; users with large results should select specific columns instead of SELECT * and paginate with LIMIT and OFFSET.

Read more ↗

Deploying new Durable Objects code no longer applies immediately; an active object can keep running its current code for up to 300 seconds while waiting to hibernate, letting in-flight work finish and Hibernation API WebSockets stay connected. The delay is configurable via code_update_strategy in Wrangler with max_delay from 0 to 86400 seconds, or per deployment with --durable-objects-code-update-mode immediate or deferred.

Read more ↗

Skills are now loaded from a folder with a SKILL.md written into the agent's Computer Workspace under /workspace/.agents/skills/, with no build step or deploy required, and the agent can write its own skills. Skills can come from a Workspace, an R2 bucket, or code, each validated against the Agent Skills specification. This is a breaking change for code using agents/skills directly: the agents:skills Vite import, agents/skills/compile, SkillRegistry, and Think's skillWorkspace are removed, and runner() moved to agents/skills/runner.

Read more ↗

Internal hostnames let the persistent browser in the Agents SDK resolve names like preview.internal to your agent instead of the Internet, so a model can check a dev server in its sandbox or another Worker without exposing it publicly. Each host's fetch function runs in your Durable Object with access to its bindings and state, and a target schema lets the model pick what it serves.

Read more ↗

VPC Network bindings can now target a specific virtual network by setting network_id to cf1:vnet:, while cf1:network still selects the account's default virtual network. Multiple bindings in one Worker can point at different virtual networks, reaching separate backends that share the same private IP address.

Read more ↗

Workers Builds now retains each build and its build logs for 90 days after the build finishes, viewable under View build history in the Deployments tab or via the Workers Builds API. After 90 days the build and logs are removed, but the versions and deployments it created remain in version history for rollbacks; longer-term logs can be downloaded with the Get build logs API endpoint.

Read more ↗

Workers Static Assets can now serve assets from a URL path prefix without changing their directory structure, configured via assets.base_path in Wrangler or worker.assets.basePath in cloudflare.config.ts. The option requires Wrangler 4.148.0 or later, or cf 1.0.0-beta.13 or later for cloudflare.config.ts.

Read more ↗

Setting jurisdiction on a workflows binding or on a Workflow declared in exports makes its instances run and store data only within that jurisdiction; supported values are eu, us, and fedramp. Jurisdiction is fixed at creation, and wrangler deploy or wrangler versions upload stops before uploading if an existing Workflow has a different jurisdiction, requiring Wrangler 4.152.0 or above.

Read more ↗

With onInterrupt: "replay" set on WorkerJavaScriptBackend, interrupted JavaScript runs again from the beginning, reusing recorded results for completed calls, with recovery triggered on the next workspace.runtime call or via workspace.runtime.recover(). Functions exposed through custom modules can call ctx.interrupt() to pause a run until the application supplies an approval decision.

Read more ↗

Custom spans in Workers now support three more OpenTelemetry span methods: spanContext() returns traceId, spanId, and traceFlags matching Workers Observability and exported traces, setStatus() sets unset/ok/error with an optional error message, and updateName() renames a span after it starts, including the root span from tracing.getActiveSpan(). Span status appears in traces exported to OpenTelemetry destinations but is not yet shown in the Workers Observability dashboard.

Read more ↗

Setting the packageManager field in package.json now controls which npm version Workers Builds installs before dependencies, so lockfiles written by a newer npm install the same way in builds as locally. The field also sets Yarn, pnpm, and Bun versions and requires an exact version rather than a range; engines.npm is not used for npm version selection.

Read more ↗

Flagship evaluation context now accepts nested objects, arrays, and null, so targeting rules can use dot-separated paths like profile.plan and the has/not_has operators for array membership without flattening data. Structured context works through the Workers binding, the evaluation REST API, and the TypeScript, Python, and Go OpenFeature SDKs from version 0.6.0.

Read more ↗

Workers Builds and Pages build images now reject the eight compromised eMudhra intermediate CA certificates when cloning repositories, installing dependencies, or making HTTPS requests, shipping patched CA bundles with Node.js 22.23.4 and 24.22.1, Bun 1.4.4, and pip 26.2.2. Projects setting BUN_VERSION below 1.4.4 or overriding SSL_CERT_FILE, PIP_CERT, or REQUESTS_CA_BUNDLE must verify their own certificates do not trust the compromised intermediates.

Read more ↗
v1.4

Agents SDK v0.30.0 runs PiHarness on Pi 1.4, passing Pi's new onWake callback so the Durable Object can hibernate while a task sleeps, and parked operations that keep crashing the object now show as parked in pending() with session.retry() to rerun them. PiHarness also reopens Pi after a storage errors instead of failing calls until restart, and agents/models/pi-ai reports cut-off or idle model streams as transient errors so Pi retries the turn.

Read more ↗
v0.12.14

Private keys of eight eMudhra intermediate certificate authorities can be recovered, allowing forged certificates for any hostname chaining to them, so images before 0.12.14 can have outbound HTTPS intercepted. The 0.12.13 images update the system CA bundle, Node.js, cloudflared, and pip; 0.12.14 updates Bun to 1.4.4 so bun and createBackup() uploads of 10 MiB or more also reject the certificates.

Read more ↗

Cloudflare's product-specific MCP servers now serve only /mcp, and requests to /sse return 410 Gone with the server's /mcp URL, which most MCP clients surface as a connection error. Clients signed in through /sse must sign in again; connections already using /mcp are unaffected.

Read more ↗
Latest
Nov 2, 2026