<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Cloudflare changelogs</title><description>Updates to various Cloudflare products</description><link>https://docs.infinitegaming.org/changelog/</link><item><title>Cloudflare One Client - Cloudflare One Client for macOS (version 2026.8.2100.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-10-07-warp-macos-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-10-07-warp-macos-ga/</guid><description>&lt;p&gt;A new GA release for the macOS Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release includes the following highlights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Traffic to split tunnel excluded resources is no longer briefly blocked while the client is connecting or reconnecting. The client now keeps its learned split tunnel configuration across reconnects.&lt;/li&gt;
&lt;li&gt;Support for routing non-RFC 1918 local IPv4 networks through the tunnel when unrestricted LAN inclusion is enabled by policy or MDM.&lt;/li&gt;
&lt;li&gt;Faster connects and lower memory use. The hosts file is now read once and shared across the client’s DNS resolvers instead of being reloaded by each one.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Additional changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improved reauthentication reliability and fixed an issue where a reauthentication could force a new registration.&lt;/li&gt;
&lt;li&gt;Improved client reaction to the current network lowering its MTU.&lt;/li&gt;
&lt;li&gt;Improved DNS reliability on networks with lower MTUs by clamping the TCP maximum segment size (MSS) for DNS-over-HTTPS connections sent through the tunnel.&lt;/li&gt;
&lt;li&gt;Individual DNS-over-HTTPS queries now time out instead of hanging when the upstream server stops responding.&lt;/li&gt;
&lt;li&gt;Improved API reliability by retrying requests dropped when reusing pooled connections.&lt;/li&gt;
&lt;li&gt;Added an MDM setting to prefer IPv4 when resolving hostnames in proxy mode. The setting is off by default.&lt;/li&gt;
&lt;li&gt;Fixed the client reconnecting while Emergency Disconnect was active after switching organizations or re-registering.&lt;/li&gt;
&lt;li&gt;Fixed the client being unable to connect after an upgrade when its stored registration credentials no longer matched its configuration.&lt;/li&gt;
&lt;li&gt;Fixed the client service restarting unexpectedly when it was slow to respond, such as after waking from sleep.&lt;/li&gt;
&lt;li&gt;Fixed Extra Logging failing to capture packets across all interfaces.&lt;/li&gt;
&lt;li&gt;Fixed an issue that could prevent remote diagnostics from completing.&lt;/li&gt;
&lt;li&gt;Fixed DNS connectivity checks failing on IPv6-only networks.&lt;/li&gt;
&lt;li&gt;Fixed the client service exiting when its route-monitoring socket was closed after sleep or wake.&lt;/li&gt;
&lt;li&gt;Fixed DNS enforcement checks making the client service unresponsive on systems with large routing tables.&lt;/li&gt;
&lt;li&gt;Fixed slow captive portal checks causing the client service to become unresponsive or restart while connecting.&lt;/li&gt;
&lt;li&gt;Fixed a race when switching tunnel protocols during key rotation that could prevent WireGuard from connecting.&lt;/li&gt;
&lt;li&gt;Fixed the client continuing to report “No network” after a successful manual disconnect.&lt;/li&gt;
&lt;li&gt;Fixed a client UI crash that could occur when the daemon connection was reset during an IPC request.&lt;/li&gt;
&lt;li&gt;Fixed a startup crash when date formatting data for the system locale had not yet loaded.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;None&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Wed, 07 Oct 2026 17:01:53 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Windows (version 2026.8.2100.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-10-07-warp-windows-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-10-07-warp-windows-ga/</guid><description>&lt;p&gt;A new GA release for the Windows Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release includes the following highlights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Traffic to split tunnel excluded resources is no longer briefly blocked while the client is connecting or reconnecting. The client now keeps its learned split tunnel configuration across tunnel reconnections.&lt;/li&gt;
&lt;li&gt;Support for routing non-RFC 1918 local IPv4 networks through the tunnel when unrestricted LAN inclusion is enabled by policy or MDM.&lt;/li&gt;
&lt;li&gt;Improved connection reliability on devices with very large hosts files. The client now detects a large hosts file, allows more time for its initial DNS check, and shows a banner letting the user know that connecting may take longer.&lt;/li&gt;
&lt;li&gt;Faster tunnel reconnections and lower memory use. The hosts file is now read once and shared across the client’s DNS resolvers instead of being reloaded by each one.&lt;/li&gt;
&lt;li&gt;A service recovery mechanism, backed by a Windows scheduled task, now starts the client service on system unlock if it is not already running. This is enabled by default.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Additional changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improved reauthentication reliability and fixed an issue where a reauthentication could force a new registration.&lt;/li&gt;
&lt;li&gt;Improved client reaction to the current network lowering its MTU.&lt;/li&gt;
&lt;li&gt;Improved DNS reliability on networks with lower MTUs by clamping the TCP maximum segment size (MSS) for DNS-over-HTTPS connections sent through the tunnel.&lt;/li&gt;
&lt;li&gt;Individual DNS-over-HTTPS queries now time out instead of hanging when the upstream server stops responding.&lt;/li&gt;
&lt;li&gt;Improved API reliability by retrying requests dropped when reusing pooled connections.&lt;/li&gt;
&lt;li&gt;Added an MDM setting to prefer IPv4 when resolving hostnames in proxy mode. The setting is off by default.&lt;/li&gt;
&lt;li&gt;The client no longer requires the Windows WLAN AutoConfig service to be running.&lt;/li&gt;
&lt;li&gt;Fixed the client reconnecting while Emergency Disconnect was active after switching organizations or re-registering.&lt;/li&gt;
&lt;li&gt;Fixed the client being unable to connect after an upgrade when its stored registration credentials no longer matched its configuration.&lt;/li&gt;
&lt;li&gt;Fixed the client service restarting unexpectedly when it was slow to respond, such as after waking from sleep.&lt;/li&gt;
&lt;li&gt;Fixed the client service failing to restart after an unexpected termination.&lt;/li&gt;
&lt;li&gt;Fixed the client UI getting stuck in a connecting state after sleep and wake even though the tunnel was connected.&lt;/li&gt;
&lt;li&gt;Fixed slow captive portal checks causing the client service to become unresponsive or restart while connecting.&lt;/li&gt;
&lt;li&gt;Fixed a race when switching tunnel protocols during key rotation that could prevent WireGuard from connecting.&lt;/li&gt;
&lt;li&gt;Fixed the client continuing to report “No network” after a successful manual disconnect.&lt;/li&gt;
&lt;li&gt;Fixed Digital Experience Monitoring (DEX) HTTP tests failing TLS validation.&lt;/li&gt;
&lt;li&gt;Fixed latency spikes and traffic interruptions during TPM-backed API authentication when hardware-backed registration is enabled.&lt;/li&gt;
&lt;li&gt;Fixed trailing whitespace in BIOS serial numbers causing serial-number and client-certificate device posture checks to fail.&lt;/li&gt;
&lt;li&gt;Fixed the client UI crashing at startup when it could not write to the Windows registry.&lt;/li&gt;
&lt;li&gt;Fixed a client UI crash that could occur when the daemon connection was reset during an IPC request.&lt;/li&gt;
&lt;li&gt;Fixed a startup crash when date formatting data for the system locale had not yet loaded.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A Windows DNS client regression may cause connectivity check failures on systems containing large hosts files. While this release includes a fix to mitigate this issue, users may still experience reduced DNS performance and connectivity check failures.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Wed, 07 Oct 2026 17:01:52 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Linux (version 2026.8.2100.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-10-07-warp-linux-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-10-07-warp-linux-ga/</guid><description>&lt;p&gt;A new GA release for the Linux Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release includes the following highlights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Traffic to split tunnel excluded resources is no longer briefly blocked while the client is connecting or reconnecting. The client now keeps its learned split tunnel configuration across reconnects.&lt;/li&gt;
&lt;li&gt;Support for routing non-RFC 1918 local IPv4 networks through the tunnel when unrestricted LAN inclusion is enabled by policy or MDM.&lt;/li&gt;
&lt;li&gt;Faster tunnel reconnections and lower memory use. The hosts file is now read once and shared across the client’s DNS resolvers instead of being reloaded by each one.&lt;/li&gt;
&lt;li&gt;Added an MDM setting to prefer IPv4 when resolving hostnames in proxy mode. The setting is off by default.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Additional changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improved reauthentication reliability and fixed an issue where a reauthentication could force a new registration.&lt;/li&gt;
&lt;li&gt;Improved client reaction to the current network lowering its MTU.&lt;/li&gt;
&lt;li&gt;Improved DNS reliability on networks with lower MTUs by clamping the TCP maximum segment size (MSS) for DNS-over-HTTPS connections sent through the tunnel.&lt;/li&gt;
&lt;li&gt;Individual DNS-over-HTTPS queries now time out instead of hanging when the upstream server stops responding.&lt;/li&gt;
&lt;li&gt;Improved API reliability by retrying requests dropped when reusing pooled connections.&lt;/li&gt;
&lt;li&gt;Fixed the client reconnecting while Emergency Disconnect was active after switching organizations or re-registering.&lt;/li&gt;
&lt;li&gt;Fixed the client being unable to connect after an upgrade when its stored registration credentials no longer matched its configuration.&lt;/li&gt;
&lt;li&gt;Fixed the client service restarting unexpectedly when it was slow to respond, such as after waking from sleep.&lt;/li&gt;
&lt;li&gt;Fixed the client window not appearing on first launch after a fresh install on RHEL 10.&lt;/li&gt;
&lt;li&gt;Fixed duplicate WARP routing policy rules accumulating on reconnect.&lt;/li&gt;
&lt;li&gt;Fixed slow captive portal checks causing the client service to become unresponsive or restart while connecting.&lt;/li&gt;
&lt;li&gt;Fixed a race when switching tunnel protocols during key rotation that could prevent WireGuard from connecting.&lt;/li&gt;
&lt;li&gt;Fixed the client continuing to report “No network” after a successful manual disconnect.&lt;/li&gt;
&lt;li&gt;Fixed a client UI crash that could occur when the daemon connection was reset during an IPC request.&lt;/li&gt;
&lt;li&gt;Fixed a startup crash when date formatting data for the system locale had not yet loaded.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When in DNS Only mode, the client may send DNS queries for names that are configured for Local Domain Fallback to the encrypted DNS server instead of falling back to the system configuration. Local Domain Fallback works as expected in other client modes.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Wed, 07 Oct 2026 16:34:14 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare Fundamentals, Cloudflare One, Gateway, Organizations - Cloudflare Organizations is generally available</title><link>https://docs.infinitegaming.org/changelog/post/2026-10-07-organizations-generally-available/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-10-07-organizations-generally-available/</guid><description>&lt;p&gt;Cloudflare Organizations is now generally available for Enterprise customers and MSSP/Distributor partners.&lt;/p&gt;
&lt;p&gt;Organizations provides a top-level container for centrally managing accounts, members, analytics, and shared policies. Organization Super Administrators receive implicit access to every account in their Organization without requiring separate account memberships.&lt;/p&gt;
&lt;p&gt;Enterprise customers can manage accounts in a single-tier Organization. MSSP/Distributor partners can use nested sub-organizations to manage customer accounts.&lt;/p&gt;
&lt;p&gt;Organization Roles remains in beta, and current product limitations still apply.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/organizations/&quot;&gt;Cloudflare Organizations&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/organizations/limitations/&quot;&gt;current limitations&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate><product>Cloudflare Fundamentals</product><category>Cloudflare Fundamentals</category><category>Cloudflare One</category><category>Gateway</category><category>Organizations</category></item><item><title>CASB - Detect organization-specific risks with CASB custom finding types</title><link>https://docs.infinitegaming.org/changelog/post/2026-10-05-casb-custom-findings/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-10-05-casb-custom-findings/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/cloud-and-saas/&quot;&gt;Cloudflare CASB&lt;/a&gt; now supports &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/cloud-and-saas-findings/custom-finding-types/&quot;&gt;&lt;strong&gt;custom finding types&lt;/strong&gt;&lt;/a&gt;, giving security teams full control over the security conditions CASB detects across their SaaS and cloud integrations.&lt;/p&gt;
&lt;p&gt;In addition to CASB&apos;s library of standard finding types, you can now write your own detection logic using &lt;a href=&quot;https://www.openpolicyagent.org/docs/policy-language&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Rego&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, the open-source policy language from Open Policy Agent (OPA). Use custom finding types to match your organization&apos;s own thresholds and exceptions, such as flagging admin accounts without two-factor authentication, and get higher-confidence findings to act on.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1194,height=1194,format=webp/_astro/create-custom-finding-type.CF3GXoPZ.png&quot; alt=&quot;Create a custom finding type with a name, severity, scope, and Rego detection logic&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1194&quot; height=&quot;1194&quot;&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;key-capabilities&quot;&gt;Key capabilities&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#key-capabilities&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Write your own detection logic&lt;/strong&gt; — Define exactly what CASB flags using Rego expressions evaluated against asset data from your connected integrations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Target any supported provider and asset class&lt;/strong&gt; — Scope a custom finding type to a provider (such as Google Workspace or Microsoft 365) and asset class (such as users, files, or groups), and apply it to all integrations for that provider or a selected subset.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built-in validation&lt;/strong&gt; — Select &lt;strong&gt;Validate&lt;/strong&gt; to check your expression for syntax errors and schema issues before you create the finding type.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inspect and duplicate standard finding types&lt;/strong&gt; — Open any standard finding type to view its detection logic, then duplicate it as the starting point for a custom finding type.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Works with CASB policies&lt;/strong&gt; — Use custom finding types in &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/cloud-and-saas-findings/policies/&quot;&gt;CASB remediation policies&lt;/a&gt; to send matching findings to Slack, ServiceNow, or any other webhook destination.&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;get-started&quot;&gt;Get started&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#get-started&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;In &lt;a href=&quot;https://one.dash.cloudflare.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare One&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, go to &lt;strong&gt;Cloud &amp;amp; SaaS findings&lt;/strong&gt; &amp;gt; &lt;strong&gt;Findings library&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Create finding&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enter a name, description, and severity.&lt;/li&gt;
&lt;li&gt;Select a provider and asset class, then set the integration scope.&lt;/li&gt;
&lt;li&gt;Write your Rego expression and select &lt;strong&gt;Validate&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Create finding&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;CASB evaluates the custom finding type against assets as they are created or updated within the selected scope. Matching assets appear as posture finding instances under &lt;strong&gt;Posture Findings&lt;/strong&gt;.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;learn-more&quot;&gt;Learn more&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#learn-more&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Learn how to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/cloud-and-saas-findings/custom-finding-types/&quot;&gt;create and manage custom finding types&lt;/a&gt; in Cloudflare One.&lt;/li&gt;
&lt;li&gt;Learn how to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/cloud-and-saas-findings/manage-findings/&quot;&gt;manage findings&lt;/a&gt; in Cloudflare One.&lt;/li&gt;
&lt;li&gt;Learn how to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/cloud-and-saas-findings/policies/&quot;&gt;create and manage CASB remediation policies&lt;/a&gt; in Cloudflare One.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CASB custom finding types are now available in Cloudflare One.&lt;/p&gt;</description><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><product>CASB</product><category>CASB</category></item><item><title>Cloudflare WAN, Magic Transit, Cloudflare One - BGP over IPsec and GRE tunnels generally available</title><link>https://docs.infinitegaming.org/changelog/post/2026-10-05-bgp-over-tunnels-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-10-05-bgp-over-tunnels-ga/</guid><description>&lt;p&gt;BGP peering over IPsec and GRE tunnels is generally available for Cloudflare WAN and Magic Transit. You can use it for production workloads.&lt;/p&gt;
&lt;p&gt;BGP peering exchanges routes dynamically between your devices and your Cloudflare virtual network routing table. You no longer need to update static routes manually as your network changes.&lt;/p&gt;
&lt;p&gt;BGP over IPsec and GRE tunnels is available to all accounts that use &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/reference/traffic-steering/#unified-routing&quot;&gt;Unified Routing&lt;/a&gt;. No enablement is required. BGP over CNI remains in closed beta.&lt;/p&gt;
&lt;p&gt;For configuration details, refer to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/how-to/configure-routes/#configure-bgp-routes&quot;&gt;Configure BGP routes for Cloudflare WAN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/magic-transit/how-to/configure-routes/#configure-bgp-routes&quot;&gt;Configure BGP routes for Magic Transit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><product>Cloudflare WAN</product><category>Cloudflare WAN</category><category>Magic Transit</category><category>Cloudflare One</category></item><item><title>Access, Cloudflare One - New strict service token authentication setting for Access</title><link>https://docs.infinitegaming.org/changelog/post/2026-10-02-strict-service-token-authentication/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-10-02-strict-service-token-authentication/</guid><description>
&lt;p&gt;The strict service token authentication setting applies consistent behavior to requests made with service tokens. When the setting is on for a Zero Trust organization, Access handles requests with service token headers as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If authentication or authorization fails, Access always returns &lt;code&gt;401&lt;/code&gt; or &lt;code&gt;403&lt;/code&gt; instead of redirecting the client to the login page with &lt;code&gt;302&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Only Service Auth policies can authorize the request. Access ignores Allow policies and any &lt;code&gt;CF_Authorization&lt;/code&gt; cookie sent with the request.&lt;/li&gt;
&lt;li&gt;Access does not return a &lt;code&gt;CF_Authorization&lt;/code&gt; cookie to the client after successful authentication. Subsequent requests should continue to use service token headers.&lt;/li&gt;
&lt;li&gt;Failed requests for recognized service tokens appear in &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/logs/dashboard-logs/access-authentication-logs/#non-identity-authentication&quot;&gt;Access authentication logs&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Zero Trust organizations created on or after October 5, 2026 have strict service token authentication turned on by default and cannot turn it off. Cloudflare recommends that existing organizations turn it on as well.&lt;/p&gt;
&lt;p&gt;Organizations created before October 5, 2026 can configure the setting in the dashboard or through the API.&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;dashPlusAPI&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;Dashboard&quot; class&gt;&lt;div data-nb-steps class=&quot;steps&quot; data-astro-cid-sfejetki&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;In the &lt;a href=&quot;https://dash.cloudflare.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, go to &lt;strong&gt;Zero Trust&lt;/strong&gt; &amp;gt; &lt;strong&gt;Access controls&lt;/strong&gt; &amp;gt; &lt;strong&gt;Access settings&lt;/strong&gt;.&lt;/p&gt;
&lt;a href=&quot;https://one.dash.cloudflare.com/?to=/:account/access-controls/settings&quot; data-nb-button class=&quot;group inline-flex w-max shrink-0 items-center justify-center rounded-full font-medium whitespace-nowrap no-underline shadow-xs transition-colors cursor-pointer select-none focus-visible:outline-2 focus-visible:outline-ring focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary-hover h-9 gap-1.5 px-3 text-sm&quot; target=&quot;_blank&quot;&gt;
	Go to &lt;strong&gt;Access settings&lt;/strong&gt;&amp;nbsp;&amp;#8599;
&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Under &lt;strong&gt;Manage service tokens&lt;/strong&gt;, turn on &lt;strong&gt;Strict service token authentication&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the confirmation dialog, select &lt;strong&gt;Enable&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/steps/Steps.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;&lt;p&gt;To turn off strict service token authentication, turn off the setting and select &lt;strong&gt;Disable&lt;/strong&gt;.&lt;/p&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;API&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;https://api.cloudflare.com/client/v4/accounts/%7Baccount_id%7D/access/organizations&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	--request&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; PATCH&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	--header&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;Authorization: Bearer &lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$CLOUDFLARE_API_TOKEN&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	--json&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &apos;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;		&quot;strict_service_token_auth&quot;: true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;	}&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;p&gt;To turn off strict service token authentication, set &lt;code&gt;strict_service_token_auth&lt;/code&gt; to &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;For behavior and configuration details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/service-credentials/service-tokens/#strict-service-token-authentication&quot;&gt;Strict service token authentication&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 02 Oct 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category><category>Cloudflare One</category></item><item><title>Cloudflare Tunnel - Protect Quick Tunnels with email authentication</title><link>https://docs.infinitegaming.org/changelog/post/2026-10-02-protected-quick-tunnels/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-10-02-protected-quick-tunnels/</guid><description>&lt;p&gt;You can now restrict who can access a &lt;a href=&quot;https://docs.infinitegaming.org/tunnel/get-started/quick-tunnels/&quot;&gt;Quick Tunnel&lt;/a&gt;. Use the new &lt;code&gt;--allowed-mail&lt;/code&gt; flag in &lt;code&gt;cloudflared&lt;/code&gt; to require visitors to authenticate with a one-time PIN sent to their email before they reach your local service.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;cloudflared&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; tunnel&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --url&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; http://localhost:8080&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --allowed-mail&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; alice@example.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1512,height=854,format=webp/_astro/protected-quick-tunnels.DlA306r_.gif&quot; alt=&quot;Protected Quick Tunnel demo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1512&quot; height=&quot;854&quot;&gt;
&lt;p&gt;Previously, anyone with a &lt;code&gt;trycloudflare.com&lt;/code&gt; URL could access the service behind it. Protected Quick Tunnels let you share a local development server, webhook receiver, or demo with specific people without creating a Cloudflare account or configuring a domain.&lt;/p&gt;
&lt;p&gt;You can allow:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A single email address: &lt;code&gt;--allowed-mail alice@example.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Multiple email addresses, by repeating the flag or using a comma-separated list: &lt;code&gt;--allowed-mail &apos;alice@example.com,bob@example.com&apos;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Every address on a domain: &lt;code&gt;--allowed-mail &apos;*@example.com&apos;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Visitors do not need a Cloudflare account. Access ends for everyone when you stop the &lt;code&gt;cloudflared&lt;/code&gt; process.&lt;/p&gt;
&lt;p&gt;To get started, &lt;a href=&quot;https://docs.infinitegaming.org/tunnel/downloads/&quot;&gt;update &lt;code&gt;cloudflared&lt;/code&gt;&lt;/a&gt; to the latest version and refer to &lt;a href=&quot;https://docs.infinitegaming.org/tunnel/get-started/quick-tunnels/#restrict-access-by-email&quot;&gt;Restrict access by email&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 02 Oct 2026 00:00:00 GMT</pubDate><product>Cloudflare Tunnel</product><category>Cloudflare Tunnel</category></item><item><title>Cloudflare One, Access - Simplified permissions for tagging targets with Access for Infrastructure</title><link>https://docs.infinitegaming.org/changelog/post/2026-10-01-infrastructure-target-tag-permissions/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-10-01-infrastructure-target-tag-permissions/</guid><description>&lt;p&gt;You can now tag &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/non-http/infrastructure-apps/#tag-targets&quot;&gt;targets&lt;/a&gt; using only the &lt;code&gt;Zero Trust Write&lt;/code&gt; API token permission. Previously, tagging targets through the API required both &lt;code&gt;Zero Trust Write&lt;/code&gt; and &lt;code&gt;Tag Write&lt;/code&gt; permissions on the API token.&lt;/p&gt;
&lt;p&gt;This change applies to inline target tagging through the &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/access/subresources/infrastructure/subresources/targets/&quot;&gt;Infrastructure Access Targets API&lt;/a&gt;. Tagging resources through the general &lt;a href=&quot;https://docs.infinitegaming.org/resource-tagging/&quot;&gt;Resource Tagging API&lt;/a&gt; still requires the &lt;code&gt;Tag Admin&lt;/code&gt;, &lt;code&gt;Tag Write&lt;/code&gt;, or equivalent role.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/non-http/infrastructure-apps/#tag-targets&quot;&gt;Tag targets&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category><category>Access</category></item><item><title>Workers - Web Crypto adds ML-KEM and ML-DSA support</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-28-webcrypto-modern-algorithms/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-28-webcrypto-modern-algorithms/</guid><description>
&lt;p&gt;The Workers Web Crypto API now supports ML-KEM-768, ML-KEM-1024, ML-DSA-44, ML-DSA-65, and ML-DSA-87. ML-KEM establishes shared secrets, while ML-DSA signs and verifies data.&lt;/p&gt;
&lt;p&gt;The opt-in API also adds key encapsulation and decapsulation methods, &lt;code&gt;getPublicKey()&lt;/code&gt;, &lt;code&gt;SubtleCrypto.supports()&lt;/code&gt;, and JSON Web Keys (JWKs) with the &lt;code&gt;AKP&lt;/code&gt; key type.&lt;/p&gt;
&lt;p&gt;Turn on the &lt;code&gt;webcrypto_modern_algorithms&lt;/code&gt; compatibility flag to use these features:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;$schema&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./node_modules/wrangler/config-schema.json&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;compatibility_flags&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;    &quot;webcrypto_modern_algorithms&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;compatibility_flags = [&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;webcrypto_modern_algorithms&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;This example uses ML-KEM-768 to establish the same shared secret on both sides:&lt;/p&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;js&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;src/index.js&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; keyPair&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; crypto.subtle.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;generateKey&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;ML-KEM-768&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;	&quot;encapsulateBits&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;	&quot;decapsulateBits&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;publicKey&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; in&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; keyPair)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	throw&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Error&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Expected an ML-KEM key pair&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;sharedKey&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;ciphertext&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; crypto.subtle.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;encapsulateBits&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;	&quot;ML-KEM-768&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	keyPair.publicKey,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; recoveredSharedKey&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; crypto.subtle.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;decapsulateBits&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;	&quot;ML-KEM-768&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	keyPair.privateKey,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	ciphertext,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;src/index.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; keyPair&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; crypto.subtle.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;generateKey&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;ML-KEM-768&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;	&quot;encapsulateBits&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;	&quot;decapsulateBits&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;publicKey&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; in&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; keyPair)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	throw&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Error&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Expected an ML-KEM key pair&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;sharedKey&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;ciphertext&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; crypto.subtle.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;encapsulateBits&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;	&quot;ML-KEM-768&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	keyPair.publicKey,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; recoveredSharedKey&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; crypto.subtle.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;decapsulateBits&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;	&quot;ML-KEM-768&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	keyPair.privateKey,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	ciphertext,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Workers implements a subset of the evolving &lt;a href=&quot;https://wicg.github.io/webcrypto-modern-algos/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Modern Algorithms in the Web Cryptography API&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; draft. ML-KEM-512 and the draft&apos;s other algorithms are not supported. The API may change as the draft evolves.&lt;/p&gt;
&lt;p&gt;For current algorithm and operation support, refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/web-crypto/#supported-algorithms&quot;&gt;Web Crypto supported algorithms&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Windows (version 2026.8.2033.1)</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-30-warp-windows-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-30-warp-windows-beta/</guid><description>&lt;p&gt;A new Beta release for the Windows Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/beta-releases/&quot;&gt;beta releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This beta release includes the following changes and improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an issue that could briefly block traffic to split tunnel excluded resources while the client was connecting or reconnecting.&lt;/li&gt;
&lt;li&gt;Improved reauthentication reliability and fixed an issue where a reauthentication could force a new registration.&lt;/li&gt;
&lt;li&gt;Improved client reaction to the current network lowering its MTU.&lt;/li&gt;
&lt;li&gt;Added support for routing non-RFC 1918 local IPv4 networks through the WARP tunnel when unrestricted LAN inclusion is enabled by policy or MDM.&lt;/li&gt;
&lt;li&gt;Improved DNS reliability on networks with lower MTUs by clamping the TCP maximum segment size (MSS) for DNS-over-HTTPS connections sent through the tunnel.&lt;/li&gt;
&lt;li&gt;Improved API reliability by retrying requests dropped when reusing pooled connections.&lt;/li&gt;
&lt;li&gt;The client no longer requires the Windows WLAN AutoConfig service to be running.&lt;/li&gt;
&lt;li&gt;Implemented a service recovery mechanism backed by Windows scheduler task to start WARP service on system unlock if not already started.&lt;/li&gt;
&lt;li&gt;Fixed slow captive portal checks causing the client service to become unresponsive or restart while connecting.&lt;/li&gt;
&lt;li&gt;Fixed a race when switching tunnel protocols during key rotation that could prevent WireGuard from connecting.&lt;/li&gt;
&lt;li&gt;Fixed the client continuing to report &apos;No network&apos; after a successful manual disconnect.&lt;/li&gt;
&lt;li&gt;Fixed Digital Experience Monitoring (DEX) HTTP tests failing TLS validation on Windows.&lt;/li&gt;
&lt;li&gt;Fixed the client UI crashing at startup when it could not write to the Windows registry.&lt;/li&gt;
&lt;li&gt;Fixed latency spikes and traffic interruptions during TPM-backed API authentication when hardware-backed registration is enabled.&lt;/li&gt;
&lt;li&gt;Fixed trailing whitespace in BIOS serial numbers causing serial-number and client-certificate device posture checks to fail.&lt;/li&gt;
&lt;li&gt;Fixed a client UI crash that could occur when the daemon connection was reset during an IPC request.&lt;/li&gt;
&lt;li&gt;Fixed a startup crash when date formatting data for the system locale had not yet loaded.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;None&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For Zero Trust documentation, see: &lt;a href=&quot;https://developers.cloudflare.com/cloudflare-one/team-and-resources/devices/cloudflare-one-client/&quot;&gt;https://developers.cloudflare.com/cloudflare-one/team-and-resources/devices/cloudflare-one-client/&lt;/a&gt;
For Consumer documentation, see: &lt;a href=&quot;https://developers.cloudflare.com/warp-client/&quot;&gt;https://developers.cloudflare.com/warp-client/&lt;/a&gt;&lt;/p&gt;
</description><pubDate>Wed, 30 Sep 2026 02:01:09 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Browser Isolation, Gateway, Cloudflare One - Role-based access control for Browser Isolation policies</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-30-browser-isolation-rbac/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-30-browser-isolation-rbac/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/remote-browser-isolation/isolation-policies/&quot;&gt;Isolation policies&lt;/a&gt; support role-based access control (RBAC). Because isolation policies are Gateway HTTP policies with the &lt;em&gt;Isolate&lt;/em&gt; action, Gateway&apos;s account-level and resource-scoped roles apply to them directly.&lt;/p&gt;
&lt;p&gt;Use the &lt;code&gt;Zero Trust HTTP Policies Admin&lt;/code&gt; account-level role to grant access to all HTTP policies in the account. You can also assign a &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/granular-permissions/&quot;&gt;resource-scoped role&lt;/a&gt; to let a team member manage a specific isolation policy without exposing other Gateway resources.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/remote-browser-isolation/isolation-policies/#policy-settings&quot;&gt;Policy settings&lt;/a&gt; such as copy/paste, file download/upload, keyboard, and printing are part of the policy object and follow the same permissions.&lt;/p&gt;
&lt;p&gt;For setup instructions, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/granular-permissions/&quot;&gt;Granular permissions for Gateway&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 30 Sep 2026 00:00:00 GMT</pubDate><product>Browser Isolation</product><category>Browser Isolation</category><category>Gateway</category><category>Cloudflare One</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Windows (version 2026.8.2028.1)</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-29-warp-windows-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-29-warp-windows-beta/</guid><description>&lt;p&gt;A new Beta release for the Windows Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/beta-releases/&quot;&gt;beta releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This beta release includes the following changes and improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an issue that could briefly block traffic to split tunnel excluded resources while the client was connecting or reconnecting.&lt;/li&gt;
&lt;li&gt;Improved reauthentication reliability and fixed an issue where a reauthentication could force a new registration.&lt;/li&gt;
&lt;li&gt;Improved client reaction to the current network lowering its MTU.&lt;/li&gt;
&lt;li&gt;Added support for routing non-RFC 1918 local IPv4 networks through the WARP tunnel when unrestricted LAN inclusion is enabled by policy or MDM.&lt;/li&gt;
&lt;li&gt;Improved DNS reliability on networks with lower MTUs by clamping the TCP maximum segment size (MSS) for DNS-over-HTTPS connections sent through the tunnel.&lt;/li&gt;
&lt;li&gt;Improved API reliability by retrying requests dropped when reusing pooled connections.&lt;/li&gt;
&lt;li&gt;The client no longer requires the Windows WLAN AutoConfig service to be running.&lt;/li&gt;
&lt;li&gt;Implemented a service recovery mechanism backed by Windows scheduler task to start WARP service on system unlock if not already started.&lt;/li&gt;
&lt;li&gt;Fixed slow captive portal checks causing the client service to become unresponsive or restart while connecting.&lt;/li&gt;
&lt;li&gt;Fixed a race when switching tunnel protocols during key rotation that could prevent WireGuard from connecting.&lt;/li&gt;
&lt;li&gt;Fixed the client continuing to report &apos;No network&apos; after a successful manual disconnect.&lt;/li&gt;
&lt;li&gt;Fixed Digital Experience Monitoring (DEX) HTTP tests failing TLS validation on Windows.&lt;/li&gt;
&lt;li&gt;Fixed the client UI crashing at startup when it could not write to the Windows registry.&lt;/li&gt;
&lt;li&gt;Fixed latency spikes and traffic interruptions during TPM-backed API authentication when hardware-backed registration is enabled.&lt;/li&gt;
&lt;li&gt;Fixed trailing whitespace in BIOS serial numbers causing serial-number and client-certificate device posture checks to fail.&lt;/li&gt;
&lt;li&gt;Fixed a client UI crash that could occur when the daemon connection was reset during an IPC request.&lt;/li&gt;
&lt;li&gt;Fixed a startup crash when date formatting data for the system locale had not yet loaded.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;None&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 29 Sep 2026 09:45:17 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - Cloudflare One Client for macOS (version 2026.8.2028.1)</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-29-warp-macos-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-29-warp-macos-beta/</guid><description>&lt;p&gt;A new Beta release for the macOS Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/beta-releases/&quot;&gt;beta releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This beta release includes the following changes and improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an issue that could briefly block traffic to split tunnel excluded resources while the client was connecting or reconnecting.&lt;/li&gt;
&lt;li&gt;Improved reauthentication reliability and fixed an issue where a reauthentication could force a new registration.&lt;/li&gt;
&lt;li&gt;Improved client reaction to the current network lowering its MTU.&lt;/li&gt;
&lt;li&gt;Added support for routing non-RFC 1918 local IPv4 networks through the WARP tunnel when unrestricted LAN inclusion is enabled by policy or MDM.&lt;/li&gt;
&lt;li&gt;Improved DNS reliability on networks with lower MTUs by clamping the TCP maximum segment size (MSS) for DNS-over-HTTPS connections sent through the tunnel.&lt;/li&gt;
&lt;li&gt;Improved API reliability by retrying requests dropped when reusing pooled connections.&lt;/li&gt;
&lt;li&gt;Fixed Extra Logging failing to capture packets across all interfaces.&lt;/li&gt;
&lt;li&gt;Fixed an issue that could prevent remote diagnostics from completing.&lt;/li&gt;
&lt;li&gt;Fixed DNS connectivity checks failing on IPv6-only networks.&lt;/li&gt;
&lt;li&gt;Fixed the client service exiting when its route-monitoring socket was closed after sleep or wake.&lt;/li&gt;
&lt;li&gt;Fixed DNS enforcement checks making the client service unresponsive on systems with large routing tables.&lt;/li&gt;
&lt;li&gt;Fixed slow captive portal checks causing the client service to become unresponsive or restart while connecting.&lt;/li&gt;
&lt;li&gt;Fixed a race when switching tunnel protocols during key rotation that could prevent WireGuard from connecting.&lt;/li&gt;
&lt;li&gt;Fixed the client continuing to report &apos;No network&apos; after a successful manual disconnect.&lt;/li&gt;
&lt;li&gt;Fixed a client UI crash that could occur when the daemon connection was reset during an IPC request.&lt;/li&gt;
&lt;li&gt;Fixed a startup crash when date formatting data for the system locale had not yet loaded.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;None&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 29 Sep 2026 09:45:16 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare Mesh, Cloudflare Tunnel, Cloudflare One, Gateway, Workers VPC - Identify Mesh, Workers VPC, and Cloudflare Tunnel replicas in network logs</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-29-mesh-workers-vpc-network-logs/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-29-mesh-workers-vpc-network-logs/</guid><description>&lt;p&gt;You can now tell a person on a laptop apart from a Mesh node or an AI agent running on Workers, without matching on connector email addresses or Mesh IP ranges — and see exactly which Cloudflare Tunnel and &lt;code&gt;cloudflared&lt;/code&gt; replica received each session.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/logs/dashboard-logs/gateway-logs/#network-logs&quot;&gt;Gateway network logs&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/logs/logpush/logpush-job/datasets/account/zero_trust_network_sessions/&quot;&gt;Zero Trust Network Session Logs&lt;/a&gt; now identify two new kinds of traffic:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mesh&lt;/strong&gt; — Traffic sent from or delivered to a &lt;a href=&quot;https://docs.infinitegaming.org/mesh/&quot;&gt;Cloudflare Mesh&lt;/a&gt; node. Previously, Mesh nodes were logged the same way as devices running the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/&quot;&gt;Cloudflare One Client&lt;/a&gt;, because Mesh nodes run the client in headless mode.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Workers VPC&lt;/strong&gt; — Traffic sent by a Worker through a &lt;a href=&quot;https://docs.infinitegaming.org/workers-vpc/&quot;&gt;Workers VPC&lt;/a&gt; binding. Previously, Workers VPC sessions were not recorded in Network Session Logs.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1439,height=796,format=webp/_astro/2026-09-28-mesh-workers-vpc-network-logs.iGvLKYk7.gif&quot; alt=&quot;Viewing Mesh and Workers VPC traffic in Gateway network logs&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1439&quot; height=&quot;796&quot;&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;gateway-network-logs&quot;&gt;Gateway network logs&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#gateway-network-logs&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;To view these values in the dashboard, go to &lt;strong&gt;Zero Trust&lt;/strong&gt; &amp;gt; &lt;strong&gt;Insights &amp;amp; Logs&lt;/strong&gt; &amp;gt; &lt;strong&gt;Logs&lt;/strong&gt; &amp;gt; &lt;strong&gt;Network logs&lt;/strong&gt;, select &lt;strong&gt;Columns&lt;/strong&gt;, and turn on &lt;strong&gt;Traffic Source&lt;/strong&gt; and &lt;strong&gt;Traffic Destination&lt;/strong&gt;. Both values also appear under &lt;strong&gt;Network query details&lt;/strong&gt; when you open a log entry.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;network-session-logs&quot;&gt;Network Session Logs&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#network-session-logs&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;zero_trust_network_sessions&lt;/code&gt; dataset, available through &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/logs/logpush/&quot;&gt;Logpush&lt;/a&gt;, includes the following fields:&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;OnrampType&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;How the session entered Cloudflare One. Values: &lt;code&gt;CF1_CLIENT&lt;/code&gt;, &lt;code&gt;MESH&lt;/code&gt;, &lt;code&gt;WORKERS_VPC&lt;/code&gt;, &lt;code&gt;MAGIC&lt;/code&gt;, &lt;code&gt;OTHER&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Offramp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Where the session was routed. Sessions routed to a Mesh node report &lt;code&gt;MESH&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;SourceName&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Name of the Worker that started the session. Only populated for Workers VPC sessions.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;SourceID&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Stable identifier of the Worker that started the session. Only populated for Workers VPC sessions.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;DestinationReplicaID&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The replica that served the session, such as a specific replica of a Mesh node or a &lt;code&gt;cloudflared&lt;/code&gt; replica of a Cloudflare Tunnel.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;For example, &lt;code&gt;OnrampType = &apos;WORKERS_VPC&apos; AND Offramp = &apos;MESH&apos;&lt;/code&gt; returns every session where a Worker reached a service behind a Mesh node, and &lt;code&gt;SourceName&lt;/code&gt; tells you which Worker it was.&lt;/p&gt;
&lt;aside role=&quot;note&quot; aria-label=&quot;Redeploy your Workers&quot; class=&quot;aside-card flex items-start gap-3 rounded-lg px-4 py-3 my-4&quot; style=&quot;--_c: var(--nb-warning); --_t: var(--nb-warning-muted);&quot; data-astro-cid-znle5jil&gt;&lt;span class=&quot;flex h-[1.375em] shrink-0 items-center&quot; aria-hidden=&quot;true&quot; data-astro-cid-znle5jil&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[1em] w-[1em]&quot; data-astro-cid-znle5jil=&quot;true&quot; data-icon=&quot;ph:warning&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M236.8 188.09L149.35 36.22a24.76 24.76 0 0 0-42.7 0L19.2 188.09a23.51 23.51 0 0 0 0 23.72A24.35 24.35 0 0 0 40.55 224h174.9a24.35 24.35 0 0 0 21.33-12.19a23.51 23.51 0 0 0 .02-23.72m-13.87 15.71a8.5 8.5 0 0 1-7.48 4.2H40.55a8.5 8.5 0 0 1-7.48-4.2a7.59 7.59 0 0 1 0-7.72l87.45-151.87a8.75 8.75 0 0 1 15 0l87.45 151.87a7.59 7.59 0 0 1-.04 7.72M120 144v-40a8 8 0 0 1 16 0v40a8 8 0 0 1-16 0m20 36a12 12 0 1 1-12-12a12 12 0 0 1 12 12&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div class=&quot;flex min-w-0 flex-1 flex-col gap-0.5&quot; data-astro-cid-znle5jil&gt;&lt;p class=&quot;m-0 text-base leading-snug font-semibold&quot; data-astro-cid-znle5jil&gt;Redeploy your Workers&lt;/p&gt;&lt;div class=&quot;aside-card-body text-sm leading-normal&quot; data-astro-cid-znle5jil&gt;&lt;p&gt;&lt;code&gt;SourceName&lt;/code&gt; and &lt;code&gt;SourceID&lt;/code&gt; are only populated for Workers deployed after 29 September 2026. To include them for an existing Worker, redeploy it — for example, with &lt;code&gt;npx wrangler deploy&lt;/code&gt;. No code changes are required.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;see-which-tunnel-and-replica-received-a-session&quot;&gt;See which tunnel and replica received a session&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#see-which-tunnel-and-replica-received-a-session&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;With &lt;code&gt;DestinationReplicaID&lt;/code&gt;, you can now confirm which &lt;a href=&quot;https://docs.infinitegaming.org/tunnel/&quot;&gt;Cloudflare Tunnel&lt;/a&gt; and which &lt;code&gt;cloudflared&lt;/code&gt; replica received traffic for a specific session. Combine it with the existing &lt;code&gt;DestinationTunnelID&lt;/code&gt; field to trace a session to an exact tunnel replica — or Mesh node replica — when you run multiple replicas for high availability. The replica ID matches the &lt;strong&gt;Connector ID&lt;/strong&gt; shown in the dashboard, so you can &lt;a href=&quot;https://docs.infinitegaming.org/tunnel/observability/#remote-log-streaming&quot;&gt;stream that replica&apos;s logs&lt;/a&gt; with &lt;code&gt;cloudflared tail --connector-id&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Sessions logged before this change are not backfilled. For all available fields, refer to &lt;a href=&quot;https://docs.infinitegaming.org/logs/logpush/logpush-job/datasets/account/zero_trust_network_sessions/&quot;&gt;Zero Trust Network Session Logs&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate><product>Cloudflare Mesh</product><category>Cloudflare Mesh</category><category>Cloudflare Tunnel</category><category>Cloudflare One</category><category>Gateway</category><category>Workers VPC</category></item><item><title>Workers - Workers Cache — mark cached responses stale with invalidate()</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-29-workers-cache-invalidate/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-29-workers-cache-invalidate/</guid><description>
&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/cache/&quot;&gt;Workers Cache&lt;/a&gt; now supports &lt;code&gt;invalidate()&lt;/code&gt;, the soft counterpart of &lt;code&gt;purge()&lt;/code&gt;. &lt;code&gt;purge()&lt;/code&gt; deletes matching cached responses, so the next request is a cache miss. &lt;code&gt;invalidate()&lt;/code&gt; keeps them but marks them stale, so the cache revalidates them with your Worker instead.&lt;/p&gt;
&lt;p&gt;To revalidate a response, the cache sends your Worker a conditional request built from the validators stored with it — for example, &lt;code&gt;If-None-Match&lt;/code&gt; carrying the cached &lt;code&gt;ETag&lt;/code&gt;. If your Worker answers &lt;code&gt;304 Not Modified&lt;/code&gt;, the cache keeps the stored body. If your Worker answers with a full &lt;code&gt;200&lt;/code&gt; response, that response replaces the cached one.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;invalidate()&lt;/code&gt; accepts the same options as &lt;code&gt;purge()&lt;/code&gt;: &lt;code&gt;tags&lt;/code&gt;, &lt;code&gt;pathPrefixes&lt;/code&gt;, or &lt;code&gt;purgeEverything&lt;/code&gt;. It follows the same per-entrypoint scoping and resolves to the same result object. Call it as &lt;code&gt;ctx.cache.invalidate()&lt;/code&gt;, or import &lt;code&gt;cache&lt;/code&gt; from &lt;code&gt;cloudflare:workers&lt;/code&gt; and call &lt;code&gt;cache.invalidate()&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Use &lt;code&gt;invalidate()&lt;/code&gt; when one call covers many cached responses but only some of them changed. Your Worker needs to emit &lt;code&gt;ETag&lt;/code&gt; or &lt;code&gt;Last-Modified&lt;/code&gt; and answer matching conditional requests with &lt;code&gt;304&lt;/code&gt;. Each unchanged response then costs a validator check instead of a full regeneration:&lt;/p&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;js&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;src/index.js&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		if&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (request.method &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;===&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;POST&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;			// Write the updated catalog, then mark every cached product page stale.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; syncCatalog&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(env, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; request.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; ctx.cache.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;invalidate&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({ tags: [&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;products&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;] });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Synced&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; product&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; getProduct&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(env, request);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; etag&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; `&quot;${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;product&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;revision&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;}&quot;`&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; headers&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;			&quot;Cache-Control&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;public, max-age=86400&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;			&quot;Cache-Tag&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;products&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			ETag: etag,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// The product has not changed since it was cached. Answer 304, and the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// cache keeps the body it already has.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		if&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (request.headers.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;If-None-Match&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;===&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; etag) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, { status: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;304&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, headers });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;renderProductPage&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(product), { headers });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;src/index.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Promise&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		if&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (request.method &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;===&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;POST&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;			// Write the updated catalog, then mark every cached product page stale.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; syncCatalog&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(env, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; request.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; ctx.cache.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;invalidate&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({ tags: [&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;products&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;] });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Synced&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; product&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; getProduct&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(env, request);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; etag&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; `&quot;${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;product&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;revision&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;}&quot;`&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; headers&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;			&quot;Cache-Control&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;public, max-age=86400&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;			&quot;Cache-Tag&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;products&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			ETag: etag,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// The product has not changed since it was cached. Answer 304, and the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// cache keeps the body it already has.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		if&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (request.headers.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;If-None-Match&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;===&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; etag) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, { status: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;304&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, headers });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;renderProductPage&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(product), { headers });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;} &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;satisfies&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; ExportedHandler&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;&lt;/div&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/cache/purge/#invalidate-cached-responses&quot;&gt;Invalidate cached responses&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers, Cloudflare CLI - Cloudflare CLI is now in beta</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-28-cloudflare-cli-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-28-cloudflare-cli-beta/</guid><description>
&lt;p&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/cf/&quot;&gt;Cloudflare CLI&lt;/a&gt;, &lt;code&gt;cf&lt;/code&gt;, is now in beta. &lt;code&gt;cf&lt;/code&gt; is one command-line interface for the public Cloudflare API and for Workers projects. Use it to manage zones, DNS, storage, and security settings, and to create, develop, and deploy Workers, without switching between tools.&lt;/p&gt;
&lt;p&gt;Install &lt;code&gt;cf&lt;/code&gt; globally, then sign in:&lt;/p&gt;
&lt;script&gt;
	if (!customElements.get(&quot;nb-pm-restore&quot;)) {
		customElements.define(
			&quot;nb-pm-restore&quot;,
			class extends HTMLElement {
				connectedCallback() {
					const card = this.closest(&quot;[data-nb-pm]&quot;);
					if (!card) return;
					let saved;
					try {
						saved = sessionStorage.getItem(&quot;ui-pm-tab&quot;);
					} catch {
						return;
					}
					if (!saved) return;
					const tabs = card.querySelectorAll(&quot;[data-nb-pm-tab]&quot;);
					let idx = -1;
					tabs.forEach(function (t, i) {
						if (t.textContent.trim() === saved) idx = i;
					});
					if (idx &lt; 1) return;
					tabs.forEach(function (t, i) {
						t.setAttribute(&quot;aria-selected&quot;, String(i === idx));
					});
					card.querySelectorAll(&quot;[data-nb-pm-panel]&quot;).forEach(function (p, i) {
						p.hidden = i !== idx;
					});
				}
			},
		);
	}
&lt;/script&gt;&lt;div data-nb-pm class=&quot;w-full&quot;&gt;&lt;div class=&quot;flex w-full flex-col overflow-hidden rounded-lg text-sm ring ring-border bg-card&quot;&gt;&lt;div class=&quot;flex items-center gap-2 px-3 py-2 text-[0.8125rem] font-medium leading-5 text-muted-foreground bg-[var(--nb-surface-sunken)]&quot; role=&quot;tablist&quot; aria-label=&quot;Package manager&quot;&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;true&quot; aria-controls=&quot;pm-panel-pm-b2c94ab7-e0b6-4ae2-8947-b8b14f24d438-npm&quot; id=&quot;pm-tab-pm-b2c94ab7-e0b6-4ae2-8947-b8b14f24d438-npm&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;npm&lt;/button&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;false&quot; aria-controls=&quot;pm-panel-pm-b2c94ab7-e0b6-4ae2-8947-b8b14f24d438-yarn&quot; id=&quot;pm-tab-pm-b2c94ab7-e0b6-4ae2-8947-b8b14f24d438-yarn&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;yarn&lt;/button&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;false&quot; aria-controls=&quot;pm-panel-pm-b2c94ab7-e0b6-4ae2-8947-b8b14f24d438-pnpm&quot; id=&quot;pm-tab-pm-b2c94ab7-e0b6-4ae2-8947-b8b14f24d438-pnpm&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;pnpm&lt;/button&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;false&quot; aria-controls=&quot;pm-panel-pm-b2c94ab7-e0b6-4ae2-8947-b8b14f24d438-bun&quot; id=&quot;pm-tab-pm-b2c94ab7-e0b6-4ae2-8947-b8b14f24d438-bun&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;bun&lt;/button&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-b2c94ab7-e0b6-4ae2-8947-b8b14f24d438-npm&quot; aria-labelledby=&quot;pm-tab-pm-b2c94ab7-e0b6-4ae2-8947-b8b14f24d438-npm&quot; data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;npm&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; install --global cf&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;npm install --global cf&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-b2c94ab7-e0b6-4ae2-8947-b8b14f24d438-yarn&quot; aria-labelledby=&quot;pm-tab-pm-b2c94ab7-e0b6-4ae2-8947-b8b14f24d438-yarn&quot; hidden data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;yarn&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; global add cf&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;yarn global add cf&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-b2c94ab7-e0b6-4ae2-8947-b8b14f24d438-pnpm&quot; aria-labelledby=&quot;pm-tab-pm-b2c94ab7-e0b6-4ae2-8947-b8b14f24d438-pnpm&quot; hidden data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;pnpm&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; add --global cf&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;pnpm add --global cf&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-b2c94ab7-e0b6-4ae2-8947-b8b14f24d438-bun&quot; aria-labelledby=&quot;pm-tab-pm-b2c94ab7-e0b6-4ae2-8947-b8b14f24d438-bun&quot; hidden data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;bun&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; add --global cf&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;bun add --global cf&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;nb-pm-restore style=&quot;display:contents&quot;&gt;&lt;/nb-pm-restore&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/package-managers/PackageManagerTabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;cf&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; auth&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; login&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;With &lt;code&gt;cf&lt;/code&gt;, you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Manage resources across Cloudflare.&lt;/strong&gt; More than 2,900 commands cover the public Cloudflare API, and most print their results as JSON.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Create and deploy Workers.&lt;/strong&gt; &lt;code&gt;cf init&lt;/code&gt; creates a project that uses &lt;a href=&quot;https://docs.infinitegaming.org/cf/projects/cloudflare-config/&quot;&gt;&lt;code&gt;cloudflare.config.ts&lt;/code&gt;&lt;/a&gt;, a typed configuration file. &lt;code&gt;cf dev&lt;/code&gt;, &lt;code&gt;cf build&lt;/code&gt;, and &lt;code&gt;cf deploy&lt;/code&gt; develop, build, and deploy it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Move from Wrangler.&lt;/strong&gt; &lt;code&gt;cf migrate&lt;/code&gt; converts a Wrangler configuration file to &lt;code&gt;cloudflare.config.ts&lt;/code&gt;. You can also run &lt;code&gt;cf&lt;/code&gt; resource commands in an existing Wrangler project without migrating it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Work with coding agents.&lt;/strong&gt; &lt;code&gt;cf cli search&lt;/code&gt; finds the command for a task from a plain-language description, so an agent can find and run commands without prior knowledge of &lt;code&gt;cf&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;cf&lt;/code&gt; is in beta. Commands, configuration, and Build Output can change before the stable release.&lt;/p&gt;
&lt;p&gt;To get started, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cf/get-started/&quot;&gt;Install and sign in&lt;/a&gt;. To move an existing project, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cf/wrangler/migrate/&quot;&gt;Migrate a Wrangler project&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category><category>Cloudflare CLI</category></item><item><title>Cloudflare Network Firewall, Magic Transit, Cloudflare WAN - Managed Rulesets supported in Unified Routing</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-25-unified-routing-managed-rulesets/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-25-unified-routing-managed-rulesets/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-network-firewall/&quot;&gt;Cloudflare Advanced Network Firewall&lt;/a&gt; Managed Rulesets are now supported for accounts using &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/reference/traffic-steering/#unified-routing&quot;&gt;Unified Routing&lt;/a&gt; mode.&lt;/p&gt;
&lt;p&gt;For the full list of feature availability, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/reference/traffic-steering/#check-feature-availability-before-upgrading&quot;&gt;Check feature availability before upgrading&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 25 Sep 2026 00:00:00 GMT</pubDate><product>Cloudflare Network Firewall</product><category>Cloudflare Network Firewall</category><category>Magic Transit</category><category>Cloudflare WAN</category></item><item><title>Workers - Workers tracing — new getActiveSpan(), recordException(), startSpan(), and setAttributes() APIs</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-25-custom-span-apis/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-25-custom-span-apis/</guid><description>
&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/traces/custom-spans/&quot;&gt;Custom spans&lt;/a&gt; in Workers now support more of the OpenTelemetry span API, so you can instrument more of your code and record errors directly on your spans.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;tracing.startSpan(name)&lt;/code&gt;&lt;/strong&gt; creates a span without making it the active span, and returns it. Other spans do not nest under it. Call &lt;code&gt;span.end()&lt;/code&gt; when the operation is complete.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;tracing.getActiveSpan()&lt;/code&gt;&lt;/strong&gt; returns the currently active span. Use it to annotate the current span from helper functions and libraries without passing the span object through your code. Outside any custom span, it returns the invocation&apos;s root span.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;span.recordException(exception)&lt;/code&gt;&lt;/strong&gt; records an exception event on a span. It accepts an &lt;code&gt;Error&lt;/code&gt;, a string, or an object with a &lt;code&gt;code&lt;/code&gt;, &lt;code&gt;name&lt;/code&gt;, or &lt;code&gt;message&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;span.setAttributes(attributes)&lt;/code&gt;&lt;/strong&gt; sets multiple attributes at once. &lt;code&gt;setAttribute()&lt;/code&gt; and &lt;code&gt;setAttributes()&lt;/code&gt; now return the span, so you can chain calls.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;js&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;src/index.js&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { tracing } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;cloudflare:workers&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; user&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; authenticate&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(request, env);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// Annotate the invocation&apos;s root span&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		tracing.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;getActiveSpan&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;()?.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;setAttributes&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;			&quot;user.id&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: user.id,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;			&quot;user.plan&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: user.plan,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; span&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; tracing.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;startSpan&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;load-profile&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		try&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; Response.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; loadProfile&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(env, user.id));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		} &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;catch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (err) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			span.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;recordException&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(err);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			throw&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; err;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		} &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;finally&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			span.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;src/index.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { tracing } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;cloudflare:workers&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Promise&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; user&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; authenticate&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(request, env);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// Annotate the invocation&apos;s root span&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		tracing.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;getActiveSpan&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;()?.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;setAttributes&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;			&quot;user.id&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: user.id,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;			&quot;user.plan&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: user.plan,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; span&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; tracing.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;startSpan&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;load-profile&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		try&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; Response.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; loadProfile&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(env, user.id));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		} &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;catch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (err) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			span.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;recordException&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(err &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;as&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Error&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			throw&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; err;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		} &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;finally&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			span.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;&lt;/div&gt;
&lt;p&gt;For more details, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/traces/custom-spans/&quot;&gt;custom spans documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 25 Sep 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - See every release and gradual deployment on Workers Metrics charts</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-25-release-flows-workers-metrics/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-25-release-flows-workers-metrics/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/metrics-and-analytics/&quot;&gt;Workers Metrics&lt;/a&gt; charts now show every release in the selected time range, including the full progression of &lt;a href=&quot;https://docs.infinitegaming.org/workers/versions-and-deployments/gradual-deployments/&quot;&gt;gradual deployments&lt;/a&gt;. This makes it easier to correlate changes in memory, CPU time, errors, or latency with the code that was serving traffic.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2400,height=1350,format=webp/_astro/2026-09-25-release-flow-memory-usage.C5rkO7VY.png&quot; alt=&quot;Memory usage chart showing a gradual deployment as a shaded rollout band&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2400&quot; height=&quot;1350&quot;&gt;
&lt;p&gt;A gradual deployment appears as a single rollout across the chart, with shading that increases as more traffic moves to the new version. Hover over a rollout to see the previous and new versions, the rollout duration, and the traffic percentage configured at each step.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2400,height=1350,format=webp/_astro/2026-09-25-release-flow-invocations.BvQMAKnw.png&quot; alt=&quot;Invocations chart showing traffic shifting from the previous version to the new version during a gradual deployment&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2400&quot; height=&quot;1350&quot;&gt;
&lt;p&gt;Use these annotations to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Find when a regression started&lt;/strong&gt; — See which traffic percentage was configured when errors, latency, CPU time, or wall time changed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compare rollout stages&lt;/strong&gt; — Check whether a metric changed as more traffic moved to the new version.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Confirm rollbacks&lt;/strong&gt; — Rollbacks appear as separate release events, so you can check whether metrics recovered after a rollback.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Direct deployments that send 100% of traffic to a single version still appear as individual markers. Nearby direct deployments are grouped to reduce visual clutter. Versions that are only uploaded, or only configured at 0%, do not appear on metrics charts.&lt;/p&gt;
&lt;p&gt;To view release annotations, open the &lt;strong&gt;Metrics&lt;/strong&gt; tab for your &lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/workers/services/view/:worker/production/metrics&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Worker&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 25 Sep 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Access, Cloudflare One - MCP server portals are now generally available</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-24-mcp-portals-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-24-mcp-portals-ga/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/&quot;&gt;MCP server portals&lt;/a&gt; are now generally available to all Cloudflare customers. A portal gives users one endpoint for approved Model Context Protocol (MCP) servers. Cloudflare Access logs tool, prompt, and resource activity.&lt;/p&gt;
&lt;p&gt;Since the open beta, MCP server portals have added:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/#route-portal-traffic-through-gateway&quot;&gt;Gateway routing&lt;/a&gt; for HTTP logging and data loss prevention (DLP) scanning&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/#code-mode-policies&quot;&gt;Code Mode policies&lt;/a&gt; that control how portals reduce tool definitions and token use&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/#configure-manual-oauth-credentials&quot;&gt;Static OAuth client credentials&lt;/a&gt; for providers that do not support Dynamic Client Registration&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/#manage-portal-sessions&quot;&gt;Session management&lt;/a&gt; for reconnecting servers and changing authorizations from the portal&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/#connect-with-a-service-token&quot;&gt;Service token authentication&lt;/a&gt; for autonomous agents and machine-to-machine access&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/logs/logpush/&quot;&gt;Logpush support&lt;/a&gt; for exporting portal activity to external storage or a security information and event management (SIEM) system&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To create a portal and connect an MCP client, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/&quot;&gt;MCP server portals&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category><category>Cloudflare One</category></item><item><title>Gateway, Cloudflare One - Traffic Destination selector in Gateway policies</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-23-traffic-destination-selector/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-23-traffic-destination-selector/</guid><description>&lt;p&gt;Gateway &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/&quot;&gt;HTTP&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/network-policies/&quot;&gt;Network&lt;/a&gt; policies now include a &lt;strong&gt;Traffic Destination&lt;/strong&gt; selector that identifies how traffic exits Cloudflare. This allows administrators to write policies that target specific off-ramp methods - for example, applying different rules to traffic destined for the public Internet compared to traffic routed through Cloudflare Tunnel or Cloudflare WAN.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;available-traffic-destination-values&quot;&gt;Available traffic destination values&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#available-traffic-destination-values&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;UI name&lt;/th&gt;
&lt;th&gt;API value&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Internet&lt;/td&gt;
&lt;td&gt;&lt;code&gt;internet&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Traffic to the public Internet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloudflare WAN&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cloudflare_wan&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Traffic through a &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-wan/&quot;&gt;Cloudflare WAN&lt;/a&gt; connection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloudflare Tunnel&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cloudflare_tunnel&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Traffic to a private origin through &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/&quot;&gt;Cloudflare Tunnel&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloudflare One Client&lt;/td&gt;
&lt;td&gt;&lt;code&gt;device_client&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Traffic to another device running the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/&quot;&gt;Cloudflare One Client&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mesh&lt;/td&gt;
&lt;td&gt;&lt;code&gt;mesh&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Traffic through a &lt;a href=&quot;https://docs.infinitegaming.org/mesh/&quot;&gt;Cloudflare Mesh&lt;/a&gt; node&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;The selector uses the &lt;code&gt;net.offramp.type&lt;/code&gt; API field in both HTTP and Network policies.&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;UI name&lt;/th&gt;
&lt;th&gt;API example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Traffic Destination&lt;/td&gt;
&lt;td&gt;&lt;code&gt;net.offramp.type == &quot;internet&quot;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/&quot;&gt;HTTP policies&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/network-policies/&quot;&gt;Network policies&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category><category>Cloudflare One</category></item><item><title>Cloudflare Images - View transformation analytics in Images</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-23-transformation-analytics/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-23-transformation-analytics/</guid><description>&lt;p&gt;You can now view account-level analytics for your Images transformation usage.&lt;/p&gt;
&lt;p&gt;Go to &lt;strong&gt;Images &amp;amp; Stream&lt;/strong&gt; &amp;gt; &lt;strong&gt;Transformations&lt;/strong&gt; &amp;gt; &lt;strong&gt;Analytics&lt;/strong&gt; to view sampled estimates of image transformation request traffic, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requests by source, split between URL-based transformations and Images binding transformations&lt;/li&gt;
&lt;li&gt;Top zones, transformation configurations, and origin hosts for URL-based requests&lt;/li&gt;
&lt;li&gt;Top Worker scripts for Images binding requests&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Use these analytics to identify the zones, configurations, origins, and Workers generating the most image transformation requests.&lt;/p&gt;</description><pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate><product>Cloudflare Images</product><category>Cloudflare Images</category></item><item><title>Cloudflare One, Cloudflare Mesh - Add Mesh participants with guided onboarding</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-23-mesh-participant-onboarding/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-23-mesh-participant-onboarding/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/mesh/&quot;&gt;Cloudflare Mesh&lt;/a&gt; now makes it faster to add and manage participants from the dashboard. Select &lt;strong&gt;Add participant&lt;/strong&gt; from &lt;strong&gt;Networking&lt;/strong&gt; &amp;gt; &lt;strong&gt;Mesh&lt;/strong&gt; to deploy a &lt;a href=&quot;https://docs.infinitegaming.org/mesh/get-started/&quot;&gt;Mesh node&lt;/a&gt; or find the information needed to connect a &lt;a href=&quot;https://docs.infinitegaming.org/mesh/guides/connect-client-devices/&quot;&gt;client device&lt;/a&gt;.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1200,height=680,format=webp/_astro/guided-participant-onboarding-clicks.B0r-5ElX.gif&quot; alt=&quot;Adding a Cloudflare Mesh node through the guided dashboard workflow&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1200&quot; height=&quot;680&quot;&gt;
&lt;p&gt;The updated dashboard includes the following improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;More Mesh node deployment options&lt;/strong&gt; — Install a node on Linux, Kubernetes, Docker Compose, or Docker CLI. The dashboard provides requirements, commands, configuration, and links for each method. Refer to &lt;a href=&quot;https://docs.infinitegaming.org/mesh/guides/run-mesh-in-containers/&quot;&gt;Run Mesh in Docker / Kubernetes&lt;/a&gt; for container deployment details.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Client device installation guidance&lt;/strong&gt; — Access platform-specific &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/&quot;&gt;Cloudflare One Client&lt;/a&gt; installers, mobile QR codes, and your Cloudflare One organization name. Use the organization name to log in from the client after installation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unified participant management&lt;/strong&gt; — View &lt;a href=&quot;https://docs.infinitegaming.org/mesh/guides/connect-client-devices/#1-enroll-the-cloudflare-one-client&quot;&gt;Mesh nodes and enrolled client devices&lt;/a&gt; in one table. Search devices, filter participants by type or status, open device details, and load additional results from each participant source. If one source fails, participants from the other source remain available while you retry the request.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You must still install the Cloudflare One Client, log in to your organization, and test the connection.&lt;/p&gt;
&lt;p&gt;For complete setup instructions, refer to &lt;a href=&quot;https://docs.infinitegaming.org/mesh/get-started/&quot;&gt;Get started with Cloudflare Mesh&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category><category>Cloudflare Mesh</category></item><item><title>Access - Automatically manage inactive Access service tokens</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-22-service-token-inactivity-cleanup/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-22-service-token-inactivity-cleanup/</guid><description>&lt;p&gt;Cloudflare Access administrators can now automatically disable or delete inactive service tokens. Administrators can set an inactivity period from 30 to 365 days and choose what Access does when a token reaches that limit.&lt;/p&gt;
&lt;p&gt;To be eligible for cleanup, a token must be older than the configured period, must not have successfully authenticated during that period, and must not be directly referenced by an Access policy rule. Cleanup runs gradually in the background, so eligible tokens may not be disabled or deleted immediately.&lt;/p&gt;
&lt;p&gt;For configuration instructions, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/service-credentials/service-tokens/#manage-inactive-service-tokens&quot;&gt;Manage inactive service tokens&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Cloudflare One, Access - Private MCP server support for MCP server portals</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-22-private-mcp-servers/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-22-private-mcp-servers/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/&quot;&gt;MCP server portals&lt;/a&gt; can now connect to MCP servers available only on your private network. The portal uses &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/&quot;&gt;Cloudflare Gateway&lt;/a&gt; to reach &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/cloudflared/connect-private-hostname/&quot;&gt;private hostnames&lt;/a&gt; and IP addresses without exposing the MCP server to the public Internet.&lt;/p&gt;
&lt;p&gt;Connect the server network to Cloudflare with &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/&quot;&gt;Cloudflare Tunnel&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-mesh/&quot;&gt;Cloudflare Mesh&lt;/a&gt;, or another &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/&quot;&gt;Cloudflare One connector&lt;/a&gt;. Configure a private hostname or CIDR route, then turn on &lt;strong&gt;Route traffic through Cloudflare Gateway&lt;/strong&gt; when you add the server. OAuth authorization server endpoints, such as the authorization and token endpoints, must be accessible on the public Internet. If Cloudflare automatically registers the OAuth client through Dynamic Client Registration (DCR), the registration endpoint must also be accessible on the public Internet.&lt;/p&gt;
&lt;p&gt;For setup instructions, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/#connect-a-private-mcp-server&quot;&gt;Connect a private MCP server&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category><category>Access</category></item><item><title>Workers - Workers Builds now supports Cursor Origin</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-22-cursor-origin-workers-builds/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-22-cursor-origin-workers-builds/</guid><description>&lt;p&gt;Workers Builds now supports repositories hosted in Cursor Origin. Connect a Cursor Origin repository to automatically build and deploy production changes, preview non-production branches, and see build status in pull requests.&lt;/p&gt;
&lt;p&gt;Pushes to your production branch automatically build and deploy your Worker. When you enable &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/build-branches/#configure-non-production-branch-builds&quot;&gt;non-production branch builds&lt;/a&gt;, each branch receives a version-specific preview URL and a stable preview URL that follows the latest build.&lt;/p&gt;
&lt;p&gt;Cloudflare posts build status and preview links to the Cursor Origin pull request and creates a check run for each triggered build.&lt;/p&gt;
&lt;p&gt;To get started, install the &lt;a href=&quot;https://cursor.com/codebase/settings/apps/public/cloudflare&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare app in Cursor&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, choose the Cursor Origin repositories Cloudflare can access, and follow the prompts to configure your Worker build. For details, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/git-integration/cursor-origin-integration/&quot;&gt;Cursor Origin integration&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Test every pull request in an isolated environment with Worker Previews</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-22-worker-previews/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-22-worker-previews/</guid><description>&lt;p&gt;You can now test every change you make in an isolated, production-like environment with &lt;a href=&quot;https://blog.cloudflare.com/worker-previews/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Worker Previews&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. &lt;a href=&quot;https://docs.infinitegaming.org/workers/previews/&quot;&gt;Each Preview&lt;/a&gt; runs under the same Worker with its own code, configuration, URL, and observability, isolated from production and every other Preview.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;configure-each-preview&quot;&gt;Configure each Preview&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#configure-each-preview&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Define the variables, bindings, and settings that new Previews start with in the &lt;a href=&quot;https://docs.infinitegaming.org/workers/previews/configuration/&quot;&gt;&lt;code&gt;previews&lt;/code&gt; block of your Wrangler configuration file&lt;/a&gt;. Set secrets with Wrangler commands. You can override one Preview without changing production or other Previews.&lt;/p&gt;
&lt;p&gt;For &lt;a href=&quot;https://docs.infinitegaming.org/workers/previews/resources/#durable-objects&quot;&gt;Durable Objects&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/workers/previews/resources/#containers&quot;&gt;Containers&lt;/a&gt;, Cloudflare automatically provisions separate namespaces, storage, apps, and instances for every Preview. State changes, sessions, memory, migrations, and concurrent tests remain scoped to that Preview. To isolate KV, D1, R2, or another account-level resource, &lt;a href=&quot;https://docs.infinitegaming.org/workers/previews/resources/&quot;&gt;bind the Preview to a separate resource&lt;/a&gt;.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1999,height=1370,format=webp/_astro/preview-resource-isolation.CyeUXRJS.png&quot; alt=&quot;Diagram comparing production with three Previews, each with its own URL, code, configuration, and Durable Object state&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1999&quot; height=&quot;1370&quot;&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;deploy-and-share-every-change&quot;&gt;Deploy and share every change&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#deploy-and-share-every-change&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Use Wrangler 4.135.0 or later to &lt;a href=&quot;https://docs.infinitegaming.org/workers/previews/get-started/&quot;&gt;deploy a Preview&lt;/a&gt;:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;npx&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; preview&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Or &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/build-branches/#configure-preview-builds&quot;&gt;connect your repository to Workers Builds&lt;/a&gt; to create Previews automatically and post their URLs to pull requests.&lt;/p&gt;
&lt;p&gt;Each Preview gets a &lt;a href=&quot;https://docs.infinitegaming.org/workers/previews/#urls&quot;&gt;stable URL&lt;/a&gt; that updates with every push, so reviewers always see the latest changes. Each deployment also gets an immutable URL, so you can compare or return to an exact version.&lt;/p&gt;
&lt;p&gt;After you create a Preview, use the environment breadcrumb next to your Worker&apos;s name to switch between Production and every Preview:&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2386,height=1304,format=webp/_astro/previews-dash-overview.BL1UHZHT.png&quot; alt=&quot;Worker dashboard showing the Preview dropdown and an overview of bindings, metrics, and deployments&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2386&quot; height=&quot;1304&quot;&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;inspect-and-revise-before-production&quot;&gt;Inspect and revise before production&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#inspect-and-revise-before-production&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Each Preview has its own &lt;a href=&quot;https://docs.infinitegaming.org/workers/previews/test-and-debug/&quot;&gt;logs, errors, metrics, and traces&lt;/a&gt;. Send traffic to its URL, inspect what happened, push a fix, and verify the next deployment before production.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1418,height=1236,format=webp/_astro/preview-observability.COYT0y5H.png&quot; alt=&quot;Preview Observability tab showing success and error events for a pull request&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1418&quot; height=&quot;1236&quot;&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;use-production-like-hostnames&quot;&gt;Use production-like hostnames&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#use-production-like-hostnames&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Serve Preview URLs on &lt;code&gt;workers.dev&lt;/code&gt;, a &lt;a href=&quot;https://docs.infinitegaming.org/workers/previews/custom-domains/&quot;&gt;custom domain&lt;/a&gt;, or both. Custom domains let authentication providers, cookies, cross-origin resource sharing (CORS), and OAuth redirects work as they will in production. You can also protect Preview URLs with Cloudflare Access.&lt;/p&gt;
&lt;p&gt;Configure a domain for Preview traffic from the Worker&apos;s &lt;strong&gt;Domains&lt;/strong&gt; tab:&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2876,height=1454,format=webp/_astro/customdomainonly.8AG_6tc-.png&quot; alt=&quot;Domains tab showing a custom domain configured for Preview traffic&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2876&quot; height=&quot;1454&quot;&gt;
&lt;p&gt;For setup instructions and current limitations, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/workers/previews/&quot;&gt;Worker Previews documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare One Client - Cloudflare One Client for macOS (version 2026.8.1755.1)</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-21-warp-macos-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-21-warp-macos-beta/</guid><description>&lt;p&gt;A new Beta release for the macOS Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/beta-releases/&quot;&gt;beta releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This beta release includes the following changes and improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an issue that could briefly block traffic to split tunnel excluded resources while the client was connecting or reconnecting.&lt;/li&gt;
&lt;li&gt;Improved reauthentication reliability and fixed an issue where a reauthentication could force a new registration.&lt;/li&gt;
&lt;li&gt;Improved client reaction to the current network lowering its MTU.&lt;/li&gt;
&lt;li&gt;Added support for routing non-RFC 1918 local IPv4 networks through the WARP tunnel when unrestricted LAN inclusion is enabled by policy or MDM.&lt;/li&gt;
&lt;li&gt;Improved DNS reliability on networks with lower MTUs by clamping the TCP maximum segment size (MSS) for DNS-over-HTTPS connections sent through the tunnel.&lt;/li&gt;
&lt;li&gt;Improved API reliability by retrying requests dropped when reusing pooled connections.&lt;/li&gt;
&lt;li&gt;Fixed Extra Logging failing to capture packets across all interfaces.&lt;/li&gt;
&lt;li&gt;Fixed an issue that could prevent remote diagnostics from completing.&lt;/li&gt;
&lt;li&gt;Fixed DNS connectivity checks failing on IPv6-only networks.&lt;/li&gt;
&lt;li&gt;Fixed the client service exiting when its route-monitoring socket was closed after sleep or wake.&lt;/li&gt;
&lt;li&gt;Fixed DNS enforcement checks making the client service unresponsive on systems with large routing tables.&lt;/li&gt;
&lt;li&gt;Fixed slow captive portal checks causing the client service to become unresponsive or restart while connecting.&lt;/li&gt;
&lt;li&gt;Fixed a race when switching tunnel protocols during key rotation that could prevent WireGuard from connecting.&lt;/li&gt;
&lt;li&gt;Fixed the client continuing to report &apos;No network&apos; after a successful manual disconnect.&lt;/li&gt;
&lt;li&gt;Fixed a client UI crash that could occur when the daemon connection was reset during an IPC request.&lt;/li&gt;
&lt;li&gt;Fixed a startup crash when date formatting data for the system locale had not yet loaded.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;None&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Mon, 21 Sep 2026 18:14:56 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Windows (version 2026.8.1755.1)</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-21-warp-windows-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-21-warp-windows-beta/</guid><description>&lt;p&gt;A new Beta release for the Windows Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/beta-releases/&quot;&gt;beta releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This beta release includes the following changes and improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an issue that could briefly block traffic to split tunnel excluded resources while the client was connecting or reconnecting.&lt;/li&gt;
&lt;li&gt;Improved reauthentication reliability and fixed an issue where a reauthentication could force a new registration.&lt;/li&gt;
&lt;li&gt;Improved client reaction to the current network lowering its MTU.&lt;/li&gt;
&lt;li&gt;Added support for routing non-RFC 1918 local IPv4 networks through the WARP tunnel when unrestricted LAN inclusion is enabled by policy or MDM.&lt;/li&gt;
&lt;li&gt;Improved DNS reliability on networks with lower MTUs by clamping the TCP maximum segment size (MSS) for DNS-over-HTTPS connections sent through the tunnel.&lt;/li&gt;
&lt;li&gt;Improved API reliability by retrying requests dropped when reusing pooled connections.&lt;/li&gt;
&lt;li&gt;The client no longer requires the Windows WLAN AutoConfig service to be running.&lt;/li&gt;
&lt;li&gt;Implemented a service recovery mechanism backed by Windows scheduler task to start WARP service on system unlock if not already started.&lt;/li&gt;
&lt;li&gt;Fixed slow captive portal checks causing the client service to become unresponsive or restart while connecting.&lt;/li&gt;
&lt;li&gt;Fixed a race when switching tunnel protocols during key rotation that could prevent WireGuard from connecting.&lt;/li&gt;
&lt;li&gt;Fixed the client continuing to report &apos;No network&apos; after a successful manual disconnect.&lt;/li&gt;
&lt;li&gt;Fixed Digital Experience Monitoring (DEX) HTTP tests failing TLS validation on Windows.&lt;/li&gt;
&lt;li&gt;Fixed the client UI crashing at startup when it could not write to the Windows registry.&lt;/li&gt;
&lt;li&gt;Fixed latency spikes and traffic interruptions during TPM-backed API authentication when hardware-backed registration is enabled.&lt;/li&gt;
&lt;li&gt;Fixed trailing whitespace in BIOS serial numbers causing serial-number and client-certificate device posture checks to fail.&lt;/li&gt;
&lt;li&gt;Fixed a client UI crash that could occur when the daemon connection was reset during an IPC request.&lt;/li&gt;
&lt;li&gt;Fixed a startup crash when date formatting data for the system locale had not yet loaded.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;None&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Mon, 21 Sep 2026 18:14:46 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Workers - Give teammates access to specific Workers directly from the dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-21-invite-members-to-workers/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-21-invite-members-to-workers/</guid><description>&lt;p&gt;You can now grant teammates scoped access to specific Workers directly from the Workers dashboard.&lt;/p&gt;
&lt;p&gt;Go to your Worker and click &lt;strong&gt;Invite&lt;/strong&gt;.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2366,height=1134,format=webp/_astro/invite-button.BtZmWRrA.png&quot; alt=&quot;Invite button on a Worker&apos;s overview page&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2366&quot; height=&quot;1134&quot;&gt;
&lt;p&gt;Enter the teammate&apos;s email address, choose the appropriate access level, and click &lt;strong&gt;Invite&lt;/strong&gt;.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=748,height=724,format=webp/_astro/invite-dialog.Bo5P-iat.png&quot; alt=&quot;Dialog for inviting a teammate and choosing their access level&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;748&quot; height=&quot;724&quot;&gt;
&lt;p&gt;You can grant a user one of the following access levels:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Metadata Read-Only&lt;/strong&gt;: View settings, metrics, logs, and traces without access to Worker code or the ability to make changes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Content Read-Only&lt;/strong&gt;: Read Worker code, settings, and observability data without the ability to modify or deploy changes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Editor&lt;/strong&gt;: Update and deploy a Worker without the ability to delete it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Admin&lt;/strong&gt;: Everything included with Editor, plus the ability to delete the Worker.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the teammate is already an account member, they will receive access to the Worker immediately. If they are not an account member, Cloudflare will send them an invitation to join the account, and they will receive access to the Worker after accepting the invitation.&lt;/p&gt;
&lt;p&gt;Only account members with the Super Administrator role can invite users from a Worker&apos;s dashboard.&lt;/p&gt;
&lt;p&gt;For details about available roles and scopes, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/workers/authorization/workers/&quot;&gt;Workers roles and permissions documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 21 Sep 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare WAN, Magic Transit, Cloudflare One - Unified Routing generally available</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-18-unified-routing-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-18-unified-routing-ga/</guid><description>&lt;p&gt;Unified Routing is generally available for Cloudflare WAN and Magic Transit.&lt;/p&gt;
&lt;p&gt;Unified Routing improves the integration between Cloudflare One and the standard connectivity onramps supported by Cloudflare WAN. It is capable of many new features including Automatic Return Routing, BGP and custom client subnets.&lt;/p&gt;
&lt;p&gt;We recommend Unified Routing for all new accounts.&lt;/p&gt;
&lt;p&gt;For details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/reference/traffic-steering/#unified-routing&quot;&gt;Cloudflare WAN traffic steering&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/magic-transit/reference/traffic-steering/#unified-routing&quot;&gt;Magic Transit traffic steering&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate><product>Cloudflare WAN</product><category>Cloudflare WAN</category><category>Magic Transit</category><category>Cloudflare One</category></item><item><title>Cloudflare Tunnel, Cloudflare Tunnel for SASE - cloudflared to deprecate 32-bit Windows and Intel-based macOS builds in 2027</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-18-cloudflared-architecture-deprecation/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-18-cloudflared-architecture-deprecation/</guid><description>&lt;p&gt;Starting in 2027, Cloudflare will deprecate 32-bit Windows and Intel-based macOS builds of &lt;code&gt;cloudflared&lt;/code&gt;. After the deprecation takes effect, Cloudflare will no longer publish new &lt;code&gt;cloudflared&lt;/code&gt; releases for either architecture.&lt;/p&gt;
&lt;p&gt;Windows 10, the last Windows release to support 32-bit systems, reached end of support in October 2025. Apple has also deprecated Intel-based Mac computers. macOS 26 Tahoe, released in September 2025, was the final macOS release to support Intel-based Macs. macOS 27, released in September 2026, no longer supports them.&lt;/p&gt;
&lt;p&gt;Focusing development on currently supported architectures allows &lt;code&gt;cloudflared&lt;/code&gt; to align with operating system support and continue receiving updates on supported platforms. For available downloads and supported platforms, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/tunnel/downloads/&quot;&gt;Cloudflare Tunnel downloads&lt;/a&gt; documentation.&lt;/p&gt;</description><pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate><product>Cloudflare Tunnel</product><category>Cloudflare Tunnel</category><category>Cloudflare Tunnel for SASE</category></item><item><title>Workers, Durable Objects - Workers traces now automatically include JavaScript RPC session spans</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-17-javascript-rpc-session-spans/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-17-javascript-rpc-session-spans/</guid><description>
&lt;p&gt;Workers traces can now follow JavaScript RPC calls across Worker boundaries and into Durable Objects. Previously, a trace stopped at the caller&apos;s RPC boundary. The dashboard now shows the caller-side session and method calls alongside the callee invocation, nested calls, and callbacks into another Worker.&lt;/p&gt;
&lt;p&gt;A session span covers the lifetime of a caller-side session and groups calls that reuse it. Individual call spans show each method invocation. Execution colors distinguish the Workers or Durable Object entrypoints involved, while arrows mark outgoing and incoming calls. Together, these details show where time was spent, which calls reused a session, and how returned stubs and callbacks fit into the request.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2878,height=1576,format=webp/_astro/jsrpc-session-spans.DQuwQrpm.png&quot; alt=&quot;A Workers trace of a Worker-to-Worker RPC session, showing the session span, the caller&apos;s getCounter and increment call spans, and the callee&apos;s invocation and matching call spans&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2878&quot; height=&quot;1576&quot;&gt;
&lt;p&gt;Enable tracing with one setting in your &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/configuration/#observability&quot;&gt;Wrangler configuration file&lt;/a&gt;:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;$schema&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./node_modules/wrangler/config-schema.json&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;observability&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;    &quot;traces&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;      &quot;enabled&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;observability&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;traces&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;enabled = &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;Cloudflare records these spans automatically. You do not need to change your application code or add an observability SDK.&lt;/p&gt;
&lt;p&gt;For supported spans and attributes, refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/traces/spans-and-attributes/&quot;&gt;Spans and attributes&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category><category>Durable Objects</category></item><item><title>Cloudflare One, Access - Access for Infrastructure now supports tagged targets and tag-based target criteria</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-15-infrastructure-target-tags/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-15-infrastructure-target-tags/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/non-http/infrastructure-apps/&quot;&gt;Access for Infrastructure&lt;/a&gt; now integrates with &lt;a href=&quot;https://docs.infinitegaming.org/resource-tagging/&quot;&gt;Resource Tagging&lt;/a&gt;. You can attach key-value tags to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/non-http/infrastructure-apps/#1-add-a-target&quot;&gt;infrastructure targets&lt;/a&gt; and use them in access policies.&lt;/p&gt;
&lt;p&gt;You can manage tags on targets inline when you create or edit a target or through the central &lt;a href=&quot;https://docs.infinitegaming.org/resource-tagging/how-to/manage-tags/&quot;&gt;Resource Tagging API&lt;/a&gt;. Cloudflare keeps tags in sync across both methods.&lt;/p&gt;
&lt;p&gt;Infrastructure applications also support a target criteria model with &lt;code&gt;include&lt;/code&gt;, &lt;code&gt;require&lt;/code&gt;, and &lt;code&gt;exclude&lt;/code&gt; operators. Each operator can match targets by hostname, tag, or both.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Include&lt;/strong&gt; matches targets that have any of the specified values.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Require&lt;/strong&gt; matches targets that have all of the specified values.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exclude&lt;/strong&gt; rejects targets that have any of the specified values.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2372,height=1616,format=webp/_astro/tags-in-infra-app.ja2Tp-Gq.png&quot; alt=&quot;Infrastructure application builder showing target criteria with an included tag, port 22, and SSH as the selected protocol&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2372&quot; height=&quot;1616&quot;&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/non-http/infrastructure-apps/&quot;&gt;Add an infrastructure application&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category><category>Access</category></item><item><title>Workers - Grant teammates and agents access to specific Workers</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-15-granular-worker-permissions/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-15-granular-worker-permissions/</guid><description>&lt;p&gt;You can now grant access to specific Workers and choose from four roles to control the level of access you give teammates, agents, and CI/CD workflows.&lt;/p&gt;
&lt;p&gt;Choose from four roles to control the level of access:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Metadata Read-Only&lt;/strong&gt;: View settings, metrics, logs, and traces without access to Worker code or the ability to make changes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Content Read-Only&lt;/strong&gt;: Read Worker code, settings, and observability data without the ability to modify or deploy changes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Editor&lt;/strong&gt;: Update and deploy a Worker without the ability to delete it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Admin&lt;/strong&gt;: Everything in Editor, plus the ability to delete the Worker.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1752,height=888,format=webp/_astro/individual-worker-permission-roles.Cn5i9cW0.png&quot; alt=&quot;Permission policy form showing four roles scoped to an individual Worker&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1752&quot; height=&quot;888&quot;&gt;
&lt;p&gt;Worker-level access controls are available today for all customers. You can configure them in the Cloudflare dashboard, through the API, or with Terraform.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;roles-designed-for-how-teams-build&quot;&gt;Roles designed for how teams build&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#roles-designed-for-how-teams-build&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Give &lt;strong&gt;Metadata Read-Only&lt;/strong&gt; to a debugging agent so it can inspect settings and observability data without seeing Worker code. Give &lt;strong&gt;Content Read-Only&lt;/strong&gt; to a code review agent so it can read code without changing it. Give &lt;strong&gt;Editor&lt;/strong&gt; to a CI/CD workflow so it can deploy without deleting the Worker or accessing other Workers. &lt;strong&gt;Admin&lt;/strong&gt; gives a teammate or agent full control over the Worker, including the ability to delete it.&lt;/p&gt;
&lt;p&gt;Apply these roles across all Developer Platform products, across all Workers, or to an individual Worker.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;durable-objects&quot;&gt;Durable Objects&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#durable-objects&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;You can use granular permissions to control access to Durable Objects. Durable Objects do not have their own roles or scopes. Instead, they inherit the permissions assigned to the Worker that implements them.&lt;/p&gt;
&lt;p&gt;Learn more about granular permissions in the &lt;a href=&quot;https://docs.infinitegaming.org/workers/authorization/durable-objects/&quot;&gt;Durable Objects documentation&lt;/a&gt;.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;grant-access-to-members-and-user-groups&quot;&gt;Grant access to members and User Groups&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#grant-access-to-members-and-user-groups&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;In the Cloudflare dashboard, go to &lt;strong&gt;Manage Account&lt;/strong&gt; &amp;gt; &lt;strong&gt;Members&lt;/strong&gt; and select a &lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/manage-members/manage/&quot;&gt;member&lt;/a&gt;. Create a &lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/manage-members/policies/&quot;&gt;permission policy&lt;/a&gt;, set the scope to &lt;strong&gt;Individual Workers&lt;/strong&gt;, select the Workers they need, and choose a role to grant the right level of access.&lt;/p&gt;
&lt;p&gt;If several people on the same team or project need the same access, assign the permission policy to a &lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/manage-members/user-groups/&quot;&gt;User Group&lt;/a&gt; instead of each member individually. Everyone added to the group automatically inherits the policy.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;create-a-scoped-api-token&quot;&gt;Create a scoped API token&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#create-a-scoped-api-token&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;For an agent or CI/CD workflow, go to &lt;strong&gt;Manage Account&lt;/strong&gt; &amp;gt; &lt;strong&gt;Account API Tokens&lt;/strong&gt; and create an &lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/api/get-started/account-owned-tokens/&quot;&gt;account-owned API token&lt;/a&gt;. Set the scope to &lt;strong&gt;Specified Workers&lt;/strong&gt;, select the Workers the token can access, and choose a role to grant the right level of access.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1778,height=652,format=webp/_astro/scoped-worker-api-token-permissions.DR6OL7W0.png&quot; alt=&quot;Account API token policy with Metadata Read-Only access scoped to a specific Worker&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1778&quot; height=&quot;652&quot;&gt;
&lt;p&gt;For more information, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/workers/authorization/workers/&quot;&gt;Workers roles and permissions documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Access - Require fresh authentication for SAML identity providers</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-14-saml-force-authentication/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-14-saml-force-authentication/</guid><description>&lt;p&gt;Cloudflare Access can now request fresh authentication from a SAML identity provider for every login. Turn on &lt;strong&gt;Require reauthentication&lt;/strong&gt; in the Cloudflare dashboard, or set &lt;code&gt;force_authn&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt; through the API. Access will then set &lt;code&gt;ForceAuthn&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt; in signed and unsigned SAML authentication requests.&lt;/p&gt;
&lt;p&gt;This option is useful when an application requires users to reauthenticate at the identity provider instead of relying on an existing identity provider session. The default value is &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For configuration details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/identity-providers/generic-saml/#require-fresh-authentication-at-the-identity-provider&quot;&gt;Require fresh authentication at the identity provider&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Data Loss Prevention - Discover where sensitive data goes before you create a Data Loss Prevention policy</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-14-passive-detection/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-14-passive-detection/</guid><description>&lt;p&gt;&lt;strong&gt;Passive Detection&lt;/strong&gt; for &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/&quot;&gt;Cloudflare Data Loss Prevention (DLP)&lt;/a&gt; lets you learn from your Gateway traffic before deciding what to log or block. Discover the sensitive data types in sampled traffic, explore their destinations, and use the findings to build policies around your organization&apos;s needs.&lt;/p&gt;
&lt;p&gt;The dashboard brings together detections from sampled HTTP request and response bodies. Select an entry to follow its detections over time, review destinations, and check policy coverage. You do not need a Gateway DLP policy to get these insights, and existing Gateway policies continue to apply.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1200,height=593,format=webp/_astro/passive-detection.B_-_POtg.gif&quot; alt=&quot;Passive Detection dashboard showing detection totals, data type distribution, policy coverage, and detection entries&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1200&quot; height=&quot;593&quot;&gt;
&lt;p&gt;Passive Detection is generally available. The detection entries available to your account depend on your &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/dlp-profiles/predefined-profiles/&quot;&gt;Zero Trust plan&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To get started, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/passive-detection/&quot;&gt;Passive Detection documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate><product>Data Loss Prevention</product><category>Data Loss Prevention</category></item><item><title>Cloudflare One Client - Cloudflare One Client for macOS (version 2026.8.1290.1)</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-09-warp-macos-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-09-warp-macos-beta/</guid><description>&lt;p&gt;A new Beta release for the macOS Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/beta-releases/&quot;&gt;beta releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This beta release includes the following changes and improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added support for routing non-RFC 1918 local IPv4 networks through the WARP tunnel when unrestricted LAN inclusion is enabled by policy or MDM.&lt;/li&gt;
&lt;li&gt;Improved DNS reliability on networks with lower MTUs by clamping the TCP maximum segment size (MSS) for DNS-over-HTTPS connections sent through the tunnel.&lt;/li&gt;
&lt;li&gt;Improved API reliability by retrying requests dropped when reusing pooled connections.&lt;/li&gt;
&lt;li&gt;Fixed Extra Logging failing to capture packets across all interfaces.&lt;/li&gt;
&lt;li&gt;Fixed an issue that could prevent remote diagnostics from completing.&lt;/li&gt;
&lt;li&gt;Fixed DNS connectivity checks failing on IPv6-only networks.&lt;/li&gt;
&lt;li&gt;Fixed the client service exiting when its route-monitoring socket was closed after sleep or wake.&lt;/li&gt;
&lt;li&gt;Fixed DNS enforcement checks making the client service unresponsive on systems with large routing tables.&lt;/li&gt;
&lt;li&gt;Fixed slow captive portal checks causing the client service to become unresponsive or restart while connecting.&lt;/li&gt;
&lt;li&gt;Fixed a race when switching tunnel protocols during key rotation that could prevent WireGuard from connecting.&lt;/li&gt;
&lt;li&gt;Fixed the client continuing to report &apos;No network&apos; after a successful manual disconnect.&lt;/li&gt;
&lt;li&gt;Fixed a client UI crash that could occur when the daemon connection was reset during an IPC request.&lt;/li&gt;
&lt;li&gt;Fixed a startup crash when date formatting data for the system locale had not yet loaded.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;None&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Wed, 09 Sep 2026 18:10:27 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Windows (version 2026.8.1290.1)</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-09-warp-windows-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-09-warp-windows-beta/</guid><description>&lt;p&gt;A new Beta release for the Windows Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/beta-releases/&quot;&gt;beta releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This beta release includes the following changes and improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added support for routing non-RFC 1918 local IPv4 networks through the WARP tunnel when unrestricted LAN inclusion is enabled by policy or MDM.&lt;/li&gt;
&lt;li&gt;Improved DNS reliability on networks with lower MTUs by clamping the TCP maximum segment size (MSS) for DNS-over-HTTPS connections sent through the tunnel.&lt;/li&gt;
&lt;li&gt;Improved API reliability by retrying requests dropped when reusing pooled connections.&lt;/li&gt;
&lt;li&gt;The client no longer requires the Windows WLAN AutoConfig service to be running.&lt;/li&gt;
&lt;li&gt;Implemented a service recovery mechanism backed by Windows scheduler task to start WARP service on system unlock if not already started.&lt;/li&gt;
&lt;li&gt;Fixed slow captive portal checks causing the client service to become unresponsive or restart while connecting.&lt;/li&gt;
&lt;li&gt;Fixed a race when switching tunnel protocols during key rotation that could prevent WireGuard from connecting.&lt;/li&gt;
&lt;li&gt;Fixed the client continuing to report &apos;No network&apos; after a successful manual disconnect.&lt;/li&gt;
&lt;li&gt;Fixed Digital Experience Monitoring (DEX) HTTP tests failing TLS validation on Windows.&lt;/li&gt;
&lt;li&gt;Fixed the client UI crashing at startup when it could not write to the Windows registry.&lt;/li&gt;
&lt;li&gt;Fixed latency spikes and traffic interruptions during TPM-backed API authentication when hardware-backed registration is enabled.&lt;/li&gt;
&lt;li&gt;Fixed trailing whitespace in BIOS serial numbers causing serial-number and client-certificate device posture checks to fail.&lt;/li&gt;
&lt;li&gt;Fixed a client UI crash that could occur when the daemon connection was reset during an IPC request.&lt;/li&gt;
&lt;li&gt;Fixed a startup crash when date formatting data for the system locale had not yet loaded.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;None&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Wed, 09 Sep 2026 18:10:26 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Browser Isolation, Cloudflare One - Improved iOS tap-to-type experience for Browser Isolation</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-09-ios-tap-to-type/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-09-ios-tap-to-type/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/remote-browser-isolation/&quot;&gt;Browser Isolation&lt;/a&gt; has improved the tap-to-type experience for users on iOS devices.&lt;/p&gt;
&lt;p&gt;Previously, Browser Isolation displayed a full-screen overlay with the message &lt;code&gt;tap to type&lt;/code&gt; when users focused a text field. The prompt now appears inline over the focused text field, reducing disruption when users enter text in isolated sessions.&lt;/p&gt;
&lt;p&gt;If the focused text field is too small to display the full prompt, Browser Isolation displays a keyboard icon in the center of the text field instead.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1320,height=605,format=webp/_astro/tap-to-type.UmUg_KNp.jpg&quot; alt=&quot;Inline tap-to-type prompt over a focused text field in Browser Isolation&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1320&quot; height=&quot;605&quot;&gt;
&lt;p&gt;iOS users should tap twice to begin entering text. This update applies automatically to Browser Isolation sessions on iOS.&lt;/p&gt;
&lt;p&gt;For more information on why this interaction is required, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/remote-browser-isolation/known-limitations/#ios&quot;&gt;iOS limitations&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 09 Sep 2026 00:00:00 GMT</pubDate><product>Browser Isolation</product><category>Browser Isolation</category><category>Cloudflare One</category></item><item><title>CASB - New CASB integration for Zoom</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-09-casb-zoom-integration/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-09-casb-zoom-integration/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/cloud-and-saas/&quot;&gt;Cloudflare CASB&lt;/a&gt; now integrates with &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/cloud-and-saas/zoom/&quot;&gt;Zoom&lt;/a&gt;. The integration connects through Cloudflare&apos;s pre-built OAuth application — no manual app setup in Zoom is required. After an initial scan, CASB continuously scans your Zoom account to surface new findings as your environment changes.&lt;/p&gt;
&lt;p&gt;Zoom is widely used for meetings, webinars, and collaboration. Misconfigurations in account settings, meeting security controls, and recording access can expose organizations to data leakage, unauthorized access, and compliance risk. Cloudflare CASB ingests Zoom account data via API to surface security findings across these areas.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;key-capabilities&quot;&gt;Key capabilities&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#key-capabilities&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Starting today, security teams can scan for security findings across the following assets:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Account settings&lt;/strong&gt; — Detect weak password policies, unlocked security controls, and two-factor authentication gaps across your Zoom account&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;User accounts&lt;/strong&gt; — Identify users not enforcing SSO, accounts with insecure host keys, unverified or inactive users, and unsafe overrides of account-level security settings&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Meetings&lt;/strong&gt; — Surface meetings without passwords or waiting rooms, meetings using Personal Meeting IDs (PMIs), and meetings with external domain hosts&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recordings&lt;/strong&gt; — Detect publicly accessible cloud recordings, recordings without passcodes, and weak recording password configurations&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Content&lt;/strong&gt; — Identify sensitive information in meeting and recording content via DLP Profile matching&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;learn-more&quot;&gt;Learn more&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#learn-more&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;This &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/cloud-and-saas/zoom/&quot;&gt;integration&lt;/a&gt; is available to all Cloudflare Zero Trust customers today. New customers can sign up and start with their first two integrations for free. Existing customers can enable the integration directly in the Cloudflare One dashboard under &lt;strong&gt;Cloud &amp;amp; SaaS findings&lt;/strong&gt; &amp;gt; &lt;strong&gt;Integrations&lt;/strong&gt;. The integration begins scanning immediately and surfaces findings in the dashboard within minutes.&lt;/p&gt;</description><pubDate>Wed, 09 Sep 2026 00:00:00 GMT</pubDate><product>CASB</product><category>CASB</category></item><item><title>Workers - Miniflare v5 prepares local development for the cf CLI</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-08-miniflare-v5/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-08-miniflare-v5/</guid><description>&lt;p&gt;Miniflare v5 prepares Cloudflare local development tooling for the upcoming &lt;code&gt;cf&lt;/code&gt; CLI.&lt;/p&gt;
&lt;p&gt;Miniflare powers local Workers development behind &lt;code&gt;wrangler dev&lt;/code&gt;, the Cloudflare Vite plugin, and &lt;code&gt;@cloudflare/vitest-plugin&lt;/code&gt;.
Most projects should use those tools instead of depending on Miniflare directly, and Miniflare v5 will not require any action.&lt;/p&gt;
&lt;p&gt;The most significant change is a new configuration shape which aligns Miniflare with &lt;code&gt;cloudflare.config.ts&lt;/code&gt;, the programmatic Cloudflare configuration format now available for testing.&lt;/p&gt;
&lt;p&gt;Other breaking changes include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Removed deprecated APIs and options, such as legacy alpha D1 bindings.&lt;/li&gt;
&lt;li&gt;Removed now-unused, internal APIs like &lt;code&gt;wrappedBindings&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Removed Miniflare&apos;s built-in module discovery; higher-level tools like Wrangler and the Vite plugin should be providing the module graph.&lt;/li&gt;
&lt;li&gt;Moved local-only /cdn-cgi routes under /cdn-cgi/local.&lt;/li&gt;
&lt;li&gt;Replaced per-resource persistence options with shared persistence root options.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For a more comprehensive list, refer to &lt;a href=&quot;https://github.com/cloudflare/workers-sdk/blob/main/packages/miniflare/CHANGELOG.md#5202607300-alpha&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Miniflare&apos;s changelog&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This work sets up a cleaner foundation for the next generation of local development tooling, including the new &lt;code&gt;cf&lt;/code&gt; CLI.&lt;/p&gt;</description><pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Python 3.14 for Python Workers</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-08-python-workers-314/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-08-python-workers-314/</guid><description>&lt;p&gt;Python workers now use Python 3.14 by default.&lt;/p&gt;
&lt;p&gt;This change applies to all new Python workers using compatibility date &lt;code&gt;2026-09-08&lt;/code&gt; or later.&lt;/p&gt;
&lt;p&gt;Internally, this change updates the Pyodide runtime to 314.0.6.&lt;/p&gt;</description><pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare Fundamentals, Workers - Enterprise customers can self-serve CDN upload limits up to 5 GB</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-04-enterprise-self-serve-upload-limits/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-04-enterprise-self-serve-upload-limits/</guid><description>&lt;p&gt;Enterprise customers can now configure a zone&apos;s CDN &lt;strong&gt;Maximum Upload Size&lt;/strong&gt; up to 5 GB directly from the &lt;strong&gt;Network&lt;/strong&gt; page in the Cloudflare dashboard. This removes the need to contact your account team or Cloudflare Support when applications need to accept request bodies larger than 500 MB and no greater than 5 GB.&lt;/p&gt;
&lt;p&gt;The default maximum upload size remains 500 MB. Upload limits above 5 GB still require additional configuration through your account team or &lt;a href=&quot;https://docs.infinitegaming.org/support/contacting-cloudflare-support/&quot;&gt;Cloudflare Support&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Very large uploads may reach connection or read timeouts before reaching the configured size limit. Make sure clients and origins allow enough time to complete the transfer when increasing this setting.&lt;/p&gt;
&lt;p&gt;Refer to &lt;a href=&quot;https://docs.infinitegaming.org/cache/concepts/default-cache-behavior/#upload-limits&quot;&gt;Cache upload limits&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/workers/platform/limits/#request-and-response-limits&quot;&gt;Workers request body size limits&lt;/a&gt; for details.&lt;/p&gt;</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate><product>Cloudflare Fundamentals</product><category>Cloudflare Fundamentals</category><category>Workers</category></item><item><title>Workers - Deploy larger Workers — up to 64 MiB for both free and paid plans</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-04-increased-worker-size-limit/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-04-increased-worker-size-limit/</guid><description>&lt;p&gt;You can now deploy Workers with larger dependencies, heavier frameworks, and more code without hitting size limits.&lt;/p&gt;
&lt;p&gt;When you deploy a Worker, Wrangler bundles your code and compresses it before uploading. Previously, Cloudflare checked that compressed size and rejected deploys over 3 MB (Free) or 10 MB (Paid). That limit has been removed. Cloudflare now only checks the uncompressed size of your bundle, which is 64 MiB across all plans.&lt;/p&gt;
&lt;p&gt;To check your Worker&apos;s bundle size before deploying:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; deploy&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --outdir&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; bundled/&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --dry-run&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Total&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Upload:&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; 259.61&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; KiB&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; /&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; gzip:&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; 47.23&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; KiB&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The &lt;code&gt;Total Upload&lt;/code&gt; value is your uncompressed bundle size. This is what counts against the 64 MiB limit. The &lt;code&gt;gzip&lt;/code&gt; value is shown for reference but is no longer a limit.&lt;/p&gt;
&lt;p&gt;For more information, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/workers/platform/limits/#worker-size&quot;&gt;Worker size limits documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare One Appliance, Cloudflare One, Cloudflare WAN - Define custom applications for breakout and prioritized traffic from the Cloudflare One Appliance dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-02-appliance-custom-application-traffic-steering/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-02-appliance-custom-application-traffic-steering/</guid><description>&lt;p&gt;You can now define &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/network-options/application-based-policies/breakout-traffic/#create-edit-or-delete-a-custom-application&quot;&gt;custom applications&lt;/a&gt; for &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/network-options/application-based-policies/breakout-traffic/&quot;&gt;breakout&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/network-options/application-based-policies/prioritized-traffic/&quot;&gt;prioritized&lt;/a&gt; traffic on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/&quot;&gt;Cloudflare One Appliance&lt;/a&gt; directly from the dashboard, without calling the API.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1800,height=1034,format=webp/_astro/2026-09-01-appliance-custom-application-traffic-steering.D25Ga9-d.gif&quot; alt=&quot;Adding a custom application by hostname, IP subnet, and source subnet from the Traffic Steering tab of an appliance profile&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1034&quot;&gt;
&lt;ul&gt;
&lt;li&gt;In &lt;strong&gt;Traffic Steering&lt;/strong&gt; &amp;gt; &lt;strong&gt;Breakout traffic&lt;/strong&gt; or &lt;strong&gt;Prioritized traffic&lt;/strong&gt;, select &lt;strong&gt;Assign application traffic&lt;/strong&gt; &amp;gt; &lt;strong&gt;Add&lt;/strong&gt; to create a custom application matched by &lt;strong&gt;Hostnames&lt;/strong&gt;, &lt;strong&gt;IP subnets&lt;/strong&gt;, and/or the new &lt;strong&gt;Source subnets&lt;/strong&gt; field, alongside Cloudflare-managed applications.&lt;/li&gt;
&lt;li&gt;Edit or delete an existing custom application from the same panel, no API round-trip required.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source subnets&lt;/strong&gt; lets you match traffic by its source IP range, complementing the existing &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/network-options/application-based-policies/breakout-traffic/#breakout-by-source&quot;&gt;source LAN interface breakout criteria&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This complements the existing API and Terraform workflow for managing applications.&lt;/p&gt;
&lt;p&gt;For details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/network-options/application-based-policies/breakout-traffic/&quot;&gt;Breakout traffic&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/network-options/application-based-policies/prioritized-traffic/&quot;&gt;Prioritized traffic&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate><product>Cloudflare One Appliance</product><category>Cloudflare One Appliance</category><category>Cloudflare One</category><category>Cloudflare WAN</category></item><item><title>Cloudflare One Appliance, Cloudflare One, Cloudflare WAN - Configure DHCP options from the dashboard on Cloudflare One Appliance</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-02-appliance-dhcp-options-ui/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-02-appliance-dhcp-options-ui/</guid><description>&lt;p&gt;You can now configure &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/network-options/dhcp/dhcp-options/&quot;&gt;custom DHCP options&lt;/a&gt; directly from the dashboard when the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/&quot;&gt;Cloudflare One Appliance&lt;/a&gt; is acting as the DHCP server for a LAN.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1800,height=1034,format=webp/_astro/2026-09-01-appliance-dhcp-options-ui.B5OEZmib.gif&quot; alt=&quot;Adding a custom DHCP option to a LAN&apos;s DHCP server from the Network Configuration tab of an appliance profile&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1034&quot;&gt;
&lt;ul&gt;
&lt;li&gt;In &lt;strong&gt;LAN configuration&lt;/strong&gt;, under &lt;strong&gt;DHCP server options&lt;/strong&gt;, select &lt;strong&gt;Add DHCP option&lt;/strong&gt; to choose from common options for PXE / iPXE boot, VoIP phone provisioning, and vendor-specific configuration, or select &lt;strong&gt;Add custom option&lt;/strong&gt; to enter your own option code, type, and value.&lt;/li&gt;
&lt;li&gt;This complements the existing &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/network-options/dhcp/dhcp-options/#configure-dhcp-options&quot;&gt;API and Terraform workflow&lt;/a&gt; for configuring DHCP options.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/network-options/dhcp/dhcp-options/&quot;&gt;DHCP server options&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate><product>Cloudflare One Appliance</product><category>Cloudflare One Appliance</category><category>Cloudflare One</category><category>Cloudflare WAN</category></item><item><title>Cloudflare Images - New in Images: text rasterization and updates to the binding</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-02-images-binding-updates/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-02-images-binding-updates/</guid><description>&lt;p&gt;We&apos;ve added more ways to manage and manipulate images with the &lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/binding/&quot;&gt;Images binding&lt;/a&gt;. Here&apos;s what&apos;s new:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Render text into an image.&lt;/strong&gt; Output a string of text into its own image or draw it over another image.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use the &lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/binding/#textcontent-options&quot;&gt;&lt;code&gt;.text()&lt;/code&gt;&lt;/a&gt; method to rasterize text with the Images binding.&lt;/li&gt;
&lt;li&gt;Style content using the &lt;code&gt;font&lt;/code&gt;, &lt;code&gt;size&lt;/code&gt;, and &lt;code&gt;color&lt;/code&gt; options.&lt;/li&gt;
&lt;li&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/draw-overlays/#draw-with-cfimage&quot;&gt;&lt;code&gt;draw&lt;/code&gt;&lt;/a&gt; array in &lt;code&gt;cf.image&lt;/code&gt; now accepts a &lt;code&gt;text&lt;/code&gt; key.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Manage hosted images without an API token.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Metadata filtering:&lt;/strong&gt; Pass &lt;code&gt;filter.metadata&lt;/code&gt; to &lt;a href=&quot;https://docs.infinitegaming.org/images/storage/binding/#listoptions&quot;&gt;&lt;code&gt;.list()&lt;/code&gt;&lt;/a&gt; to return images by custom metadata. Match a bounded range by setting two operators in one condition, for example, &lt;code&gt;priority: { gte: 2, lte: 5 }&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Server-side signing:&lt;/strong&gt; Get a signed URL for a private image with &lt;a href=&quot;https://docs.infinitegaming.org/images/storage/binding/#imageimageidsignedurloptions&quot;&gt;&lt;code&gt;.signedUrl()&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;User uploads:&lt;/strong&gt; Create a Direct Creator Upload link with &lt;a href=&quot;https://docs.infinitegaming.org/images/storage/binding/#createdirectuploadoptions&quot;&gt;&lt;code&gt;.createDirectUpload()&lt;/code&gt;&lt;/a&gt; so that a client can upload an image to your storage.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Set headers in a single call.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pass a &lt;code&gt;headers&lt;/code&gt; option to &lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/binding/#responseoptions&quot;&gt;&lt;code&gt;.response()&lt;/code&gt;&lt;/a&gt; to set headers without rebuilding the &lt;code&gt;Response&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Content-Type&lt;/code&gt; is always taken from the optimized image and can&apos;t be overridden by a specified header.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;Cache-Control&lt;/code&gt; with &lt;a href=&quot;https://docs.infinitegaming.org/workers/cache/&quot;&gt;Workers Cache&lt;/a&gt; to cache your optimized image at the edge.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/binding/&quot;&gt;Optimize with Workers&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/draw-overlays/&quot;&gt;Draw overlays and watermarks&lt;/a&gt;, and &lt;a href=&quot;https://docs.infinitegaming.org/images/storage/binding/&quot;&gt;Manage hosted images with Workers&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate><product>Cloudflare Images</product><category>Cloudflare Images</category></item><item><title>Cloudflare Tunnel, Cloudflare One, Cloudflare WAN, Cloudflare Mesh - Create multiple Cloudflare Tunnel and Cloudflare Mesh routes at once</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-02-tunnel-mesh-bulk-route-creation/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-02-tunnel-mesh-bulk-route-creation/</guid><description>
&lt;p&gt;You can now create multiple &lt;a href=&quot;https://docs.infinitegaming.org/tunnel/&quot;&gt;Cloudflare Tunnel&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/mesh/&quot;&gt;Cloudflare Mesh&lt;/a&gt; routes from the Routes page in a single action, instead of submitting one route at a time.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1800,height=1034,format=webp/_astro/2026-09-01-tunnel-mesh-bulk.zu4fOWN3.gif&quot; alt=&quot;Creating multiple Cloudflare Tunnel and Cloudflare Mesh routes at once from the Routes page&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1034&quot;&gt;
&lt;p&gt;When creating a route, you can now:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Add multiple destinations at once&lt;/strong&gt; — Enter a comma-separated list of CIDR ranges or hostnames to create several routes of the same type and connector together.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Queue up multiple routes&lt;/strong&gt; — Select &lt;strong&gt;Add another&lt;/strong&gt; to stage additional routes, including different types or connectors, before creating them all in one action.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Retry only what failed&lt;/strong&gt; — If some routes in a batch fail (for example, an invalid CIDR), the routes that were created successfully are removed from the form automatically, so you only need to fix and resubmit the ones that failed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The same Routes UI already supports bulk creation for &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/&quot;&gt;Cloudflare WAN&lt;/a&gt; static routes, so you can add multiple WAN destinations or queue up several WAN routes before creating them together as well.&lt;/p&gt;
&lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/magic-networks/routes&quot; data-nb-button class=&quot;group inline-flex w-max shrink-0 items-center justify-center rounded-full font-medium whitespace-nowrap no-underline shadow-xs transition-colors cursor-pointer select-none focus-visible:outline-2 focus-visible:outline-ring focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary-hover h-9 gap-1.5 px-3 text-sm&quot; target=&quot;_blank&quot;&gt;
	Go to &lt;strong&gt;Routes&lt;/strong&gt;&amp;nbsp;&amp;#8599;
&lt;/a&gt;
&lt;p&gt;For setup steps, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/routes/add-routes/&quot;&gt;Add routes&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate><product>Cloudflare Tunnel</product><category>Cloudflare Tunnel</category><category>Cloudflare One</category><category>Cloudflare WAN</category><category>Cloudflare Mesh</category></item><item><title>Workers - Python Workers now support WSGI web frameworks like Django and Flask</title><link>https://docs.infinitegaming.org/changelog/post/2026-09-02-python-workers-web-framework-support/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-09-02-python-workers-web-framework-support/</guid><description>&lt;p&gt;Python web frameworks following the &lt;a href=&quot;https://peps.python.org/pep-3333/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Web Server Gateway Interface (WSGI)&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; or &lt;a href=&quot;https://asgi.readthedocs.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Asynchronous Server Gateway Interface (ASGI)&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; specification can now be used in Python Workers.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;using-web-frameworks-with-python-workers&quot;&gt;Using web frameworks with Python Workers&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#using-web-frameworks-with-python-workers&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Based on the web framework you are using, you can use either &lt;code&gt;wsgi&lt;/code&gt; or &lt;code&gt;asgi&lt;/code&gt; from the &lt;code&gt;workers&lt;/code&gt; module.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;wsgi-frameworks&quot;&gt;WSGI frameworks&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#wsgi-frameworks&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;For WSGI frameworks like Django or Flask:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;python&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot; data-nb-lang=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; workers &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; wsgi&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; django.core.wsgi &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; get_wsgi_application&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;app &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; get_wsgi_application()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;Default &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; wsgi.entrypoint(app)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The &lt;code&gt;wsgi.entrypoint&lt;/code&gt; is equivalent to creating a &lt;code&gt;WorkerEntrypoint&lt;/code&gt; class and using the &lt;code&gt;wsgi.fetch&lt;/code&gt; method. If you want more control over the &lt;code&gt;WorkerEntrypoint&lt;/code&gt; class, you can do so:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;python&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot; data-nb-lang=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; workers &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; wsgi, WorkerEntrypoint&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;WorkerEntrypoint&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; def&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(self, request):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;        return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; wsgi.fetch(app, request, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.env)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;asgi-frameworks&quot;&gt;ASGI frameworks&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#asgi-frameworks&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;For ASGI frameworks like FastAPI or Starlette:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;python&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot; data-nb-lang=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; workers &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; asgi&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; fastapi &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; FastAPI&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;app &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; FastAPI()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;Default &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; asgi.entrypoint(app)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;For more information about using individual web frameworks, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/workers/languages/python/packages/&quot;&gt;packages documentation in Python Workers&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Load Balancing - Load Balancing now supports pool sets</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-31-pool-sets/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-31-pool-sets/</guid><description>&lt;p&gt;Cloudflare Load Balancing now supports pool sets through the API. Pool sets combine geographic matching with location-specific traffic steering. One load balancer can now use different routing behavior for different locations.&lt;/p&gt;
&lt;p&gt;Each pool set can match a Cloudflare data center, country, or region. It then supplies the candidate pools and can apply its own steering policy, pool weights, and fallback pool. Cloudflare evaluates pool sets in array order and applies the first matching pool set.&lt;/p&gt;
&lt;p&gt;For example, this pool set uses Dynamic Latency steering for traffic from Germany:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;json&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot; data-nb-lang=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;pool_sets&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;germany-lowest-latency&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;match&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: { &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;&quot;topology&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: { &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;&quot;countries&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;DE&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;] } },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;overrides&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;				&quot;pools&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;					&quot;0930eec54a4c7ae6616985b79f678210&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;					&quot;c8b4f5a6d7e84910a2b3c4d5e6f70819&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;				&quot;steering_policy&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;dynamic_latency&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Use pool sets for active-active traffic distribution, location-specific failover, and regional routing policies. For proxied traffic, a pool set can also return a fixed HTTP response instead of selecting a pool.&lt;/p&gt;
&lt;p&gt;For configuration details and more examples, refer to &lt;a href=&quot;https://docs.infinitegaming.org/load-balancing/understand-basics/traffic-steering/pool-sets/&quot;&gt;Pool sets&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 31 Aug 2026 00:00:00 GMT</pubDate><product>Load Balancing</product><category>Load Balancing</category></item><item><title>Cloudflare One Client - Cloudflare One Client for macOS (version 2026.7.1376.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-28-warp-macos-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-28-warp-macos-ga/</guid><description>&lt;p&gt;A new GA release for the macOS Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This hotfix resolves an issue where a small but noticeable percentage of DNS queries fail across platforms.&lt;/p&gt;
</description><pubDate>Fri, 28 Aug 2026 15:42:20 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Windows (version 2026.7.1376.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-28-warp-windows-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-28-warp-windows-ga/</guid><description>&lt;p&gt;A new GA release for the Windows Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Fixed a rare but critical issue where the client could fail to connect or switch organizations due to an invalid registration after switching installed client versions. Additionally, this hotfix resolves an issue where a small but noticeable percentage of DNS queries fail across platforms.&lt;/p&gt;
</description><pubDate>Fri, 28 Aug 2026 15:41:51 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Linux (version 2026.7.1377.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-28-warp-linux-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-28-warp-linux-ga/</guid><description>&lt;p&gt;A new GA release for the Linux Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This hotfix resolves an issue where a small but noticeable percentage of DNS queries fail across platforms.&lt;/p&gt;
</description><pubDate>Fri, 28 Aug 2026 15:27:27 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Workers, Durable Objects - Durable Objects can use up to ten Dynamic Workers concurrently</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-28-durable-objects-dynamic-workers-limit/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-28-durable-objects-dynamic-workers-limit/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/&quot;&gt;Durable Objects&lt;/a&gt; can have up to ten distinct &lt;a href=&quot;https://docs.infinitegaming.org/dynamic-workers/&quot;&gt;Dynamic Workers&lt;/a&gt; with in-flight requests, increased from four. This limit applies across all concurrent requests to the same Durable Object because they share an input/output (I/O) context. Other Workers can have up to four distinct Dynamic Workers with in-flight requests per request.&lt;/p&gt;
&lt;p&gt;Multiple in-flight requests to the same Dynamic Worker count as one toward this limit.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/dynamic-workers/platform/limits/&quot;&gt;Dynamic Workers limits&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 28 Aug 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category><category>Durable Objects</category></item><item><title>Access - Access service token secrets use a scannable format</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-26-service-token-secret-format/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-26-service-token-secret-format/</guid><description>&lt;p&gt;Cloudflare Access service token Client Secrets created on or after August 26, 2026, use the format &lt;code&gt;cfast_[40 alphanumeric characters][8-character checksum]&lt;/code&gt;. The prefix and checksum make these credentials easier for secret scanning tools to identify with fewer false positives.&lt;/p&gt;
&lt;p&gt;Existing service token secrets continue to work and do not require rotation. Both formats use the same Client ID and the same &lt;code&gt;CF-Access-Client-Id&lt;/code&gt; and &lt;code&gt;CF-Access-Client-Secret&lt;/code&gt; authentication headers.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/service-credentials/service-tokens/&quot;&gt;Service tokens&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Access - Grace periods for service token rotation</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-25-service-token-rotation-grace-periods/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-25-service-token-rotation-grace-periods/</guid><description>&lt;p&gt;Cloudflare Access administrators can now choose a grace period when rotating a service token secret. Both secrets remain valid during the grace period, giving administrators time to update services without interrupting authentication.&lt;/p&gt;
&lt;p&gt;The dashboard offers grace periods from one hour to 30 days. Administrators can also revoke the previous secret immediately. The API accepts an RFC 3339 expiration time for custom rotation schedules.&lt;/p&gt;
&lt;p&gt;For configuration instructions, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/service-credentials/service-tokens/#rotate-service-token-secrets&quot;&gt;Rotate service token secrets&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Access - Temporarily turn off Access service tokens</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-25-service-token-status-controls/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-25-service-token-status-controls/</guid><description>&lt;p&gt;Cloudflare Access administrators can now temporarily turn off service tokens without deleting them. A disabled token cannot authenticate, but its configuration remains available so administrators can turn it on again later.&lt;/p&gt;
&lt;p&gt;Turning off a token also stops any previous secret in an active rotation grace period. Use this control to contain suspected credential exposure or pause an automated service.&lt;/p&gt;
&lt;p&gt;For configuration instructions, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/service-credentials/service-tokens/#turn-a-service-token-on-or-off&quot;&gt;Turn a service token on or off&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Cloudflare One, Access - MCP server portals support MCP 2026-07-28 specification</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-25-mcp-portals-mcp-2026-07-28/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-25-mcp-portals-mcp-2026-07-28/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/&quot;&gt;MCP server portals&lt;/a&gt; support the stateless MCP &lt;code&gt;2026-07-28&lt;/code&gt; specification for client and upstream server connections.&lt;/p&gt;
&lt;p&gt;The portal&apos;s &lt;code&gt;/mcp&lt;/code&gt; endpoint automatically accepts stateless MCP &lt;code&gt;2026-07-28&lt;/code&gt; requests and earlier 2025 Streamable HTTP clients. When the portal connects to an upstream Streamable HTTP server, it checks for MCP &lt;code&gt;2026-07-28&lt;/code&gt; support and falls back to the 2025 handshake when needed. Client and upstream protocol selection are independent, so clients and servers can upgrade separately without portal configuration changes.&lt;/p&gt;
&lt;p&gt;SSE connections continue to use the legacy protocol. For details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/#transport&quot;&gt;MCP server portal transport and protocol compatibility&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category><category>Access</category></item><item><title>Cloudflare One Appliance, Cloudflare One, Cloudflare WAN - Download the Cloudflare One Virtual Appliance for your hypervisor from the dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-24-virtual-appliance-self-serve-download/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-24-virtual-appliance-self-serve-download/</guid><description>&lt;p&gt;When you register a &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/&quot;&gt;Cloudflare One Virtual Appliance&lt;/a&gt;, you can now select your hypervisor and download the appliance directly from the dashboard — no need to look up asset URLs.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2813,height=1241,format=webp/_astro/2026-08-24-virtual-appliance-self-serve-download.Ca2YGpCA.png&quot; alt=&quot;Selecting a hypervisor and downloading the Cloudflare One Virtual Appliance from the Connectors page&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2813&quot; height=&quot;1241&quot;&gt;
&lt;ul&gt;
&lt;li&gt;On the &lt;strong&gt;Connectors&lt;/strong&gt; page, select &lt;strong&gt;Add an appliance&lt;/strong&gt;, choose &lt;strong&gt;Virtual appliance&lt;/strong&gt;, then select your hypervisor: &lt;strong&gt;VMware ESXi&lt;/strong&gt;, &lt;strong&gt;Proxmox&lt;/strong&gt;, or &lt;strong&gt;libvirt/KVM&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Download the OVA image (VMware ESXi) or the install script (Proxmox and libvirt/KVM) for the selected hypervisor.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;View setup guide&lt;/strong&gt; to open deployment instructions for your platform.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This complements the existing self-serve &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/configure-virtual-appliance/#register-a-virtual-appliance-and-generate-a-license-key&quot;&gt;registration and license key generation&lt;/a&gt; in the dashboard.&lt;/p&gt;
&lt;p&gt;For details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/configure-virtual-appliance/#configure-a-virtual-machine&quot;&gt;Configure a Cloudflare One Virtual Appliance&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate><product>Cloudflare One Appliance</product><category>Cloudflare One Appliance</category><category>Cloudflare One</category><category>Cloudflare WAN</category></item><item><title>Workers - Preserve exception details in console logs</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-24-preserve-exception-info/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-24-preserve-exception-info/</guid><description>
&lt;p&gt;Console methods now preserve exception details in your Worker&apos;s logs. When your Worker logs an exception, the corresponding log entry includes the exception name, message, and stack.&lt;/p&gt;
&lt;p&gt;For example, your Worker can catch and log an exception:&lt;/p&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;try&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	throw&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Error&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Deliberately created exception&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;} &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;catch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (error) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	console.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;caught exception:&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, error);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;try&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	throw&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Error&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Deliberately created exception&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;} &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;catch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (error) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	console.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;caught exception:&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, error);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;&lt;/div&gt;
&lt;p&gt;If you use &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/&quot;&gt;Workers Observability&lt;/a&gt;, your log is automatically enriched with structured error information. The following example shows how the enriched log appears in the Cloudflare dashboard:&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1200,height=212,format=webp/_astro/2026-08-24-error-info.Be4rAN4i.png&quot; alt=&quot;Workers Observability log entry showing a caught exception and its stack trace&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1200&quot; height=&quot;212&quot;&gt;
&lt;p&gt;The exception&apos;s stack trace appears directly in the log message.&lt;/p&gt;
&lt;p&gt;If you send telemetry to a &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/logs/tail-workers/&quot;&gt;Tail Worker&lt;/a&gt;, the Tail Worker now receives a log entry with an &lt;code&gt;errorInfo&lt;/code&gt; array:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;json&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot; data-nb-lang=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;message&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Request failed:&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;RangeError: Value out of range&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;errorInfo&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		null&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;RangeError&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;message&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Value out of range&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;stack&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;RangeError: Value out of range&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;    at ...&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;level&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;error&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;timestamp&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;1784851200000&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Each &lt;code&gt;errorInfo&lt;/code&gt; item corresponds to the console argument at the same index in &lt;code&gt;message&lt;/code&gt;. Arguments that are not exceptions have a &lt;code&gt;null&lt;/code&gt; entry.&lt;/p&gt;</description><pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>CASB - Automatically remediate Microsoft 365 and Google Workspace findings with API-based CASB remediation policies</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-21-casb-policies/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-21-casb-policies/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/cloud-and-saas/&quot;&gt;Cloudflare CASB&lt;/a&gt; is an API-based (agentless) tool that continuously scans your SaaS and cloud applications for security misconfigurations and data exposure. You can now use &lt;strong&gt;CASB remediation policies&lt;/strong&gt; to automatically fix a finding or send a webhook the moment CASB detects it, without manual triage.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;remediate-microsoft-365-and-google-workspace-findings&quot;&gt;Remediate Microsoft 365 and Google Workspace findings&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#remediate-microsoft-365-and-google-workspace-findings&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;A policy can perform a first-party remediation action directly against the SaaS integration API. When a policy triggers, Cloudflare revokes the external sharing configuration without human intervention.&lt;/p&gt;
&lt;p&gt;Remediation is currently supported for file-sharing findings in Microsoft 365 and Google Workspace. Support for additional finding types and integrations is coming soon. For the full list of supported finding types, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/cloud-and-saas-findings/policies/#run-remediations&quot;&gt;Run remediations&lt;/a&gt; in the CASB remediation policies documentation.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;send-webhooks&quot;&gt;Send webhooks&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#send-webhooks&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;A policy can send posture finding data to Slack, ServiceNow, or any other webhook destination. Webhook actions are supported for all posture finding types across CASB integrations.&lt;/p&gt;
&lt;p&gt;A single policy can perform both actions: remediate a finding and send a webhook.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;get-started&quot;&gt;Get started&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#get-started&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;In &lt;a href=&quot;https://one.dash.cloudflare.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare One&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, go to &lt;strong&gt;Cloud &amp;amp; SaaS findings&lt;/strong&gt; &amp;gt; &lt;strong&gt;Policies&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Create a policy&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Under &lt;strong&gt;Basic information&lt;/strong&gt;, enter a &lt;strong&gt;Policy name&lt;/strong&gt; and, optionally, a &lt;strong&gt;Description&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Under &lt;strong&gt;Choose how you want to trigger the policy&lt;/strong&gt;, select a &lt;strong&gt;Vendor&lt;/strong&gt;, &lt;strong&gt;Integration&lt;/strong&gt;, and &lt;strong&gt;Finding type&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Under &lt;strong&gt;Define what to do with findings that match your trigger&lt;/strong&gt;, choose &lt;strong&gt;Run Remediation&lt;/strong&gt;, &lt;strong&gt;Send webhooks&lt;/strong&gt;, or both.&lt;/li&gt;
&lt;li&gt;Under &lt;strong&gt;Status&lt;/strong&gt;, turn on &lt;strong&gt;Enable policy&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Create policy&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;learn-more&quot;&gt;Learn more&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#learn-more&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Learn how to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/cloud-and-saas-findings/policies/&quot;&gt;create and manage CASB remediation policies&lt;/a&gt; in Cloudflare One.&lt;/li&gt;
&lt;li&gt;Configure &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/cloud-and-saas/webhooks/&quot;&gt;CASB webhooks&lt;/a&gt; as a policy destination.&lt;/li&gt;
&lt;li&gt;Learn how to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/cloud-and-saas-findings/manage-findings/&quot;&gt;manage findings&lt;/a&gt; in Cloudflare One.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CASB remediation policies are now available in Cloudflare One.&lt;/p&gt;</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate><product>CASB</product><category>CASB</category></item><item><title>Data Loss Prevention - Test Data Loss Prevention profiles without sending traffic through Gateway</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-21-dlp-test-scan/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-21-dlp-test-scan/</guid><description>&lt;p&gt;&lt;strong&gt;Test scan&lt;/strong&gt; lets you check how &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/&quot;&gt;Data Loss Prevention (DLP)&lt;/a&gt; evaluates sample content before you apply a profile to production traffic. Paste text, upload a file, or upload a HAR file, then select the profiles you want to test.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1200,height=587,format=webp/_astro/dlp-test-scan.Dm6EgN6x.gif&quot; alt=&quot;Test scan results showing matched profiles, detection entries, and match context&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1200&quot; height=&quot;587&quot;&gt;
&lt;p&gt;Test scan sends content directly to the DLP scanner. Gateway policies are not evaluated, no traffic passes through Gateway, and no Gateway activity logs are created. Results include matched profiles, detection entries, confidence levels, match context, proximity keywords, file metadata, antivirus status, and OCR output.&lt;/p&gt;
&lt;p&gt;Test scan is available to all Cloudflare Zero Trust customers. Profile availability depends on your &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/dlp-profiles/predefined-profiles/&quot;&gt;Zero Trust plan&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For more details, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/test-scan/&quot;&gt;Test scan documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate><product>Data Loss Prevention</product><category>Data Loss Prevention</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Windows (version 2026.7.1343.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-19-warp-windows-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-19-warp-windows-ga/</guid><description>&lt;p&gt;A new GA release for the Windows Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release introduces multiple features from our previous beta release into stable release, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When reauthentication is needed for any reason, the notifications are clearer and reduce the actions needed to get you back to work by redirecting to the browser for authentication instead of the app window when necessary.&lt;/li&gt;
&lt;li&gt;When a network is blocking or otherwise not supportive of HTTP/3, the client will learn and adapt by switching the order of fallback for that network by starting with HTTP/2 first and then trying HTTP/3 if needed. This reduces delays in time to connectivity when joining older or heavily filtered networks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Additional changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed a process leak in the Windows GUI that could exhaust system resources during IPC client-creation failures.&lt;/li&gt;
&lt;li&gt;Fixed being unable to switch organizations when the client was stuck in the &quot;Device not in organization&quot; state.&lt;/li&gt;
&lt;li&gt;Fixed an issue where Microsoft Defender would falsely flag the Cloudflare One Client installation as malicious when installing with Intune.&lt;/li&gt;
&lt;li&gt;Made the Windows domain-joined posture check more reliable.&lt;/li&gt;
&lt;li&gt;A DNS search domain parsing failure no longer prevents connection.&lt;/li&gt;
&lt;li&gt;Cloud icon now correctly reflects actual connection status instead of showing disconnected while fully connected.&lt;/li&gt;
&lt;li&gt;Fixed missing certificate error display due to a race condition.&lt;/li&gt;
&lt;li&gt;Fixed empty black window after transitioning from docked dual displays to undocked/internal display.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If a user upgrades to version 2026.7.1343.0, downgrades to an earlier version, re-registers, and then upgrades back to 2026.7.1343.0, the client might fail to connect or switch organizations. To resolve this issue, run &lt;code&gt;warp-cli registration delete&lt;/code&gt; or &lt;code&gt;warp-cli registration delete-all&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Wed, 19 Aug 2026 15:58:18 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - Cloudflare One Client for macOS (version 2026.7.1343.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-19-warp-macos-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-19-warp-macos-ga/</guid><description>&lt;p&gt;A new GA release for the macOS Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release introduces multiple features from our previous beta release into stable release, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When reauthentication is needed for any reason, the notifications are clearer and reduce the actions needed to get you back to work by redirecting to the browser for authentication instead of the app window when necessary.&lt;/li&gt;
&lt;li&gt;When a network is blocking or otherwise not supportive of HTTP/3, the client will learn and adapt by switching the order of fallback for that network by starting with HTTP/2 first and then trying HTTP/3 if needed. This reduces delays in time to connectivity when joining older or heavily filtered networks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Additional changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed the client not allowing login to another organization when currently showing &quot;Device not in organization.&quot;&lt;/li&gt;
&lt;li&gt;A DNS search domain parsing failure no longer prevents connection.&lt;/li&gt;
&lt;li&gt;Cloud icon now correctly reflects actual connection status instead of showing disconnected while fully connected.&lt;/li&gt;
&lt;li&gt;Fixed missing certificate error display due to a race condition.&lt;/li&gt;
&lt;li&gt;Fixed crash when trying to connect to captive portal on Wi-Fi.&lt;/li&gt;
&lt;li&gt;Fixed empty black window after transitioning from docked dual displays to undocked/internal display.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;None&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Wed, 19 Aug 2026 15:58:18 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Linux (version 2026.7.1343.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-19-warp-linux-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-19-warp-linux-ga/</guid><description>&lt;p&gt;A new GA release for the Linux Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release introduces multiple features from our previous beta release into stable release, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When reauthentication is needed for any reason, the notifications are clearer and reduce the actions needed to get you back to work by redirecting to the browser for authentication instead of the app window when necessary.&lt;/li&gt;
&lt;li&gt;When a network is blocking or otherwise not supportive of HTTP/3, the client will learn and adapt by switching the order of fallback for that network by starting with HTTP/2 first and then trying HTTP/3 if needed. This reduces delays in time to connectivity when joining older or heavily filtered networks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Additional changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed the client not allowing login to another organization when currently showing &quot;Device not in organization.&quot;&lt;/li&gt;
&lt;li&gt;A DNS search domain parsing failure no longer prevents connection.&lt;/li&gt;
&lt;li&gt;Cloud icon now correctly reflects actual connection status instead of showing disconnected while fully connected.&lt;/li&gt;
&lt;li&gt;Fixed missing certificate error display due to a race condition.&lt;/li&gt;
&lt;li&gt;Fixed empty black window after transitioning from docked dual displays to undocked/internal display.&lt;/li&gt;
&lt;li&gt;Fixed hostname routes not working for Cloudflare Mesh when the IP addresses of the hostnames are local addresses.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When in DNS Only mode, the client may send DNS queries for names that are configured for Local Domain Fallback to the encrypted DNS server instead of falling back to the system configuration. Local Domain Fallback works as expected in other client modes.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Wed, 19 Aug 2026 06:14:35 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Access, Cloudflare Fundamentals - Access resource lists now support resource-scoped roles</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-19-granular-permissions-resource-lists/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-19-granular-permissions-resource-lists/</guid><description>&lt;p&gt;Members with only resource-scoped Access roles can now open Access resource list pages in the Cloudflare dashboard and call list endpoints in the API. They no longer need an additional account-scoped read-only role to list resources.&lt;/p&gt;
&lt;p&gt;The dashboard and API return only resources included in the member&apos;s permission policy scopes. Filtering applies to Access applications, policies, service tokens, and identity providers. This allows administrators to delegate specific Access resources without granting account-wide visibility. Previously, the dashboard blocked these list pages and API list requests returned &lt;code&gt;403&lt;/code&gt; responses.&lt;/p&gt;
&lt;p&gt;For members with the Cloudflare Access App Admin role, policy lists include policies attached directly to the selected application. Reusable policies appear only when the member has the Cloudflare Access Policy Admin role for those policies.&lt;/p&gt;
&lt;p&gt;For role definitions and assignment details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/manage-members/roles/#resource-scoped-roles&quot;&gt;Resource-scoped roles&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/manage-members/scope/&quot;&gt;Role scopes&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category><category>Cloudflare Fundamentals</category></item><item><title>Cloudflare Network Firewall, Magic Transit, Cloudflare WAN - Threat Intel Lists supported in Unified Routing</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-19-unified-routing-threat-lists/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-19-unified-routing-threat-lists/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-network-firewall/&quot;&gt;Cloudflare Advanced Network Firewall&lt;/a&gt; Threat Intel Lists are now supported for accounts using &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/reference/traffic-steering/#unified-routing&quot;&gt;Unified Routing&lt;/a&gt; mode. This feature requires a Cloudflare Advanced Network Firewall subscription.&lt;/p&gt;
&lt;p&gt;Support for additional features - Rate Limiting and Managed Rulesets - is planned.&lt;/p&gt;
&lt;p&gt;For the full list of current beta limitations, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/reference/traffic-steering/#check-feature-availability-before-upgrading&quot;&gt;Traffic steering beta limitations&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><product>Cloudflare Network Firewall</product><category>Cloudflare Network Firewall</category><category>Magic Transit</category><category>Cloudflare WAN</category></item><item><title>Workers - @cloudflare/vitest-pool-workers is now @cloudflare/vitest-plugin</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-19-vitest-plugin/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-19-vitest-plugin/</guid><description>
&lt;p&gt;Version 1 of the Workers Vitest integration is published as &lt;a href=&quot;https://www.npmjs.com/package/@cloudflare/vitest-plugin&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;@cloudflare/vitest-plugin&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. The package was formerly named &lt;code&gt;@cloudflare/vitest-pool-workers&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The Vitest configuration API is unchanged. Existing projects must update the dependency name, package imports, and TypeScript &lt;code&gt;types&lt;/code&gt; entries.&lt;/p&gt;
&lt;p&gt;To migrate automatically, run:&lt;/p&gt;
&lt;script&gt;
	if (!customElements.get(&quot;nb-pm-restore&quot;)) {
		customElements.define(
			&quot;nb-pm-restore&quot;,
			class extends HTMLElement {
				connectedCallback() {
					const card = this.closest(&quot;[data-nb-pm]&quot;);
					if (!card) return;
					let saved;
					try {
						saved = sessionStorage.getItem(&quot;ui-pm-tab&quot;);
					} catch {
						return;
					}
					if (!saved) return;
					const tabs = card.querySelectorAll(&quot;[data-nb-pm-tab]&quot;);
					let idx = -1;
					tabs.forEach(function (t, i) {
						if (t.textContent.trim() === saved) idx = i;
					});
					if (idx &lt; 1) return;
					tabs.forEach(function (t, i) {
						t.setAttribute(&quot;aria-selected&quot;, String(i === idx));
					});
					card.querySelectorAll(&quot;[data-nb-pm-panel]&quot;).forEach(function (p, i) {
						p.hidden = i !== idx;
					});
				}
			},
		);
	}
&lt;/script&gt;&lt;div data-nb-pm class=&quot;w-full&quot;&gt;&lt;div class=&quot;flex w-full flex-col overflow-hidden rounded-lg text-sm ring ring-border bg-card&quot;&gt;&lt;div class=&quot;flex items-center gap-2 px-3 py-2 text-[0.8125rem] font-medium leading-5 text-muted-foreground bg-[var(--nb-surface-sunken)]&quot; role=&quot;tablist&quot; aria-label=&quot;Package manager&quot;&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;true&quot; aria-controls=&quot;pm-panel-pm-847b425c-a655-4f44-8328-2496724fe303-npm&quot; id=&quot;pm-tab-pm-847b425c-a655-4f44-8328-2496724fe303-npm&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;npm&lt;/button&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;false&quot; aria-controls=&quot;pm-panel-pm-847b425c-a655-4f44-8328-2496724fe303-yarn&quot; id=&quot;pm-tab-pm-847b425c-a655-4f44-8328-2496724fe303-yarn&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;yarn&lt;/button&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;false&quot; aria-controls=&quot;pm-panel-pm-847b425c-a655-4f44-8328-2496724fe303-pnpm&quot; id=&quot;pm-tab-pm-847b425c-a655-4f44-8328-2496724fe303-pnpm&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;pnpm&lt;/button&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-847b425c-a655-4f44-8328-2496724fe303-npm&quot; aria-labelledby=&quot;pm-tab-pm-847b425c-a655-4f44-8328-2496724fe303-npm&quot; data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;npx&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; @cloudflare/codemods vitest:pool-workers-to-vitest-plugin&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;npx @cloudflare/codemods vitest:pool-workers-to-vitest-plugin&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-847b425c-a655-4f44-8328-2496724fe303-yarn&quot; aria-labelledby=&quot;pm-tab-pm-847b425c-a655-4f44-8328-2496724fe303-yarn&quot; hidden data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;yarn&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; @cloudflare/codemods vitest:pool-workers-to-vitest-plugin&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;yarn @cloudflare/codemods vitest:pool-workers-to-vitest-plugin&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-847b425c-a655-4f44-8328-2496724fe303-pnpm&quot; aria-labelledby=&quot;pm-tab-pm-847b425c-a655-4f44-8328-2496724fe303-pnpm&quot; hidden data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;pnpm&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; @cloudflare/codemods vitest:pool-workers-to-vitest-plugin&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;pnpm @cloudflare/codemods vitest:pool-workers-to-vitest-plugin&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;nb-pm-restore style=&quot;display:contents&quot;&gt;&lt;/nb-pm-restore&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/package-managers/PackageManagerTabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;The codemod updates your dependency, imports, and test TypeScript configuration. For manual migration steps, refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/testing/vitest-integration/migration-guides/migrate-to-vitest-plugin/&quot;&gt;Migrate to Vitest plugin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For outbound request mocks in Workers tests, use the &lt;a href=&quot;https://github.com/mswjs/cloudflare&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;@msw/cloudflare&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; integration. Refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/testing/vitest-integration/mock-outbound-requests/&quot;&gt;Mock outbound requests&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare Tunnel, Cloudflare Tunnel for SASE - Configure origin application settings for Cloudflare Tunnel in the dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-18-tunnel-origin-settings-dashboard/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-18-tunnel-origin-settings-dashboard/</guid><description>
&lt;p&gt;You can now configure origin application settings directly in the Cloudflare dashboard when adding or editing a published application route for a &lt;a href=&quot;https://docs.infinitegaming.org/tunnel/&quot;&gt;Cloudflare Tunnel&lt;/a&gt;. These settings control how &lt;code&gt;cloudflared&lt;/code&gt; connects to your origin server and were previously only available in the Cloudflare One dashboard or via local configuration files.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1800,height=948,format=webp/_astro/tunnel-origin-settings-dashboard.CsC2RwFC.gif&quot; alt=&quot;Configure origin application settings in the Cloudflare dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;948&quot;&gt;
&lt;p&gt;When editing a published application, expand &lt;strong&gt;Additional application settings&lt;/strong&gt; to configure parameters organized into three categories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;HTTP&lt;/strong&gt; — Set a custom HTTP Host header or disable chunked encoding.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TLS&lt;/strong&gt; — Configure origin server name, CA pool, TLS timeout, disable TLS verification, match SNI to host, or enable HTTP/2 to origin.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Connection&lt;/strong&gt; — Tune connect timeout, keep-alive timeout, keep-alive connections, TCP keep-alive interval, proxy type, or disable Happy Eyeballs.&lt;/li&gt;
&lt;/ul&gt;
&lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/tunnels&quot; data-nb-button class=&quot;group inline-flex w-max shrink-0 items-center justify-center rounded-full font-medium whitespace-nowrap no-underline shadow-xs transition-colors cursor-pointer select-none focus-visible:outline-2 focus-visible:outline-ring focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary-hover h-9 gap-1.5 px-3 text-sm&quot; target=&quot;_blank&quot;&gt;
	Go to &lt;strong&gt;Tunnels&lt;/strong&gt;&amp;nbsp;&amp;#8599;
&lt;/a&gt;
&lt;p&gt;For the full list of origin parameters, refer to &lt;a href=&quot;https://docs.infinitegaming.org/tunnel/reference/origin-parameters/&quot;&gt;Origin parameters&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate><product>Cloudflare Tunnel</product><category>Cloudflare Tunnel</category><category>Cloudflare Tunnel for SASE</category></item><item><title>Email security - Post-quantum key exchange for MX deployments</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-17-post-quantum-key-exchange-mx/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-17-post-quantum-key-exchange-mx/</guid><description>&lt;p&gt;Cloudflare Email Security now supports post-quantum hybrid key exchange with X25519MLKEM768 on the SMTP connections we make to receive and deliver mail. Deploying Email Security in front of a provider that supports post-quantum hybrid key agreement (like Google Workspace) will create a TLS 1.3 connection using post-quantum key agreement.&lt;/p&gt;
&lt;p&gt;Inbound MX connections and outbound delivery connections now negotiate the &lt;a href=&quot;https://docs.infinitegaming.org/ssl/post-quantum-cryptography/#hybrid-key-agreement&quot;&gt;X25519MLKEM768&lt;/a&gt; hybrid key agreement when the peer supports it, protecting SMTP traffic against &lt;a href=&quot;https://blog.cloudflare.com/pq-2024/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;harvest-now, decrypt-later&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; attacks.&lt;/p&gt;
&lt;p&gt;Support is backwards compatible and enabled automatically for all customers. Senders and receivers that do not yet advertise post-quantum key agreement continue to connect with classical key exchange.&lt;/p&gt;
&lt;p&gt;This applies to all Email Security packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Advantage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise + PhishGuard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Mon, 17 Aug 2026 09:00:00 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Load Balancing - Load balancing analytics now filters by pool name</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-17-pool-name-analytics-filter/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-17-pool-name-analytics-filter/</guid><description>&lt;p&gt;Load balancing analytics now filters traffic data by pool name instead of pool ID, aligning the query behavior with the pool names displayed in the filter dropdown.&lt;/p&gt;
&lt;p&gt;Previously, the analytics pool filter queried by internal pool ID while displaying pool names in the UI dropdown. This mismatch caused filtering issues when pools shared similar names or when you expected results based on the visible pool name. Because the underlying query used a different identifier than what appeared on screen, the displayed data could be confusing or incorrect.&lt;/p&gt;
&lt;p&gt;The pool filter now queries by the same pool name shown in the dropdown. When you select a pool from the filter, the analytics graphs and tables display data for that specific pool as you would expect. This change affects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Requests over time&lt;/strong&gt;, filtering the chart series to the selected pool.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pool distribution&lt;/strong&gt;, showing only the selected pool segment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Top endpoints&lt;/strong&gt;, displaying cards for origins in the selected pool.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Latency&lt;/strong&gt;, showing latency data for the selected pool.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;strong&gt;Logs&lt;/strong&gt; view and health event filtering are unchanged.&lt;/p&gt;
&lt;p&gt;To use this, go to &lt;strong&gt;Traffic&lt;/strong&gt; &amp;gt; &lt;strong&gt;Load Balancing Analytics&lt;/strong&gt; for a zone. The same pool filter appears in the analytics view for an individual load balancer under &lt;strong&gt;Load Balancing&lt;/strong&gt; at the account level.&lt;/p&gt;
&lt;p&gt;For more information about analytics filters and metrics, refer to &lt;a href=&quot;https://docs.infinitegaming.org/load-balancing/reference/load-balancing-analytics/&quot;&gt;Load Balancing Analytics&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate><product>Load Balancing</product><category>Load Balancing</category></item><item><title>Workers, Access - You can now enable Access on a Worker or all Workers at once</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-14-workers-access/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-14-workers-access/</guid><description>&lt;p&gt;You now have two new ways to protect your &lt;a href=&quot;https://docs.infinitegaming.org/workers/&quot;&gt;Workers&lt;/a&gt; with &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/cloudflare-access/&quot;&gt;Cloudflare Access&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Protect an application across all its domains at once&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Until now, if a Worker was reachable on a route, a Custom Domain, and a &lt;code&gt;workers.dev&lt;/code&gt; URL, you had to manually add each one to an Access application and keep the list in sync whenever routes or domains changed.&lt;/p&gt;
&lt;p&gt;Now, Access attaches the policy to the Worker itself, so every associated domain and preview URL stays protected even when its routes or domains change.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1476,height=689,format=webp/_astro/protect-one-worker.BSpeeOry.png&quot; alt=&quot;Access setting for protecting a single Worker&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1476&quot; height=&quot;689&quot;&gt;
&lt;p&gt;&lt;strong&gt;Protect all new and existing Workers by default&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Make all Workers private by default, so every existing and newly created Worker requires sign-in before anyone can reach it.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2436,height=1432,format=webp/_astro/protect-all-workers._AWy-S-E.png&quot; alt=&quot;Account-wide Access setting that protects all Workers&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2436&quot; height=&quot;1432&quot;&gt;
&lt;p&gt;If a specific Worker should remain publicly accessible, add a Worker-level bypass to exempt it.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1228,height=756,format=webp/_astro/make-worker-public.D3yjPjtf.png&quot; alt=&quot;Make a Worker public when all Workers are protected&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1228&quot; height=&quot;756&quot;&gt;
&lt;p&gt;Whether you protect a single application or all Workers at once, you can choose whether to protect preview deployments only or both previews and production, and control who can sign in by Cloudflare account membership, email address, or email domain.&lt;/p&gt;
&lt;p&gt;For more advanced policy options, edit the policy in &lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/one/access/apps&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Zero Trust&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1276,height=1220,format=webp/_astro/choose-who-can-sign-in.DKf3kWAK.png&quot; alt=&quot;Access policy configuration for controlling who can sign in&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1276&quot; height=&quot;1220&quot;&gt;
&lt;p&gt;&lt;strong&gt;View all of your Worker Access policies&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can view and manage all of your Access policies in the &lt;strong&gt;Access&lt;/strong&gt; tab of the Workers &amp;amp; Pages section in the dashboard.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1646,height=1366,format=webp/_astro/access-policies.DN7yCwHX.png&quot; alt=&quot;Access tab showing all configured Access policies&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1646&quot; height=&quot;1366&quot;&gt;
&lt;p&gt;&lt;strong&gt;See who is accessing your Worker&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When Access is enabled on your Worker, every authenticated request includes &lt;code&gt;ctx.access&lt;/code&gt;. Call &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/context/#access&quot;&gt;&lt;code&gt;ctx.access.getIdentity()&lt;/code&gt;&lt;/a&gt; to get the user&apos;s email, name, and groups — no manual JWT validation required.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    if&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;ctx.access) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;      return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Access did not run&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, { status: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;401&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; identity&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; ctx.access.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;getIdentity&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; Response.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({ aud: ctx.access.aud, email: identity?.email });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;Test Access locally&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can now test Cloudflare Access locally with &lt;code&gt;wrangler dev&lt;/code&gt;. Add a &lt;code&gt;dev&lt;/code&gt; block to your &lt;code&gt;wrangler.jsonc&lt;/code&gt;:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;json&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot; data-nb-lang=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;access&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;    &quot;dev&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;      &quot;aud&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my-app&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;      &quot;identity&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: { &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;&quot;email&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;admin@example.com&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Your Worker will receive this identity through &lt;code&gt;ctx.access&lt;/code&gt; and &lt;code&gt;ctx.access.getIdentity()&lt;/code&gt;, letting you test authenticated and unauthenticated flows without deploying. Remove the &lt;code&gt;dev&lt;/code&gt; block to simulate unauthenticated requests.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;API and programmatic access&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can also set up these policies through the &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/cloudflare-access/&quot;&gt;Workers API&lt;/a&gt; instead of the dashboard.&lt;/p&gt;</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category><category>Access</category></item><item><title>Gateway - Detect and control software package downloads with package registry security</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-13-package-protection/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-13-package-protection/</guid><description>&lt;p&gt;Cloudflare Gateway can now detect software package downloads and give you policy control over supply chain traffic. When a developer or CI/CD pipeline downloads a package through Gateway, the proxy identifies the registry protocol from the request URL and extracts the package ecosystem, name, version, and namespace. You can then write &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/&quot;&gt;HTTP policies&lt;/a&gt; using &lt;code&gt;pkg.*&lt;/code&gt; selectors to allow or block package downloads.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;supported-ecosystems&quot;&gt;Supported ecosystems&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#supported-ecosystems&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Gateway detects package downloads for the following ecosystems:&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ecosystem&lt;/th&gt;
&lt;th&gt;Namespace&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;npm&lt;/td&gt;
&lt;td&gt;Scope (for example, &lt;code&gt;@babel&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PyPI&lt;/td&gt;
&lt;td&gt;--&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RubyGems&lt;/td&gt;
&lt;td&gt;--&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cargo&lt;/td&gt;
&lt;td&gt;--&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Go&lt;/td&gt;
&lt;td&gt;Module path&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maven&lt;/td&gt;
&lt;td&gt;Group ID&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NuGet&lt;/td&gt;
&lt;td&gt;--&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;selectors&quot;&gt;Selectors&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#selectors&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;In the dashboard, select &lt;strong&gt;Package Ecosystem&lt;/strong&gt; to access the package registry selectors. After selecting a single ecosystem, nested fields for package name, version, and namespace become available. Five &lt;code&gt;pkg.*&lt;/code&gt; selectors are available for HTTP policies with the Allow and Block actions:&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Selector&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pkg.ecosystem&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The package ecosystem detected from the request URL.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pkg.name&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The package name extracted from the download URL.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pkg.version&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The package version, with support for ecosystem-aware comparison operators.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pkg.namespace&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The package namespace, when the ecosystem supports one.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pkg.purl&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The &lt;a href=&quot;https://github.com/package-url/purl-spec&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Package URL (PURL)&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; derived from the detected coordinates. Available in the API only.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Detection is based on the registry protocol rather than the hostname, so it works the same way whether traffic goes to a public registry, a corporate proxy such as Artifactory or Nexus, or a self-hosted mirror.&lt;/p&gt;
&lt;p&gt;Package registry security requires &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/tls-decryption/&quot;&gt;TLS decryption&lt;/a&gt; to be turned on.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/package-registry-security/&quot;&gt;Package registry security&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Email security - Block emails by content with blocked content rules</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-12-blocked-content-rules/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-12-blocked-content-rules/</guid><description>&lt;p&gt;Cloudflare Email security now lets administrators write their own content-based blocking rules. A new &lt;strong&gt;Blocked content&lt;/strong&gt; area under &lt;strong&gt;Policies &amp;amp; rules&lt;/strong&gt; lets you define a plaintext string or a regular expression, choose whether to scan the message subject, body, or both, and automatically block any message that matches.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create rules using either &lt;strong&gt;plaintext&lt;/strong&gt; matches or &lt;strong&gt;regular expressions&lt;/strong&gt; — useful for blocking targeted phishing campaigns, known-bad phrases, or content patterns unique to your organization.&lt;/li&gt;
&lt;li&gt;Choose the &lt;strong&gt;search location&lt;/strong&gt; for each rule: &lt;strong&gt;subject&lt;/strong&gt;, &lt;strong&gt;body&lt;/strong&gt;, or &lt;strong&gt;subject and body&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Use the built-in &lt;strong&gt;regular expression checker&lt;/strong&gt; to validate your pattern against sample text before saving, so you can confirm the rule matches what you expect and avoid false positives.&lt;/li&gt;
&lt;li&gt;Matching messages are marked with a malicious &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/email-security/reference/dispositions-and-attributes/&quot;&gt;disposition&lt;/a&gt; and prevented from reaching users&apos; inboxes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Blocked content rules currently only support the block action.&lt;/p&gt;
&lt;p&gt;This feature is available for the following Email security packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise + PhishGuard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To get started, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/email-security/settings/detection-settings/blocked-content/&quot;&gt;Blocked content&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 12 Aug 2026 09:00:00 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Cloudflare One, Access - Independent MFA supports FIDO2 for infrastructure applications</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-12-fido2-keys-infrastructure-ssh/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-12-fido2-keys-infrastructure-ssh/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/non-http/infrastructure-apps/&quot;&gt;Infrastructure&lt;/a&gt; applications support independent multi-factor authentication (MFA) with FIDO2 keys. You can allow &lt;code&gt;ssh_fido2_key&lt;/code&gt;, &lt;code&gt;piv_key&lt;/code&gt;, or both in application-level and policy-level MFA settings.&lt;/p&gt;
&lt;p&gt;Users enroll FIDO2 keys through the App Launcher and connect with the generated SSH identity. FIDO2 keys for SSH are separate from browser-based WebAuthn security keys and Personal Identity Verification (PIV) keys.&lt;/p&gt;
&lt;p&gt;For setup instructions, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/access-settings/independent-mfa/#enroll-a-fido2-key-for-infrastructure-apps&quot;&gt;Enroll a FIDO2 key for infrastructure apps&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/policies/mfa-requirements/#infrastructure-applications&quot;&gt;Configure MFA for infrastructure applications&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category><category>Access</category></item><item><title>Gateway, Cloudflare One - MCP protocol detection and AI Security dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-12-mcp-detection-and-dashboard/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-12-mcp-detection-and-dashboard/</guid><description>&lt;p&gt;Cloudflare Gateway now automatically detects &lt;a href=&quot;https://www.cloudflare.com/learning/ai/what-is-model-context-protocol-mcp/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Model Context Protocol (MCP)&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; traffic flowing through your network. MCP is the standard protocol used by AI agents to connect to external tools and data sources. Gateway identifies MCP requests by inspecting protocol-specific headers and payload characteristics.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;mcp-policy-selector&quot;&gt;MCP policy selector&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#mcp-policy-selector&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;A new &lt;strong&gt;Is MCP&lt;/strong&gt; selector (&lt;code&gt;experimental.is_mcp&lt;/code&gt;) is available in &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/#is-mcp&quot;&gt;HTTP policies&lt;/a&gt;. Use this selector to build Gateway rules that allow, block, or isolate MCP traffic.&lt;/p&gt;
&lt;p&gt;This selector is currently in beta and may change before general availability.&lt;/p&gt;
&lt;p&gt;For example, the following policy blocks MCP traffic that does not arrive through an approved &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/&quot;&gt;MCP portal&lt;/a&gt;:&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Selector&lt;/th&gt;
&lt;th&gt;Operator&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Logic&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Is MCP&lt;/td&gt;
&lt;td&gt;is&lt;/td&gt;
&lt;td&gt;&lt;em&gt;True&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;And&lt;/td&gt;
&lt;td&gt;Block&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Traffic Source&lt;/td&gt;
&lt;td&gt;is not&lt;/td&gt;
&lt;td&gt;&lt;em&gt;MCP portal&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1104,height=664,format=webp/_astro/gateway-block-unknown-mcp.B2Ainj8x.png&quot; alt=&quot;Example Gateway policy that blocks MCP traffic not arriving through an MCP portal&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1104&quot; height=&quot;664&quot;&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;ai-security-report&quot;&gt;AI security report&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#ai-security-report&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;A new &lt;strong&gt;AI security report&lt;/strong&gt; dashboard under &lt;strong&gt;Insights &amp;amp; Logs &amp;gt; Dashboards&lt;/strong&gt; provides visibility into MCP usage across your organization. The dashboard includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Total MCP request volume, unique users, and unique MCP servers&lt;/li&gt;
&lt;li&gt;A timeseries chart of unique MCP servers observed over time&lt;/li&gt;
&lt;li&gt;A summary of Gateway policies that target MCP traffic&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2406,height=928,format=webp/_astro/gateway-mcp-dashboard.C9jPahkp.png&quot; alt=&quot;AI security report dashboard showing MCP detection data including total MCP requests, users, servers, and Gateway policies for MCP&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2406&quot; height=&quot;928&quot;&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/&quot;&gt;HTTP policies&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category><category>Cloudflare One</category></item><item><title>Gateway, Cloudflare One - Traffic Source selector in Gateway policies</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-12-traffic-source-selector/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-12-traffic-source-selector/</guid><description>&lt;p&gt;Gateway &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/&quot;&gt;HTTP&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/network-policies/&quot;&gt;Network&lt;/a&gt; policies now include a &lt;strong&gt;Traffic Source&lt;/strong&gt; selector that identifies how traffic reaches Cloudflare. This allows administrators to write policies that target specific on-ramp methods - for example, applying different rules to traffic arriving via the Cloudflare One Client compared to traffic routed through an MCP portal or a proxy endpoint.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;available-traffic-source-values&quot;&gt;Available traffic source values&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#available-traffic-source-values&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;UI name&lt;/th&gt;
&lt;th&gt;API value&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Device client&lt;/td&gt;
&lt;td&gt;&lt;code&gt;device_client&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Traffic from the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/&quot;&gt;Cloudflare One Client (WARP)&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mesh&lt;/td&gt;
&lt;td&gt;&lt;code&gt;mesh&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Traffic from a &lt;a href=&quot;https://docs.infinitegaming.org/mesh/&quot;&gt;Cloudflare Mesh&lt;/a&gt; connector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloudflare WAN&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cloudflare_wan&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Traffic from &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/zero-trust/cloudflare-gateway/&quot;&gt;Cloudflare WAN&lt;/a&gt; (Magic WAN)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Clientless RDP&lt;/td&gt;
&lt;td&gt;&lt;code&gt;clientless_rdp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Traffic from a clientless RDP session&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Proxy endpoint&lt;/td&gt;
&lt;td&gt;&lt;code&gt;proxy_endpoint&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Traffic from a &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/resolvers-and-proxies/proxy-endpoints/&quot;&gt;proxy endpoint&lt;/a&gt; (PAC file)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Clientless Browser Isolation&lt;/td&gt;
&lt;td&gt;&lt;code&gt;agentless_biso&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Traffic from &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/remote-browser-isolation/&quot;&gt;clientless Browser Isolation&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCP portal&lt;/td&gt;
&lt;td&gt;&lt;code&gt;mcp_portal&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Traffic from an &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/&quot;&gt;MCP portal&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;The selector uses the &lt;code&gt;net.onramp.type&lt;/code&gt; API field in both HTTP and Network policies.&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;UI name&lt;/th&gt;
&lt;th&gt;API example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Traffic Source&lt;/td&gt;
&lt;td&gt;&lt;code&gt;net.onramp.type == &quot;device_client&quot;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;browser-isolation-selector&quot;&gt;Browser Isolation selector&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#browser-isolation-selector&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;A &lt;strong&gt;Browser Isolation&lt;/strong&gt; selector is also available in Network and HTTP policies. This selector identifies whether the current session is running inside &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/remote-browser-isolation/&quot;&gt;Remote Browser Isolation&lt;/a&gt;, allowing administrators to apply different policy behavior to isolated traffic.&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;UI name&lt;/th&gt;
&lt;th&gt;API example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Browser Isolation&lt;/td&gt;
&lt;td&gt;&lt;code&gt;net.is_isolated == true&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/&quot;&gt;HTTP policies&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/network-policies/&quot;&gt;Network policies&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category><category>Cloudflare One</category></item><item><title>Cloudflare Tunnel, Cloudflare Tunnel for SASE, Cloudflare Mesh, Gateway, Cloudflare One - Hostname routing is now generally available, with a new public IP range for initial resolved IPs</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-11-hostname-routing-ga-public-initial-resolved-ips/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-11-hostname-routing-ga-public-initial-resolved-ips/</guid><description>
&lt;p&gt;&lt;a href=&quot;https://blog.cloudflare.com/tunnel-hostname-routing/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hostname routing&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; is now generally available. Instead of managing static IP lists and routes, you can route traffic by hostname across multiple Cloudflare One connectors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare Tunnel&lt;/strong&gt;: route a &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/cloudflared/connect-private-hostname/&quot;&gt;private hostname&lt;/a&gt; (for example, &lt;code&gt;wiki.internal.local&lt;/code&gt;) to a private application behind your tunnel, or a &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/egress-policies/egress-cloudflared/&quot;&gt;public hostname&lt;/a&gt; (for example, &lt;code&gt;bank.example.com&lt;/code&gt;) to egress through a specific tunnel and anchor traffic to a dedicated exit node.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare Mesh&lt;/strong&gt;: attract a &lt;a href=&quot;https://docs.infinitegaming.org/mesh/features/routes/#hostname-routes&quot;&gt;private or public hostname&apos;s traffic&lt;/a&gt; to a Mesh node.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Alongside GA, the default IPv4 range used for &lt;!-- prettier-ignore --&gt;&lt;span id=&quot;initial resolved IP&quot; data-tooltip data-content=&quot;&lt;p&gt;A unique, ephemeral IP address that Gateway assigns to DNS queries when filtering network traffic by hostname. The IP is randomly selected from an IPv4 range (&lt;code&gt;172.64.128.0/20&lt;/code&gt; by default, configurable per account) or an IPv6 range (&lt;code&gt;2606:4700:0cf1:4000::/64&lt;/code&gt;, not configurable).&lt;/p&gt;
&quot; class=&quot;glossary-tooltip&quot; tabindex=&quot;0&quot; data-astro-cid-hklyqugd&gt;initial resolved IPs&lt;/span&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/cf/GlossaryTooltip.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt; (also called token IPs) is changing from a Carrier-Grade NAT (CGNAT) range to a public Cloudflare-owned range:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IPv4&lt;/strong&gt;: &lt;code&gt;172.64.128.0/20&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IPv6&lt;/strong&gt;: &lt;code&gt;2606:4700:0cf1:4000::/64&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is the default range. You can &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/routes/configure-initial-resolved-ips/&quot;&gt;configure a custom initial resolved IP range&lt;/a&gt; for IPv4 if it conflicts with your existing network.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why this is changing:&lt;/strong&gt; Starting with &lt;a href=&quot;https://developer.chrome.com/release-notes/142&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Chrome 142&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, Local Network Access (LNA) restrictions block background requests to CGNAT addresses (&lt;code&gt;100.64.0.0/10&lt;/code&gt;), which included the previous initial resolved IP default (&lt;code&gt;100.80.0.0/16&lt;/code&gt;). LNA is implemented at the Chromium engine level, so it affects all Chromium-based browsers (for example, Microsoft Edge, Brave, and Opera), not only Google Chrome. This could silently break hostname-based Gateway features for users of these browsers, and required Chrome Enterprise policy workarounds. The new default range is public Cloudflare address space, so it is not affected by this restriction.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is affected:&lt;/strong&gt; Initial resolved IPs are used by several features that associate a DNS query with the network connection that follows it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/cloudflared/connect-private-hostname/&quot;&gt;Private&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/egress-policies/egress-cloudflared/&quot;&gt;public&lt;/a&gt; hostname routing for Cloudflare Tunnel&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/mesh/features/routes/#hostname-routes&quot;&gt;Hostname routes&lt;/a&gt; for Cloudflare Mesh&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/non-http/self-hosted-private-app/&quot;&gt;Access private applications&lt;/a&gt; on non-HTTPS ports&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/egress-policies/host-selectors/&quot;&gt;Egress policy host selectors&lt;/a&gt; (Domain, Host, Application, and Content Categories)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can check your account&apos;s current range, or configure a custom range, at any time from &lt;strong&gt;Networking&lt;/strong&gt; &amp;gt; &lt;strong&gt;IP addresses&lt;/strong&gt; &amp;gt; &lt;strong&gt;Address space&lt;/strong&gt; &amp;gt; &lt;strong&gt;Custom IPs&lt;/strong&gt;, or using the &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/networks/subresources/subnets/#(resource)%20zero_trust.networks.subnets.initial_resolved_ip&quot;&gt;Initial Resolved IP Subnet API&lt;/a&gt;.&lt;/p&gt;
&lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/ip-addresses/address-space/custom-ips&quot; data-nb-button class=&quot;group inline-flex w-max shrink-0 items-center justify-center rounded-full font-medium whitespace-nowrap no-underline shadow-xs transition-colors cursor-pointer select-none focus-visible:outline-2 focus-visible:outline-ring focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary-hover h-9 gap-1.5 px-3 text-sm&quot; target=&quot;_blank&quot;&gt;
	Go to &lt;strong&gt;Custom IPs&lt;/strong&gt;&amp;nbsp;&amp;#8599;
&lt;/a&gt;
&lt;p&gt;For full instructions, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/routes/configure-initial-resolved-ips/&quot;&gt;Configure initial resolved IPs&lt;/a&gt;. The IPv6 range (&lt;code&gt;2606:4700:0cf1:4000::/64&lt;/code&gt;) is unchanged and is not affected by this restriction.&lt;/p&gt;
&lt;p&gt;The default IPv4 range, and all Cloudflare One IPv6 ranges, are automatically routed through the Cloudflare One Client and do not require any Split Tunnel configuration. Refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/route-traffic/split-tunnels/#automatically-managed-ranges&quot;&gt;Automatically managed ranges&lt;/a&gt; for details.&lt;/p&gt;
&lt;p&gt;If you were relying on a Chrome Enterprise policy workaround (such as &lt;code&gt;LocalNetworkAccessRestrictionsTemporaryOptOut&lt;/code&gt;) while your account was still on the legacy CGNAT-based range, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/cloudflared/connect-private-hostname/#google-chrome-restricts-access-to-private-hostnames&quot;&gt;Google Chrome restricts access to private hostnames&lt;/a&gt; for next steps.&lt;/p&gt;</description><pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate><product>Cloudflare Tunnel</product><category>Cloudflare Tunnel</category><category>Cloudflare Tunnel for SASE</category><category>Cloudflare Mesh</category><category>Gateway</category><category>Cloudflare One</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Windows (version 2026.6.905.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-10-warp-windows-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-10-warp-windows-ga/</guid><description>&lt;p&gt;A new GA release for the Windows Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This hotfix addresses an uncommon and intermittent case on Windows devices where the device is unable to reconnect after the device is woken from sleep.&lt;/p&gt;
</description><pubDate>Mon, 10 Aug 2026 20:28:46 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare Tunnel, Cloudflare Tunnel for SASE - Stream live logs from Cloudflare Tunnel in the dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-10-tunnel-live-logs-core-dashboard/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-10-tunnel-live-logs-core-dashboard/</guid><description>
&lt;p&gt;Real-time Tunnel log streaming is now available in the Cloudflare dashboard under &lt;strong&gt;Networking&lt;/strong&gt; &amp;gt; &lt;strong&gt;Tunnels&lt;/strong&gt;. This brings the same live debugging capability previously only available in the Cloudflare One dashboard, including multi-connector aggregated streaming for high-availability deployments.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1800,height=948,format=webp/_astro/tunnel-live-logs-core-dashboard.Dtm7Jg51.gif&quot; alt=&quot;Stream live logs from a tunnel in the Cloudflare dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;948&quot;&gt;
&lt;p&gt;In the tunnel detail view, a new &lt;strong&gt;Live logs&lt;/strong&gt; tab lets you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stream logs from single or multiple connectors&lt;/strong&gt; — In &lt;a href=&quot;https://docs.infinitegaming.org/tunnel/configuration/#replicas-and-high-availability&quot;&gt;highly available&lt;/a&gt; deployments with multiple &lt;code&gt;cloudflared&lt;/code&gt; replicas, logs from all connectors are merged into a single stream grouped by hostname, making it easy to identify which host machine produced each log entry.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Filter by log level, event type, and HTTP method&lt;/strong&gt; — Narrow the stream to only the events you care about (HTTP, TCP, UDP, or &lt;code&gt;cloudflared&lt;/code&gt; internal), at any log level.&lt;/li&gt;
&lt;/ul&gt;
&lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/tunnels&quot; data-nb-button class=&quot;group inline-flex w-max shrink-0 items-center justify-center rounded-full font-medium whitespace-nowrap no-underline shadow-xs transition-colors cursor-pointer select-none focus-visible:outline-2 focus-visible:outline-ring focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary-hover h-9 gap-1.5 px-3 text-sm&quot; target=&quot;_blank&quot;&gt;
	Go to &lt;strong&gt;Tunnels&lt;/strong&gt;&amp;nbsp;&amp;#8599;
&lt;/a&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/tunnel/observability/#remote-log-streaming&quot;&gt;Tunnel observability&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/monitor-tunnels/logs/&quot;&gt;Tunnel log streams&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate><product>Cloudflare Tunnel</product><category>Cloudflare Tunnel</category><category>Cloudflare Tunnel for SASE</category></item><item><title>Load Balancing - Load Balancing health notifications now resolve automatically</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-07-stateful-health-notifications/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-07-stateful-health-notifications/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/load-balancing/&quot;&gt;Load Balancing&lt;/a&gt; health notifications are now stateful. When a pool or endpoint becomes unhealthy, the notification opens an incident in your alerting tool as before. When that same pool or endpoint recovers, the follow-up notification is matched to the original alert and resolves that incident automatically, so you no longer have to close it by hand.&lt;/p&gt;
&lt;p&gt;As part of this change, Load Balancing also sends a notification when a pool or endpoint returns to a healthy state, not only when it becomes unhealthy. Expect to see recovery notifications alongside the failure notifications you already receive.&lt;/p&gt;
&lt;p&gt;This applies to your existing Load Balancing health alerts with no configuration change, and it matches the behavior already used by &lt;a href=&quot;https://docs.infinitegaming.org/health-checks/&quot;&gt;Health Checks&lt;/a&gt; notifications.&lt;/p&gt;
&lt;p&gt;Two things to keep in mind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A recovery notification is matched to the earlier unhealthy notification for the &lt;strong&gt;same pool or endpoint&lt;/strong&gt;. Renaming an endpoint while an incident is open prevents the match, so that incident stays open until you close it.&lt;/li&gt;
&lt;li&gt;If a health change cannot be classified as either healthy or unhealthy, the notification is still delivered, but without the state needed to open or resolve an incident.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Refer to &lt;a href=&quot;https://docs.infinitegaming.org/load-balancing/additional-options/pagerduty-integration/&quot;&gt;Integrate with PagerDuty&lt;/a&gt; to learn more about routing Load Balancing health notifications to an incident management tool.&lt;/p&gt;</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate><product>Load Balancing</product><category>Load Balancing</category></item><item><title>Cloudflare Mesh, Cloudflare One - Container image for Cloudflare Mesh</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-07-mesh-container-image/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-07-mesh-container-image/</guid><description>
&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/mesh/&quot;&gt;Cloudflare Mesh&lt;/a&gt; nodes can now run as Docker containers. The &lt;a href=&quot;https://hub.docker.com/r/cloudflare/mesh&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare/mesh&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; image is available on Docker Hub for Docker Compose, Kubernetes, and any OCI-compatible runtime — no host-level package installation required.&lt;/p&gt;
&lt;p&gt;The image supports &lt;code&gt;amd64&lt;/code&gt; and &lt;code&gt;arm64&lt;/code&gt; architectures and includes built-in &lt;a href=&quot;https://docs.infinitegaming.org/mesh/guides/run-mesh-in-containers/#source-nat&quot;&gt;source NAT&lt;/a&gt; so return traffic routes correctly without VPC route table changes.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;deployment-patterns&quot;&gt;Deployment patterns&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#deployment-patterns&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Docker Compose&lt;/strong&gt; — add a &lt;code&gt;cloudflare-mesh&lt;/code&gt; service to your &lt;code&gt;compose.yaml&lt;/code&gt; and connect your entire stack to a private network.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes StatefulSet&lt;/strong&gt; — deploy a standalone Mesh node with persistent registration state.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes sidecar&lt;/strong&gt; — add the Mesh image as a sidecar container in a Pod to connect an application to Cloudflare without application changes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CI/CD&lt;/strong&gt; — pull the image in a pipeline step, join the Mesh, run integration tests against private infrastructure, and tear down. The node disappears when the container exits.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For &lt;a href=&quot;https://docs.infinitegaming.org/mesh/features/high-availability/&quot;&gt;high availability&lt;/a&gt;, run multiple replicas with the same Mesh node token. Cloudflare operates replicas in active-passive mode with automatic failover.&lt;/p&gt;
&lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/mesh&quot; data-nb-button class=&quot;group inline-flex w-max shrink-0 items-center justify-center rounded-full font-medium whitespace-nowrap no-underline shadow-xs transition-colors cursor-pointer select-none focus-visible:outline-2 focus-visible:outline-ring focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary-hover h-9 gap-1.5 px-3 text-sm&quot; target=&quot;_blank&quot;&gt;
	Go to &lt;strong&gt;Mesh&lt;/strong&gt;&amp;nbsp;&amp;#8599;
&lt;/a&gt;
&lt;p&gt;For setup steps, runtime configuration, and deployment examples, refer to &lt;a href=&quot;https://docs.infinitegaming.org/mesh/guides/run-mesh-in-containers/&quot;&gt;Run Mesh in Docker / Kubernetes&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate><product>Cloudflare Mesh</product><category>Cloudflare Mesh</category><category>Cloudflare One</category></item><item><title>Workers - AI agents can debug Workers with local tracing</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-04-local-tracing/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-04-local-tracing/</guid><description>&lt;p&gt;&lt;code&gt;wrangler dev&lt;/code&gt; and &lt;code&gt;vite dev&lt;/code&gt; automatically capture structured OpenTelemetry traces and correlated console logs during local Worker invocations.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;debug-with-ai-agents&quot;&gt;Debug with AI agents&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#debug-with-ai-agents&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;When the tooling detects an AI agent session, it prints a terminal hint pointing to the &lt;a href=&quot;https://docs.infinitegaming.org/workers/local-development/local-explorer/#api&quot;&gt;Local Explorer API&lt;/a&gt; at &lt;code&gt;/cdn-cgi/local/explorer/api&lt;/code&gt;. The API serves an OpenAPI schema and exposes a read-only observability query endpoint for discovering telemetry, querying traces and logs, and inspecting binding state.&lt;/p&gt;
&lt;p&gt;The agent can identify the exact failing operation, fix the code, rerun the request, and verify the result. This debug loop requires no deployment or temporary logs.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;inspect-traces-in-local-explorer&quot;&gt;Inspect traces in Local Explorer&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#inspect-traces-in-local-explorer&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Humans can inspect the same &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/traces/&quot;&gt;traces&lt;/a&gt; and correlated console logs in the Local Explorer browser UI. Each trace shows spans, timing, attributes, and errors.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2048,height=847,format=webp/_astro/local-trace-failed-request.Bf0avznU.png&quot; alt=&quot;Local Explorer showing a failed Worker trace with spans, timing, and errors&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2048&quot; height=&quot;847&quot;&gt;
&lt;p&gt;Automatic spans cover handler calls, outbound &lt;code&gt;fetch()&lt;/code&gt; calls, and binding calls. Custom spans appear alongside these automatic spans.&lt;/p&gt;
&lt;p&gt;For more details, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/workers/local-development/local-explorer/&quot;&gt;Local Explorer documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Node.js compatibility is now enabled by default</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-04-nodejs-compat-default/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-04-nodejs-compat-default/</guid><description>
&lt;p&gt;Workers now enable the &lt;code&gt;nodejs_compat&lt;/code&gt; and &lt;code&gt;nodejs_compat_v2&lt;/code&gt; compatibility
flags by default for &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/compatibility-dates/&quot;&gt;compatibility dates&lt;/a&gt;
of &lt;code&gt;2026-08-04&lt;/code&gt; or later. These flags are not used for these compatibility
dates because the compatibility date enables the same behavior.&lt;/p&gt;
&lt;p&gt;This means all &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/nodejs/&quot;&gt;Node.js built-in APIs&lt;/a&gt; supported
by the Workers runtime are available by default, including &lt;code&gt;node:crypto&lt;/code&gt;,
&lt;code&gt;node:buffer&lt;/code&gt;, &lt;code&gt;node:stream&lt;/code&gt;, &lt;code&gt;node:net&lt;/code&gt;, &lt;code&gt;node:dns&lt;/code&gt;, &lt;code&gt;node:fs&lt;/code&gt;, &lt;code&gt;node:http&lt;/code&gt;,
and more. npm packages that depend on these APIs will work without additional
configuration.&lt;/p&gt;
&lt;p&gt;Workers using an earlier compatibility date are not affected. They can still
opt in by adding &lt;code&gt;nodejs_compat&lt;/code&gt; to &lt;code&gt;compatibility_flags&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;New projects do not need to add either flag. Existing projects can update their
compatibility date without removing them. Wrangler, Miniflare, the Cloudflare
Vite plugin, and Vitest Pool Workers ignore these redundant flags when starting
the runtime.&lt;/p&gt;
&lt;p&gt;To turn off Node.js compatibility completely, remove any &lt;code&gt;nodejs_compat&lt;/code&gt; and
&lt;code&gt;nodejs_compat_v2&lt;/code&gt; flags. Then add both of the following flags:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;$schema&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./node_modules/wrangler/config-schema.json&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;  // Set this to today&apos;s date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;compatibility_date&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;2026-10-11&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;compatibility_flags&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;    &quot;no_nodejs_compat&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;    &quot;no_nodejs_compat_v2&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Set this to today&apos;s date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;compatibility_date = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;2026-10-11&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;compatibility_flags = [&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;no_nodejs_compat&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;no_nodejs_compat_v2&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;For more information, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/nodejs/&quot;&gt;Node.js compatibility documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Log in to Wrangler without a local callback server</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-04-wrangler-login-device-flow/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-04-wrangler-login-device-flow/</guid><description>&lt;p&gt;&lt;code&gt;wrangler login&lt;/code&gt; now supports the &lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc8628&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OAuth 2.0 Device Authorization Grant&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. Pass &lt;code&gt;--device&lt;/code&gt; to authenticate without starting a temporary callback server on &lt;code&gt;localhost:8976&lt;/code&gt;:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;npx&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; login&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --device&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Wrangler prints a verification URL and a short user code, opens the URL in your default browser with the code already filled in, and polls Cloudflare for an access token while you approve the request:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; ⛅️&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; 4.119.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;────────────────────&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Attempting&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; to&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; login&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; via&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; OAuth&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Device&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Authorization&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Grant...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;To&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; authorize&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Wrangler,&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; please&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; visit:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  https://dash.cloudflare.com/oauth2/device&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;and&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; enter&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; the&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; code:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  jPqK6Qvs&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;You&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; have&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; 5&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; minutes&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; to&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; approve&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; this&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; request.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Opening&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; a&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; link&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; in&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; your&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; browser:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; https://dash.cloudflare.com/oauth2/device?user_code=jPqK6Qvs&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Successfully&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; logged&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; in.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The default login flow needs your browser to reach &lt;code&gt;localhost:8976&lt;/code&gt;, which is not always possible from containers, remote SSH sessions, or GitHub Codespaces. Previously these environments required forwarding ports or fetching the callback URL with &lt;code&gt;curl&lt;/code&gt; from a second terminal session. Because &lt;code&gt;--device&lt;/code&gt; has no callback server, those workarounds are no longer necessary.&lt;/p&gt;
&lt;p&gt;Since the plain verification URL and user code are both printed to the terminal, you can also approve the request from a phone or another machine. Pass &lt;code&gt;--browser=false&lt;/code&gt; to stop Wrangler from opening a browser at all.&lt;/p&gt;
&lt;p&gt;Available in Wrangler version 4.119.0 or later. For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/general/#login&quot;&gt;&lt;code&gt;wrangler login&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Access - Control authorization cookies for multi-domain Access applications</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-03-eager-redirect-cookie-setting/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-03-eager-redirect-cookie-setting/</guid><description>&lt;p&gt;Cloudflare Access administrators can now control whether a self-hosted application preemptively sets authorization cookies across its public hostnames.&lt;/p&gt;
&lt;p&gt;Previously, Access automatically used eager redirects for applications with five or fewer hostnames. Applications with more than five hostnames received cookies as users visited each hostname. Administrators can now choose either behavior, regardless of the number of hostnames.&lt;/p&gt;
&lt;p&gt;The new &lt;strong&gt;Eager redirect cookie&lt;/strong&gt; setting is turned on by default for new applications. After a user signs in, Access redirects the browser through each hostname and sets a &lt;code&gt;CF_Authorization&lt;/code&gt; cookie. This supports applications that need to make requests across hostnames before the user visits each one.&lt;/p&gt;
&lt;p&gt;For applications with many hostnames, the redirect chain can cause sign-in loops in some browsers. Turn off the setting to issue the cookie only when a user visits each hostname.&lt;/p&gt;
&lt;p&gt;To configure the setting, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/http-apps/authorization-cookie/#eager-redirect-cookie&quot;&gt;Authorization cookie&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Load Balancing - See fallback pool traffic separately in load balancing analytics</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-03-fallback-pool-analytics/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-03-fallback-pool-analytics/</guid><description>&lt;p&gt;Load balancing analytics now shows traffic served by your &lt;a href=&quot;https://docs.infinitegaming.org/load-balancing/understand-basics/health-details/#fallback-pools&quot;&gt;fallback pool&lt;/a&gt; separately from traffic routed to the same pool by normal steering.&lt;/p&gt;
&lt;p&gt;Previously, requests were grouped by pool name alone. If the pool acting as your fallback also received traffic through your steering policy, both appeared as a single series, so it was not obvious from the graph whether Cloudflare was still making health-based routing decisions or had fallen back to the pool of last resort. Because the fallback pool ignores health, that distinction matters when you are diagnosing an outage or reviewing how much traffic was shed.&lt;/p&gt;
&lt;p&gt;Fallback traffic is now labeled with the pool name followed by &lt;code&gt;(Fallback)&lt;/code&gt;. A pool named &lt;code&gt;eu-west&lt;/code&gt;, for example, is shown as &lt;code&gt;eu-west (Fallback)&lt;/code&gt;. This label appears as its own entry in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Requests over time&lt;/strong&gt;, as a separate series in the chart.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pool distribution&lt;/strong&gt;, as a separate segment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Top endpoints&lt;/strong&gt;, as a separate card for the pool.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;strong&gt;Latency&lt;/strong&gt; view and the health event &lt;strong&gt;Logs&lt;/strong&gt; are unchanged.&lt;/p&gt;
&lt;p&gt;To see this, go to &lt;strong&gt;Traffic&lt;/strong&gt; &amp;gt; &lt;strong&gt;Load Balancing Analytics&lt;/strong&gt; for a zone. The same breakdown appears in the analytics view for an individual load balancer under &lt;strong&gt;Load Balancing&lt;/strong&gt; at the account level.&lt;/p&gt;
&lt;p&gt;Refer to &lt;a href=&quot;https://docs.infinitegaming.org/load-balancing/reference/load-balancing-analytics/&quot;&gt;load balancing analytics&lt;/a&gt; to learn more.&lt;/p&gt;</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate><product>Load Balancing</product><category>Load Balancing</category></item><item><title>Workers - Python and JavaScript Workers can now call each other via RPC</title><link>https://docs.infinitegaming.org/changelog/post/2026-08-03-python-javascript-rpc/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-08-03-python-javascript-rpc/</guid><description>
&lt;p&gt;You can now call methods between Python and JavaScript Workers using &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/rpc/&quot;&gt;Workers RPC&lt;/a&gt;. This works through &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/bindings/service-bindings/rpc/&quot;&gt;Service bindings&lt;/a&gt; without extra dependencies, schema definitions, or serialization code.&lt;/p&gt;
&lt;p&gt;Cross-language RPC calls behave like ordinary function calls. Exceptions propagate to the call site. You can pass &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm#supported_types&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;structured cloneable types&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; as parameters or return values, and Pyodide Foreign Function Interface (FFI) automatically converts types between languages.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;call-a-typescript-worker-from-python&quot;&gt;Call a TypeScript Worker from Python&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#call-a-typescript-worker-from-python&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Define a method in a TypeScript Worker:&lt;/p&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;js&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;index.js&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { WorkerEntrypoint } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;cloudflare:workers&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; class&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; RpcService&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; extends&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; WorkerEntrypoint&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; add&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; a &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; b;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;index.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { WorkerEntrypoint } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;cloudflare:workers&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; class&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; RpcService&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; extends&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; WorkerEntrypoint&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; add&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; number&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; number&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Promise&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;number&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; a &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; b;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Call it from a Python Worker through a Service binding:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;python&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot; data-nb-lang=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; workers &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; Response, WorkerEntrypoint&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;WorkerEntrypoint&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; def&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(self, request):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		rpc &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; self&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;RPC&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		result &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; rpc.add(&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;42&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;144&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; Response.json({&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;result&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: result})&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Configure the Service binding in the Python Worker&apos;s Wrangler configuration:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;services&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;binding&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;RPC&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;service&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;ts-rpc-server&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;entrypoint&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;RpcService&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;services&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;binding = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;RPC&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;service = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;ts-rpc-server&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;entrypoint = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;RpcService&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;call-a-python-worker-from-javascript&quot;&gt;Call a Python Worker from JavaScript&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#call-a-python-worker-from-javascript&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Define a method in a Python Worker:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;python&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot; data-nb-lang=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; workers &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; WorkerEntrypoint&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;WorkerEntrypoint&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; def&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; highlight_code&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(self, code: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, language: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) -&amp;gt; &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;dict&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		from&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; pygments.formatters &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; HtmlFormatter&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		from&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; pygments &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; highlight&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		from&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; pygments.lexers &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; get_lexer_by_name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		lexer &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; get_lexer_by_name(language, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;stripall&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		formatter &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; HtmlFormatter(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;linenos&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;cssclass&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;highlight&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;monokai&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		highlighted_html &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; highlight(code, lexer, formatter)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		css &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; formatter.get_style_defs(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;.highlight&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;			&quot;html&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: highlighted_html,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;			&quot;css&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: css&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Call it from a JavaScript Worker through a Service binding:&lt;/p&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;js&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;index.js&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; rpc&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;PYTHON_RPC&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; result&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; rpc.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;highlight_code&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;print(42)&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;python&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; Response.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(result);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;index.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; rpc&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;PYTHON_RPC&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; result&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; rpc.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;highlight_code&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;print(42)&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;python&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; Response.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(result);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Configure the Service binding in the JavaScript Worker&apos;s Wrangler configuration:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;services&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;binding&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;PYTHON_RPC&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;service&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;py-rpc-server&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;services&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;binding = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;PYTHON_RPC&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;service = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;py-rpc-server&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;For more details on the announcement, read the &lt;a href=&quot;https://blog.cloudflare.com/python-workers-rpc/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;blog post&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For more information, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/rpc/&quot;&gt;Workers RPC documentation&lt;/a&gt; and the &lt;a href=&quot;https://docs.infinitegaming.org/workers/languages/python/&quot;&gt;Python Workers overview&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Windows (version 2026.7.1210.1)</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-31-warp-windows-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-31-warp-windows-beta/</guid><description>&lt;p&gt;A new Beta release for the Windows Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/beta-releases/&quot;&gt;beta releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This beta release includes the following changes and improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improved connection reliability: the client now swaps protocol order after repeated connectivity-check failures, which helps when HTTP/3 is blocked after the QUIC handshake.&lt;/li&gt;
&lt;li&gt;Fixed issue where a certificate error could be incorrectly displayed right after the connection is established.&lt;/li&gt;
&lt;li&gt;A &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/#dns-search-suffixes&quot;&gt;DNS search domain&lt;/a&gt; parsing failure no longer prevents connection.&lt;/li&gt;
&lt;li&gt;Fixed a &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/#device-tunnel-protocol&quot;&gt;MASQUE&lt;/a&gt; issue where the tunnel could stall while uploading at a high rate.&lt;/li&gt;
&lt;li&gt;Fixed being unable to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/switch-organizations/&quot;&gt;switch organizations&lt;/a&gt; when the client was stuck in the &quot;Device not in organization&quot; state.&lt;/li&gt;
&lt;li&gt;Fixed the Home Screen dropdown popup not anchoring correctly.&lt;/li&gt;
&lt;li&gt;Fixed a crash during dialog dismissal.&lt;/li&gt;
&lt;li&gt;Increased tolerance for configurations with a large number of &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/route-traffic/local-domains/&quot;&gt;local domain fallback&lt;/a&gt; resolver IPs, so DNS resolution behaves correctly even when more fallback resolvers are configured than recommended.&lt;/li&gt;
&lt;li&gt;Fixed a networking issue where IPv6 multicast routes were being assigned to the WARP tunnel interface.&lt;/li&gt;
&lt;li&gt;Fixed fatal errors on UI load on Windows 10.&lt;/li&gt;
&lt;li&gt;Fixed a crash during Windows notification initialization.&lt;/li&gt;
&lt;li&gt;Made the Windows &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/reusable-components/posture-checks/client-checks/domain-joined/&quot;&gt;domain-joined posture check&lt;/a&gt; more reliable.&lt;/li&gt;
&lt;li&gt;Fixed orphaned credentials left behind on multi-user uninstall.&lt;/li&gt;
&lt;li&gt;A successful re-authentication will cause the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/device-profiles/&quot;&gt;device profile&lt;/a&gt; to be re-evaluated.&lt;/li&gt;
&lt;li&gt;Improved &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/client-version-assignments/&quot;&gt;dashboard-managed client updates&lt;/a&gt; by running the updater only when needed.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Fri, 31 Jul 2026 13:55:39 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - Cloudflare One Client for macOS (version 2026.7.1210.1)</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-31-warp-macos-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-31-warp-macos-beta/</guid><description>&lt;p&gt;A new Beta release for the macOS Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/beta-releases/&quot;&gt;beta releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This beta release includes the following changes and improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improved connection reliability: the client now swaps protocol order after repeated connectivity-check failures, which helps when HTTP/3 is blocked after the QUIC handshake.&lt;/li&gt;
&lt;li&gt;Fixed issue where a certificate error could be incorrectly displayed right after the connection is established.&lt;/li&gt;
&lt;li&gt;A &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/#dns-search-suffixes&quot;&gt;DNS search domain&lt;/a&gt; parsing failure no longer prevents connection.&lt;/li&gt;
&lt;li&gt;Fixed a &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/#device-tunnel-protocol&quot;&gt;MASQUE&lt;/a&gt; issue where the tunnel could stall while uploading at a high rate.&lt;/li&gt;
&lt;li&gt;Fixed being unable to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/switch-organizations/&quot;&gt;switch organizations&lt;/a&gt; when the client was stuck in the &quot;Device not in organization&quot; state.&lt;/li&gt;
&lt;li&gt;Fixed the Home Screen dropdown popup not anchoring correctly.&lt;/li&gt;
&lt;li&gt;Fixed a crash during dialog dismissal.&lt;/li&gt;
&lt;li&gt;Increased tolerance for configurations with a large number of &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/route-traffic/local-domains/&quot;&gt;local domain fallback&lt;/a&gt; resolver IPs, so DNS resolution behaves correctly even when more fallback resolvers are configured than recommended.&lt;/li&gt;
&lt;li&gt;Fixed the WARP client stealing window focus (for example, during reauth).&lt;/li&gt;
&lt;li&gt;Fixed a client crash when connecting to a captive portal over Wi-Fi.&lt;/li&gt;
&lt;li&gt;Fixed the system tray icon showing &quot;disconnected&quot; while the UI showed &quot;connected&quot;.&lt;/li&gt;
&lt;li&gt;A successful re-authentication will cause the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/device-profiles/&quot;&gt;device profile&lt;/a&gt; to be re-evaluated.&lt;/li&gt;
&lt;li&gt;Improved &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/client-version-assignments/&quot;&gt;dashboard-managed client updates&lt;/a&gt; by running the updater only when needed.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Fri, 31 Jul 2026 13:55:38 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Access - Static OAuth client credentials for MCP server portals</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-31-mcp-portal-manual-oauth/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-31-mcp-portal-manual-oauth/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/&quot;&gt;MCP server portals&lt;/a&gt; can now connect to upstream MCP servers that require a pre-registered OAuth client. This supports OAuth providers that do not offer Dynamic Client Registration or have disabled it. This unlocks portal connections to major SaaS providers such as Slack and GitHub, whose MCP servers do not yet support DCR.&lt;/p&gt;
&lt;p&gt;When adding an MCP server, administrators can enter the client ID and client secret from an OAuth application registered with the upstream provider. The configuration also supports custom OAuth endpoints, scopes, and the &lt;code&gt;client_secret_post&lt;/code&gt; and &lt;code&gt;client_secret_basic&lt;/code&gt; token endpoint authentication methods.&lt;/p&gt;
&lt;p&gt;Cloudflare stores the client secret encrypted. Users still authenticate to the upstream server with their own accounts when they connect through a portal.&lt;/p&gt;
&lt;p&gt;For setup instructions, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/#configure-manual-oauth-credentials&quot;&gt;Configure manual OAuth credentials&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Stream - Rotate Stream broadcast keys for live inputs</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-30-rotate-stream-broadcast-keys/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-30-rotate-stream-broadcast-keys/</guid><description>&lt;p&gt;You can now rotate the broadcast credentials for a Stream live input without changing the live input identifier.&lt;/p&gt;
&lt;p&gt;Use key rotation when live input credentials may have been shared with the wrong audience, exposed in client code or a screenshare, or need to be refreshed as part of your security process. Rotating keys revokes the old credentials, disconnects broadcasts using stale credentials, and returns refreshed credentials in the API response.&lt;/p&gt;
&lt;p&gt;To rotate keys for a live input, make a &lt;code&gt;POST&lt;/code&gt; request to the &lt;code&gt;rotate_keys&lt;/code&gt; endpoint:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --request&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; POST&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;https://api.cloudflare.com/client/v4/accounts/{&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;account_id}/stream/live_inputs/&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;{live_input_identifier}&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;/rotate_keys&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;--header &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Authorization: Bearer &amp;lt;API_TOKEN&amp;gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Live input responses now also include &lt;code&gt;keysRotatedAt&lt;/code&gt;, which indicates when the live input keys were last rotated. This field is omitted for live inputs whose keys have never been rotated.&lt;/p&gt;
&lt;p&gt;For endpoint details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/stream/subresources/live_inputs/methods/rotate_keys/&quot;&gt;Rotate keys for a live input&lt;/a&gt;. For usage guidance, refer to &lt;a href=&quot;https://docs.infinitegaming.org/stream/stream-live/start-stream-live/#manage-live-inputs&quot;&gt;Manage live inputs&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate><product>Stream</product><category>Stream</category></item><item><title>Workers, Durable Objects - Inspect Worker startup performance with Wrangler</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-31-wrangler-startup-profile-summary/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-31-wrangler-startup-profile-summary/</guid><description>&lt;p&gt;&lt;code&gt;wrangler check startup&lt;/code&gt; now reports your Worker&apos;s raw and compressed bundle sizes. It also summarizes local CPU activity during startup directly in your terminal.&lt;/p&gt;
&lt;p&gt;Large bundles and costly startup work can introduce cold-start latency, so use this command to find code and large dependencies that slow your Worker before it handles requests.&lt;/p&gt;
&lt;p&gt;The summary includes sampled, active, garbage collection, and idle time. Wrangler continues to save a &lt;code&gt;.cpuprofile&lt;/code&gt; file for detailed flamegraph analysis in Chrome DevTools or VS Code.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;⛅️&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; 4.116.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;───────────────────────────────────────────────&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;├&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Building&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; your&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Worker&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;│&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Worker&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Built!&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; 🎉&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;│&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;├&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Analysing&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;│&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Startup&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; phase&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; analysed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;│&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;│&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Bundle:&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; 7171.25&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; KiB&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; /&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; gzip:&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; 2197.00&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; KiB&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;│&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;│&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Local&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; startup&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; profile:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;│&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;   Profile&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; window:&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; 70.3&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; ms&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;│&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;   Sampled&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; time:&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; 70.3&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; ms&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;│&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;   Active:&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; 38.5&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; ms&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (including &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;3.7&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; ms&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; garbage&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; collection&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;│&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;   Idle:&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; 31.8&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; ms&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;│&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;   Samples:&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; 36&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;│&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;│&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; CPU&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Profile&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; has&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; been&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; written&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; to&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; worker-startup.cpuprofile.&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Load&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; it&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; into&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; the&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Chrome&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; DevTools&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; profiler&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (or &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;directly&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; in&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; VSCode&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) to view a flamegraph.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;│&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;│&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Note&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; that&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; the&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; CPU&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Profile&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; was&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; measured&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; on&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; your&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Worker&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; running&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; locally&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; on&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; your&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; machine,&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; which&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; has&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; a&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; different&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; CPU&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; than&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; when&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; your&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Worker&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; runs&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; on&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Cloudflare.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;│&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;│&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; As&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; such,&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; CPU&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Profile&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; can&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; be&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; used&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; to&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; understand&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; where&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; time&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; is&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; spent&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; at&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; startup,&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; but&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; the&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; overall&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; startup&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; time&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; in&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; the&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; profile&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; should&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; not&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; be&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; expected&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; to&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; exactly&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; match&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; what&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; your&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Worker&apos;s startup time will be when deploying to Cloudflare.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The profile runs locally, so its duration will differ from startup time on Cloudflare. For authoritative startup time, deploy your Worker or upload a version.&lt;/p&gt;
&lt;p&gt;Available in Wrangler version 4.116.0 or later. For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/workers/#startup&quot;&gt;&lt;code&gt;wrangler check startup&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category><category>Durable Objects</category></item><item><title>Access - Admins can turn on Code Mode by default for MCP portal users</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-30-mcp-portal-code-mode-policies/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-30-mcp-portal-code-mode-policies/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/&quot;&gt;MCP server portals&lt;/a&gt; now support four Code Mode policies: &lt;em&gt;Off&lt;/em&gt;, &lt;em&gt;Opt-in&lt;/em&gt;, &lt;em&gt;On by default&lt;/em&gt;, and &lt;em&gt;Enforced&lt;/em&gt;. Admins can choose whether Code Mode is unavailable, optional, enabled by default, or required for every session.&lt;/p&gt;
&lt;p&gt;Existing portals retain their current behavior. Portals that previously allowed Code Mode use &lt;em&gt;Opt-in&lt;/em&gt;, while portals that did not allow Code Mode use &lt;em&gt;Off&lt;/em&gt;. New portals also use &lt;em&gt;Opt-in&lt;/em&gt; by default.&lt;/p&gt;
&lt;p&gt;Clients turn on Code Mode for an &lt;em&gt;Opt-in&lt;/em&gt; portal with &lt;code&gt;?codemode=search_and_execute&lt;/code&gt;. The &lt;em&gt;On by default&lt;/em&gt; policy lets clients opt out with &lt;code&gt;?codemode=off&lt;/code&gt;, which avoids nested code execution when a client runs its own Code Mode implementation. The &lt;em&gt;Off&lt;/em&gt; and &lt;em&gt;Enforced&lt;/em&gt; policies ignore client overrides.&lt;/p&gt;
&lt;p&gt;The Cloudflare API exposes these policies through the &lt;code&gt;code_mode&lt;/code&gt; field:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;json&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot; data-nb-lang=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;code_mode&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;default_on&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The supported values are &lt;code&gt;off&lt;/code&gt;, &lt;code&gt;opt_in&lt;/code&gt;, &lt;code&gt;default_on&lt;/code&gt;, and &lt;code&gt;enforced&lt;/code&gt;. The previous &lt;code&gt;allow_code_mode&lt;/code&gt; boolean is deprecated.&lt;/p&gt;
&lt;p&gt;For configuration details and client behavior, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/#code-mode-policies&quot;&gt;Code Mode policies&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Workers - Node.js 24 is now the default for Workers Builds</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-30-workers-builds-nodejs-24/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-30-workers-builds-nodejs-24/</guid><description>&lt;p&gt;Workers Builds now uses Node.js 24.18.0 by default. The build image preinstalls Node.js 22.23.2 and 24.18.0.&lt;/p&gt;
&lt;p&gt;You can continue to override the default with the &lt;code&gt;NODE_VERSION&lt;/code&gt; environment variable, an &lt;code&gt;.nvmrc&lt;/code&gt; file, or a &lt;code&gt;.node-version&lt;/code&gt; file. For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/build-image/#overriding-default-versions&quot;&gt;Override default versions&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare One, Gateway - Control Cloudflare Gateway DNS caching with a maximum TTL setting</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-28-gateway-maximum-dns-ttl/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-28-gateway-maximum-dns-ttl/</guid><description>&lt;p&gt;You can now set a maximum time-to-live (TTL) for DNS responses returned by Gateway. When an upstream DNS record has a TTL that exceeds the configured maximum, Gateway caps it to your specified value. This ensures that DNS policy changes - such as blocking a newly identified malicious domain - take effect faster across all clients.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2170,height=294,format=webp/_astro/gateway-max-ttl-traffic-settings.BRF3NUMp.png&quot; alt=&quot;The maximum DNS TTL setting in Traffic policies &gt; Traffic settings, showing a numeric input field that accepts values between 60 and 36,000 seconds&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2170&quot; height=&quot;294&quot;&gt;
&lt;p&gt;The setting is available at two levels:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Account level&lt;/strong&gt; - In &lt;strong&gt;Traffic Policies&lt;/strong&gt; &amp;gt; &lt;strong&gt;Traffic Settings&lt;/strong&gt;, under &lt;strong&gt;Proxy and inspection&lt;/strong&gt;. This sets the default cap for all DNS locations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Per-location&lt;/strong&gt; - Each &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/resolvers-proxies/&quot;&gt;DNS location&lt;/a&gt; can inherit the account setting, disable the cap, or override it with a custom value.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Two new fields are also available in DNS logs: &lt;code&gt;upstream_record_ttls&lt;/code&gt; (the original TTL from the upstream response) and &lt;code&gt;applied_max_ttl&lt;/code&gt; (the cap Gateway applied). These appear in the DNS logs column picker and in Logpush datasets.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/dns-policies/maximum-dns-ttl/&quot;&gt;Maximum DNS TTL&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category><category>Gateway</category></item><item><title>Workers - Workers tracing — write custom spans with new startActiveSpan() and span.end() runtime APIs</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-28-start-active-span/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-28-start-active-span/</guid><description>
&lt;p&gt;The Workers runtime now provides built-in &lt;code&gt;tracing.startActiveSpan()&lt;/code&gt; and &lt;code&gt;span.end()&lt;/code&gt; APIs, allowing you to write custom spans for operations that last beyond a single callback — for example, instrumenting a stream pipeline where the span should stay open until the stream is fully consumed.&lt;/p&gt;
&lt;p&gt;This augments the &lt;a href=&quot;https://docs.infinitegaming.org/changelog/post/2026-06-16-custom-spans/&quot;&gt;existing API for writing custom spans&lt;/a&gt;, &lt;code&gt;tracing.enterSpan()&lt;/code&gt;, which automatically ends a span when its callback is returned. With &lt;code&gt;startActiveSpan()&lt;/code&gt;, the span remains open after the callback returns, and you call &lt;code&gt;span.end()&lt;/code&gt; when the work is complete:&lt;/p&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;js&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;src/index.js&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { tracing } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;cloudflare:workers&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; encoder&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; TextEncoder&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;	fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; tracing.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;startActiveSpan&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;stream-response&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, (&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;span&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			let&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; timer;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; body&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; ReadableStream&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;				start&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;controller&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;					controller.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;enqueue&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(encoder.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Starting...&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;					timer &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; setTimeout&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(() &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;						controller.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;enqueue&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(encoder.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Complete.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;						controller.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;						span.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;setAttribute&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;stream.status&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;complete&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;						span.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;					}, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;				cancel&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;					if&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (timer &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;!==&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; undefined&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;clearTimeout&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(timer);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;					span.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;setAttribute&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;stream.status&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;cancelled&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;					span.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(body, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				headers: { &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;content-type&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;text/plain&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;src/index.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { tracing } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;cloudflare:workers&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; encoder&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; TextEncoder&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;	fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; tracing.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;startActiveSpan&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;stream-response&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, (&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;span&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			let&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; timer&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; ReturnType&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;typeof&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; setTimeout&gt; &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; undefined&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; body&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; ReadableStream&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Uint8Array&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;				start&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;controller&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;					controller.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;enqueue&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(encoder.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Starting...&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;					timer &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; setTimeout&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(() &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;						controller.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;enqueue&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(encoder.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Complete.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;						controller.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;						span.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;setAttribute&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;stream.status&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;complete&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;						span.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;					}, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;				cancel&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;					if&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (timer &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;!==&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; undefined&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;clearTimeout&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(timer);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;					span.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;setAttribute&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;stream.status&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;cancelled&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;					span.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(body, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				headers: { &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;content-type&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;text/plain&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;&lt;/div&gt;
&lt;p&gt;For more details, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/traces/custom-spans/&quot;&gt;custom spans documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Run integration tests against your Worker&apos;s production build</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-21-integration-test-harness/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-21-integration-test-harness/</guid><description>
&lt;p&gt;Wrangler now provides &lt;code&gt;createTestHarness()&lt;/code&gt;, an API for running integration tests against Workers built with &lt;a href=&quot;https://docs.infinitegaming.org/workers/testing/test-harness/configure/#configure-worker-projects&quot;&gt;Wrangler or the Cloudflare Vite plugin&lt;/a&gt; from any Node.js test runner.&lt;/p&gt;
&lt;p&gt;The test harness starts a local Worker server with &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/api/#createtestharness&quot;&gt;helpers for dispatching requests, resetting storage, and inspecting runtime logs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is useful for tests that need to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/testing/test-harness/interact-with-workers/#test-route-dispatch-across-workers&quot;&gt;Route requests across multiple Workers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/testing/test-harness/integrations/#mock-service-worker&quot;&gt;Mock outbound &lt;code&gt;fetch()&lt;/code&gt; requests&lt;/a&gt; with Node.js request mocking libraries such as &lt;a href=&quot;https://mswjs.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;MSW&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/testing/test-harness/integrations/#playwright&quot;&gt;Run Playwright tests against a Worker&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, this test starts two Workers and mocks an upstream API:&lt;/p&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;js&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;tests/vitest.test.js&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { afterAll, afterEach, beforeAll, test } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;vitest&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { http, HttpResponse } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;msw&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { setupServer } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;msw/node&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { createTestHarness } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;wrangler&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; network&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; setupServer&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; server&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; createTestHarness&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	workers: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		/** Includes `&quot;routes&quot;: [&quot;example.com/*&quot;]` */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		{ configPath: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./workers/web/wrangler.jsonc&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		/** Includes `&quot;routes&quot;: [&quot;api.example.com/v1/*&quot;]` */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		{ configPath: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./workers/api/wrangler.jsonc&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;beforeAll&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;async&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; () &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	network.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;listen&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({ onUnhandledRequest: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;error&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; server.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;listen&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;afterEach&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;async&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; () &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	network.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;resetHandlers&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; server.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;reset&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;afterAll&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;async&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; () &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	network.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; server.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;routes requests to each Worker&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;async&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; ({ &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;expect&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; }) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;	// Mock the outbound fetch used to load user profiles.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	network.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;use&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		http.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;http://identity.example.com/profile/123&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, ({ &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;params&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; }) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; HttpResponse.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({ id: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;123&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, name: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Ada&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; apiWorkerResponse&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; server.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;		&quot;http://api.example.com/v1/users/123&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;	expect&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; apiWorkerResponse.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;()).&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;toEqual&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		id: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;123&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		name: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Ada&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; webWorkerResponse&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; server.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;http://example.com/users/123&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;	expect&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; webWorkerResponse.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;()).&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;toBe&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Profile: Ada&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;tests/vitest.test.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { afterAll, afterEach, beforeAll, test } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;vitest&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { http, HttpResponse } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;msw&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { setupServer } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;msw/node&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { createTestHarness } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;wrangler&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; network&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; setupServer&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; server&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; createTestHarness&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	workers: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		/** Includes `&quot;routes&quot;: [&quot;example.com/*&quot;]` */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		{ configPath: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./workers/web/wrangler.jsonc&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		/** Includes `&quot;routes&quot;: [&quot;api.example.com/v1/*&quot;]` */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		{ configPath: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./workers/api/wrangler.jsonc&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;beforeAll&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;async&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; () &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	network.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;listen&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({ onUnhandledRequest: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;error&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; server.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;listen&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;afterEach&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;async&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; () &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	network.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;resetHandlers&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; server.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;reset&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;afterAll&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;async&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; () &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	network.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; server.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;routes requests to each Worker&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;async&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; ({ &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;expect&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; }) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;	// Mock the outbound fetch used to load user profiles.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	network.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;use&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		http.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;http://identity.example.com/profile/123&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, ({ &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;params&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; }) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; HttpResponse.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({ id: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;123&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, name: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Ada&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; apiWorkerResponse&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; server.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;		&quot;http://api.example.com/v1/users/123&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;	expect&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; apiWorkerResponse.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;()).&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;toEqual&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		id: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;123&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		name: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Ada&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; webWorkerResponse&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; server.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;http://example.com/users/123&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;	expect&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; webWorkerResponse.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;()).&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;toBe&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Profile: Ada&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;&lt;/div&gt;
&lt;p&gt;Cloudflare now recommends &lt;code&gt;createTestHarness()&lt;/code&gt; for integration tests instead of &lt;a href=&quot;https://docs.infinitegaming.org/workers/testing/unstable_startworker/&quot;&gt;&lt;code&gt;unstable_startWorker()&lt;/code&gt;&lt;/a&gt; or &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/api/#unstable_dev&quot;&gt;&lt;code&gt;unstable_dev()&lt;/code&gt;&lt;/a&gt;. To start a development server programmatically, use the Vite &lt;a href=&quot;https://vite.dev/guide/api-javascript.html#createserver&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;createServer()&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; API with the &lt;a href=&quot;https://docs.infinitegaming.org/workers/vite-plugin/&quot;&gt;Cloudflare Vite plugin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For more information about &lt;code&gt;createTestHarness()&lt;/code&gt;, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/workers/testing/test-harness/&quot;&gt;Integration test harness guide&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers, Durable Objects - Filter Durable Object logs and traces by instance ID</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-24-durable-object-instance-observability/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-24-durable-object-instance-observability/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/logs/workers-logs/&quot;&gt;Workers Logs&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/observability/export/opentelemetry/&quot;&gt;OpenTelemetry&lt;/a&gt; spans for &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/&quot;&gt;Durable Object&lt;/a&gt; requests include the Durable Object instance ID.&lt;/p&gt;
&lt;p&gt;Use &lt;code&gt;$workers.durableObjectId&lt;/code&gt; to filter logs for a specific instance. Root and child spans include the same ID in &lt;code&gt;cloudflare.durable_object.id&lt;/code&gt;.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2000,height=666,format=webp/_astro/2026-07-24-durable-object-trace-filter.DW-BwlKL.png&quot; alt=&quot;Query Builder filtering traces by Durable Object instance ID&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2000&quot; height=&quot;666&quot;&gt;
&lt;p&gt;Use these fields to isolate a specific instance and correlate its logs and traces.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/observability/metrics-and-analytics/&quot;&gt;Durable Objects metrics and analytics&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/traces/spans-and-attributes/&quot;&gt;Workers tracing spans and attributes&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category><category>Durable Objects</category></item><item><title>Workers - Workers Builds now skips superseded queued builds</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-24-skip-superseded-builds/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-24-skip-superseded-builds/</guid><description>&lt;p&gt;Workers Builds now automatically skips a queued build when a newer build for the same build trigger is also queued.&lt;/p&gt;</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Windows (version 2026.6.880.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-21-warp-windows-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-21-warp-windows-ga/</guid><description>&lt;p&gt;A new GA release for the Windows Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This hotfix resolves a regression that caused a large increase in DNS-over-TCP queries to fallback and internal DNS servers. The client now sends fallback DNS queries over UDP first, falling back to TCP only when a response is truncated, instead of querying both protocols in parallel.&lt;/p&gt;
</description><pubDate>Tue, 21 Jul 2026 16:55:55 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - Cloudflare One Client for macOS (version 2026.6.880.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-21-warp-macos-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-21-warp-macos-ga/</guid><description>&lt;p&gt;A new GA release for the macOS Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This hotfix resolves a regression that caused a large increase in DNS-over-TCP queries to fallback and internal DNS servers. The client now sends fallback DNS queries over UDP first, falling back to TCP only when a response is truncated, instead of querying both protocols in parallel.&lt;/p&gt;
</description><pubDate>Tue, 21 Jul 2026 16:55:55 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Linux (version 2026.6.880.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-21-warp-linux-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-21-warp-linux-ga/</guid><description>&lt;p&gt;A new GA release for the Linux Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This hotfix resolves a regression that caused a large increase in DNS-over-TCP queries to fallback and internal DNS servers. The client now sends fallback DNS queries over UDP first, falling back to TCP only when a response is truncated, instead of querying both protocols in parallel.&lt;/p&gt;
</description><pubDate>Tue, 21 Jul 2026 16:50:41 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Access - Browser-based login for plaintext HTTP private applications</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-20-http-private-apps-l7-auth/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-20-http-private-apps-l7-auth/</guid><description>&lt;p&gt;Cloudflare Access now uses the standard browser-based login flow for &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/non-http/self-hosted-private-app/&quot;&gt;private applications&lt;/a&gt; served over plaintext HTTP on port &lt;code&gt;80&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Previously, plaintext HTTP private apps fell back to the same session flow used for SSH, RDP, and other non-HTTP protocols: users got an &lt;code&gt;Authentication required&lt;/code&gt; pop-up from the Cloudflare One Client, then had to select the notification to open a browser and log in. Now, users hitting an HTTP private app see the Access login page directly in the browser and receive a standard Access &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/http-apps/authorization-cookie/application-token/&quot;&gt;application token&lt;/a&gt; on success.&lt;/p&gt;
&lt;p&gt;This brings the HTTP experience in line with HTTPS apps (with &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/tls-decryption/&quot;&gt;Gateway TLS decryption&lt;/a&gt; turned on). No configuration change is required. The Cloudflare One Client is still required to route traffic to the private network, but it no longer manages the Access session for HTTP apps.&lt;/p&gt;
&lt;p&gt;Other non-HTTP protocols (SSH, RDP, arbitrary TCP/UDP) continue to use the Cloudflare One Client notification flow.&lt;/p&gt;</description><pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Billing, Workers - Budget alerts now on by default for Pay-as-you-go accounts</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-15-budget-alerts-default-on/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-15-budget-alerts-default-on/</guid><description>&lt;p&gt;We are turning on budget alerts by default for eligible Pay-as-you-go accounts. If your account does not already have a budget alert, Cloudflare will create one for you with a $10 account-level threshold. Your default alert will enable at the turn of your next billing cycle, so it will not fire based on usage you have already incurred.&lt;/p&gt;
&lt;p&gt;We are rolling this out in cohorts over the coming weeks, so eligible accounts may see their default alert appear at different times.&lt;/p&gt;
&lt;p&gt;The default alert behaves exactly like an alert you would create yourself. When your cumulative usage-based spend this cycle reaches the threshold, you receive an email notification. The alert is informational only. It does not cap your usage or impact your account in any way.&lt;/p&gt;
&lt;p&gt;Usage is processed once per day for the prior day&apos;s activity, so budget alerts fire the day after the threshold is reached rather than in real time.&lt;/p&gt;
&lt;p&gt;Budget alerts only consider spend on usage-based products. Recurring subscription fees, such as the Workers Paid plan fee or other monthly plan charges, are not included in the threshold calculation.&lt;/p&gt;
&lt;p&gt;You can change the threshold, add additional alerts, or remove the default alert entirely from &lt;strong&gt;Manage Account&lt;/strong&gt; &amp;gt; &lt;strong&gt;Billing&lt;/strong&gt; &amp;gt; &lt;strong&gt;Billable Usage&lt;/strong&gt;, or from your Notifications settings. If you already configured your own budget alert, nothing changes.&lt;/p&gt;
&lt;p&gt;Enterprise contract accounts are not in scope.&lt;/p&gt;
&lt;p&gt;For more information, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/billing/manage/budget-alerts/&quot;&gt;Budget alerts documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate><product>Billing</product><category>Billing</category><category>Workers</category></item><item><title>Cloudflare One Appliance, Cloudflare One, Cloudflare WAN - Restart, reboot, or shut down a Cloudflare One Appliance from the dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-17-appliance-restart-reboot-shutdown/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-17-appliance-restart-reboot-shutdown/</guid><description>&lt;p&gt;You can now restart, reboot, or shut down a &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/&quot;&gt;Cloudflare One Appliance&lt;/a&gt; directly from the dashboard or via API.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1800,height=948,format=webp/_astro/2026-07-17-appliance-restart-reboot-shutdown.DKqTLOh6.gif&quot; alt=&quot;Restarting a Cloudflare One Appliance from the Operations section of the Edit Appliance page&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;948&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Restart&lt;/strong&gt; — Restart managed services. Purges temporary and (optionally) persistent state.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reboot&lt;/strong&gt; — Power cycle the appliance. Optionally, purge persistent state. Re-applies configuration starting from scratch.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shutdown&lt;/strong&gt; — Power off the appliance. Optionally, purge persistent state. The machine will be offline until manually powered on again.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the dashboard, go to &lt;strong&gt;Networking&lt;/strong&gt; &amp;gt; &lt;strong&gt;Connectors&lt;/strong&gt; &amp;gt; &lt;strong&gt;Appliances&lt;/strong&gt;, select an appliance, then &lt;strong&gt;Edit&lt;/strong&gt; &amp;gt; &lt;strong&gt;Operations&lt;/strong&gt; to send an operation. Via API, &lt;code&gt;POST&lt;/code&gt; to the &lt;code&gt;/accounts/{account_id}/magic/connectors/{connector_id}/interrupts&lt;/code&gt; endpoint.&lt;/p&gt;
&lt;p&gt;For details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/maintenance/appliance-operations/&quot;&gt;Appliance operations&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate><product>Cloudflare One Appliance</product><category>Cloudflare One Appliance</category><category>Cloudflare One</category><category>Cloudflare WAN</category></item><item><title>Gateway - New header control options for Gateway HTTP policies</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-17-http-request-header-manipulation/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-17-http-request-header-manipulation/</guid><description>&lt;p&gt;Cloudflare Gateway now supports advanced header control on &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/#allow&quot;&gt;Allow policies&lt;/a&gt;. Administrators can add, overwrite, or delete headers on matching requests using static values or dynamic variables.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;header-operations&quot;&gt;Header operations&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#header-operations&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Gateway HTTP policies using the Allow action support three operations in &lt;code&gt;rule_settings&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Operation&lt;/th&gt;
&lt;th&gt;API field&lt;/th&gt;
&lt;th&gt;Behavior&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Add&lt;/td&gt;
&lt;td&gt;&lt;code&gt;add_headers&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Appends a value to the header. Existing values are preserved.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Overwrite&lt;/td&gt;
&lt;td&gt;&lt;code&gt;set_headers&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Replaces the header value. Creates the header if it does not exist.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delete&lt;/td&gt;
&lt;td&gt;&lt;code&gt;delete_headers&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Removes the header from the request.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Gateway applies operations in order: delete, then overwrite, then add.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;dynamic-variables&quot;&gt;Dynamic variables&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#dynamic-variables&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Header values can include dynamic variables using the &lt;code&gt;@{...}&lt;/code&gt; syntax. Gateway resolves variables at request time from identity, device, and network context.&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Variable&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@{identity.email}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;User email from the identity provider&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@{identity.name}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;User display name from the identity provider&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@{identity.id}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cloudflare identity UUID&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@{identity.groups}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Identity provider group memberships&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@{identity.SAML}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;SAML attributes (if configured)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@{identity.OIDC}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;OIDC claims (if configured)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@{source.ip}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Source IP of the connection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@{destination.ip}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Destination IP of the request&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@{device.id}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cloudflare One Client device UUID&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@{device.posture}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Device posture check results (JSON string)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;You can mix static text and dynamic variables in a single header value. For example, &lt;code&gt;user-@{identity.email}&lt;/code&gt; resolves to &lt;code&gt;user-jdoe@example.com&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/tenant-control/&quot;&gt;Custom headers&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Access, Cloudflare One - Bulk print PDFs for browser-based RDP</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-16-rdp-bulk-print/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-16-rdp-bulk-print/</guid><description>&lt;p&gt;Users in browser-based RDP sessions can now print multiple PDF files as a single print job. Copy the files to your clipboard on the remote machine, then select &lt;strong&gt;Print all PDFs&lt;/strong&gt; in the clipboard panel. The files are combined into one PDF and sent to your local printer.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=768,height=432,format=webp/_astro/rdp-bulk-print.DT4sCcI-.png&quot; alt=&quot;The clipboard panel showing the Print all PDFs option for multiple selected PDF files.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;768&quot; height=&quot;432&quot;&gt;
&lt;p&gt;Bulk print is available in Chromium-based browsers and Firefox. For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/use-cases/rdp/rdp-browser/#print-pdfs&quot;&gt;Print PDFs for browser-based RDP&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category><category>Cloudflare One</category></item><item><title>Gateway, DNS - Internal DNS is now generally available</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-15-internal-dns-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-15-internal-dns-ga/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/dns/internal-dns/&quot;&gt;Internal DNS&lt;/a&gt; is now generally available. Internal DNS provides authoritative and recursive DNS for private networks on the same global network and control plane you already use for public DNS, Zero Trust, and application services.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;why-it-matters&quot;&gt;Why it matters&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#why-it-matters&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Consolidate DNS operations.&lt;/strong&gt; Public and private DNS run on one platform, with one API, one audit trail, and one place to set policy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simplify split-horizon DNS.&lt;/strong&gt; Internal and external resolution are defined as separate &lt;a href=&quot;https://docs.infinitegaming.org/dns/internal-dns/dns-views/&quot;&gt;views&lt;/a&gt; over shared zones, managed from a single control plane — so there is no drift to chase down.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extend Zero Trust to DNS.&lt;/strong&gt; Resolver policies decide which users and devices resolve against which view, enforced by the same &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/&quot;&gt;Gateway&lt;/a&gt; that already governs the rest of your traffic.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Setting up Internal DNS takes three steps: create a zone, create a view, and define a resolver policy.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;json&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot; data-nb-lang=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;POST /zones&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;account&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;    &quot;id&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&amp;lt;ACCOUNT_ID&amp;gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;corp.internal&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;type&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;internal&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Internal DNS is included with &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/&quot;&gt;Cloudflare Gateway&lt;/a&gt; for Enterprise customers. To get started, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/dns/internal-dns/&quot;&gt;Internal DNS documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category><category>DNS</category></item><item><title>Workers - Platforms can now create Temporary Accounts via the Cloudflare API</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-14-temporary-accounts-api/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-14-temporary-accounts-api/</guid><description>&lt;p&gt;Platforms can now create temporary preview accounts through the Cloudflare REST API. This lets your platform deploy a live Worker before the user signs in to Cloudflare.&lt;/p&gt;
&lt;p&gt;With the Temporary Accounts API, coding agents, AI app builders, and other platforms can build a similar flow for generated Workers and supported resources.&lt;/p&gt;
&lt;p&gt;Your platform can keep users in its onboarding flow while they generate, deploy, and test an application. Users do not need an existing Cloudflare account, and your platform does not need write access to one.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1748,height=368,format=webp/_astro/claim-deployments-flow.Co0tUHG4.png&quot; alt=&quot;Diagram showing an AI agent deploying, verifying, and redeploying a Worker in a temporary account, then a user authenticating and claiming the account to keep its resources&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1748&quot; height=&quot;368&quot;&gt;
&lt;p&gt;The API returns a claim URL that lets the user make the temporary account and its resources permanent.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.cloudflare.com/drop/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Drop&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; demonstrates this preview-and-claim pattern for static sites. Someone can upload a site, test and share it for one hour, then sign in or create an account only when they want to keep it.&lt;/p&gt;
&lt;p&gt;This API expands the flow first introduced with &lt;a href=&quot;https://docs.infinitegaming.org/changelog/post/2026-06-19-temporary-accounts-for-agents/&quot;&gt;&lt;code&gt;wrangler deploy --temporary&lt;/code&gt;&lt;/a&gt;. Your backend now controls the provisioning and deployment experience directly:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Show Cloudflare&apos;s Terms of Service and Privacy Policy in your product, and require the user to accept them.&lt;/li&gt;
&lt;li&gt;Request and solve a proof-of-work challenge.&lt;/li&gt;
&lt;li&gt;Create a temporary preview account.&lt;/li&gt;
&lt;li&gt;Deploy with the returned temporary account ID and API token.&lt;/li&gt;
&lt;li&gt;Show the deployed Worker URL and claim URL to the user.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;https://api.cloudflare.com/client/v4/provisioning/previews/challenge&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  -X&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; POST&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  -H&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;Content-Type: application/json&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  --data&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &apos;{}&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;https://api.cloudflare.com/client/v4/provisioning/previews&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  -X&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; POST&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  -H&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;Content-Type: application/json&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  --data&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &apos;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;    &quot;termsOfService&quot;: &quot;https://www.cloudflare.com/terms/&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;    &quot;privacyPolicy&quot;: &quot;https://www.cloudflare.com/privacypolicy/&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;    &quot;acceptTermsOfService&quot;: &quot;yes&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;    &quot;challengeToken&quot;: &quot;&amp;lt;CHALLENGE_TOKEN&amp;gt;&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;    &quot;solution&quot;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;      &quot;checkpoints&quot;: &quot;&amp;lt;BASE64_CHECKPOINTS&amp;gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;  }&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;For the complete API flow, proof-of-work requirements, supported products, and limits, refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/platform/claim-deployments/#integrate-with-the-rest-api&quot;&gt;Claim deployments (temporary accounts)&lt;/a&gt;. For the background and design goals behind this flow, refer to &lt;a href=&quot;https://blog.cloudflare.com/temporary-accounts/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Temporary Cloudflare Accounts for AI agents&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Data Loss Prevention - Source code detection improvements</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-10-source-code-detection-improvements/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-10-source-code-detection-improvements/</guid><description>&lt;p&gt;Data Loss Prevention (DLP) source code detection now focuses on identifying whole source code file uploads and downloads. Previously, source code detection performed partial scans resulting in a higher rate of false positives. Since only whole source code files are evaluated, code embedded in other content — such as chat messages, documentation, or code samples — is no longer flagged as source code, removing a common source of false positives.&lt;/p&gt;
&lt;p&gt;Source code detection requires a minimum of 500 characters to evaluate a file. Files below this threshold are not flagged to reduce noise. This threshold filters out small fragments that lack enough context for reliable classification.&lt;/p&gt;
&lt;p&gt;Enable and set &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/dlp-profiles/advanced-settings/#confidence-thresholds&quot;&gt;confidence levels&lt;/a&gt; to tune match sensitivity. A higher confidence level reduces false positives by requiring stronger signals that the content is truly source code. A lower confidence level catches more files at the cost of additional noise.&lt;/p&gt;
&lt;p&gt;Source code detection applies to standalone source code files in &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/&quot;&gt;Gateway HTTP policies&lt;/a&gt;. It does not detect source code embedded within other file types or payloads, such as &lt;code&gt;.docx&lt;/code&gt; files or chat messages.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/dlp-profiles/predefined-profiles/#source-code&quot;&gt;Source Code predefined profiles&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate><product>Data Loss Prevention</product><category>Data Loss Prevention</category></item><item><title>Digital Experience Monitoring - Wi-Fi signal and network performance analytics for Cloudflare One Client devices</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-09-warp-wifi-network-performance-analytics/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-09-warp-wifi-network-performance-analytics/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/dex/&quot;&gt;Digital Experience Monitoring (DEX)&lt;/a&gt; provides visibility into device, network, and application performance across your Cloudflare SASE deployment.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;Device Monitoring&lt;/strong&gt; page now analyzes hardware and network data between a Cloudflare One Client device and Cloudflare&apos;s edge, so you can diagnose connectivity and performance issues. Previously, this data was only available in raw DEX Device State Event logs, which required you to build your own analytics to interpret it.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1652,height=664,format=webp/_astro/dex-device-monitoring-summary.CBxeSd6b.png&quot; alt=&quot;Device Monitoring summary with connection status, connection mode, Wi-Fi signal strength, traffic performance, and device health&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1652&quot; height=&quot;664&quot;&gt;
&lt;p&gt;A summary at the top of the page shows the health of each category at a glance, using &lt;strong&gt;Good&lt;/strong&gt;, &lt;strong&gt;Fair&lt;/strong&gt;, and &lt;strong&gt;Poor&lt;/strong&gt; labels:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Connection&lt;/strong&gt; — connection status, Cloudflare One Client mode, and tunnel type over time&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wi-Fi signal strength&lt;/strong&gt; — signal measured in dBm over time, with thresholds that flag a weak signal&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traffic performance&lt;/strong&gt; — upstream and downstream performance, including network throughput on the active interface&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Device health&lt;/strong&gt; — hardware metrics such as CPU, memory, and disk&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1666,height=732,format=webp/_astro/dex-device-monitoring-wifi-network.CoEBznAm.png&quot; alt=&quot;Wi-Fi signal strength and network throughput charts on the Device Monitoring page&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1666&quot; height=&quot;732&quot;&gt;
&lt;p&gt;You can filter by category and adjust the time range to correlate a device&apos;s metrics with a user&apos;s reported issue.&lt;/p&gt;
&lt;p&gt;These analytics are available to all Cloudflare One customers at no additional cost.&lt;/p&gt;
&lt;p&gt;To learn more, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/dex/monitoring/&quot;&gt;DEX monitoring documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate><product>Digital Experience Monitoring</product><category>Digital Experience Monitoring</category></item><item><title>Cloudflare Tunnel, Cloudflare Tunnel for SASE, Cloudflare Mesh - Zero Trust Networks route endpoints and Cloudflare Tunnel connections field retiring on October 5, 2026</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-09-tunnel-routes-and-connections-api-changes/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-09-tunnel-routes-and-connections-api-changes/</guid><description>&lt;p&gt;On &lt;strong&gt;October 5, 2026&lt;/strong&gt;, two changes take effect across the &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/networks/&quot;&gt;Zero Trust Networks API&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/tunnels/&quot;&gt;Cloudflare Tunnel API&lt;/a&gt;: the CIDR-encoded route endpoints are removed, and tunnel list and get responses no longer include the &lt;code&gt;connections&lt;/code&gt; field. If you manage private network routes or read tunnel connection details through the API, &lt;code&gt;cloudflared&lt;/code&gt;, Terraform, or another integration, review the changes in the following sections and migrate before the removal date.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;route-endpoints&quot;&gt;Route endpoints&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#route-endpoints&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The CIDR-encoded route endpoints are deprecated in favor of the standard, &lt;code&gt;route_id&lt;/code&gt;-based endpoints that already exist today. Both sets of endpoints route a private network through &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/&quot;&gt;Cloudflare Tunnel&lt;/a&gt; or &lt;a href=&quot;https://docs.infinitegaming.org/mesh/&quot;&gt;Cloudflare Mesh&lt;/a&gt; (the API still refers to Mesh nodes as &lt;code&gt;warp_connector&lt;/code&gt;) — only the request shape changes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deprecated endpoints (removed October 5, 2026):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create a tunnel route (CIDR Endpoint): &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/networks/subresources/routes/subresources/networks/methods/create/&quot;&gt;&lt;code&gt;POST /accounts/{account_id}/teamnet/routes/network/{ip_network_encoded}&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update a tunnel route (CIDR Endpoint): &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/networks/subresources/routes/subresources/networks/methods/edit/&quot;&gt;&lt;code&gt;PATCH /accounts/{account_id}/teamnet/routes/network/{ip_network_encoded}&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delete a tunnel route (CIDR Endpoint): &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/networks/subresources/routes/subresources/networks/methods/delete/&quot;&gt;&lt;code&gt;DELETE /accounts/{account_id}/teamnet/routes/network/{ip_network_encoded}&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Replacement endpoints:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create a tunnel route: &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/networks/subresources/routes/methods/create/&quot;&gt;&lt;code&gt;POST /accounts/{account_id}/teamnet/routes&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update a tunnel route: &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/networks/subresources/routes/methods/edit/&quot;&gt;&lt;code&gt;PATCH /accounts/{account_id}/teamnet/routes/{route_id}&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delete a tunnel route: &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/networks/subresources/routes/methods/delete/&quot;&gt;&lt;code&gt;DELETE /accounts/{account_id}/teamnet/routes/{route_id}&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;what-is-changing&quot;&gt;What is changing&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#what-is-changing&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;text-align: left&quot;&gt;&lt;/th&gt;
&lt;th style=&quot;text-align: left&quot;&gt;Deprecated (CIDR-encoded path)&lt;/th&gt;
&lt;th style=&quot;text-align: left&quot;&gt;Replacement&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: left&quot;&gt;Route identifier&lt;/td&gt;
&lt;td style=&quot;text-align: left&quot;&gt;URL-encoded CIDR in the path (&lt;code&gt;/network/{ip_network_encoded}&lt;/code&gt;)&lt;/td&gt;
&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;route_id&lt;/code&gt; in the path (&lt;code&gt;network&lt;/code&gt; moves to the request body on create)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: left&quot;&gt;Create&lt;/td&gt;
&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;POST .../teamnet/routes/network/{ip_network_encoded}&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;POST .../teamnet/routes&lt;/code&gt; with &lt;code&gt;network&lt;/code&gt; and &lt;code&gt;tunnel_id&lt;/code&gt; in the body&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: left&quot;&gt;Update&lt;/td&gt;
&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;PATCH .../teamnet/routes/network/{ip_network_encoded}&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;PATCH .../teamnet/routes/{route_id}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: left&quot;&gt;Delete&lt;/td&gt;
&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;DELETE .../teamnet/routes/network/{ip_network_encoded}&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;DELETE .../teamnet/routes/{route_id}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;action-required&quot;&gt;Action required&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#action-required&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Capture each route&apos;s &lt;code&gt;route_id&lt;/code&gt; by calling &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/networks/subresources/routes/methods/list/&quot;&gt;List tunnel routes&lt;/a&gt;, or read it from the response the first time you create a route with the replacement endpoint.&lt;/li&gt;
&lt;li&gt;Update any scripts, backend services, or CI/CD pipelines that call the CIDR-encoded endpoints directly.&lt;/li&gt;
&lt;li&gt;If you manage routes with the &lt;code&gt;cloudflared tunnel route ip add | delete&lt;/code&gt; commands, upgrade &lt;code&gt;cloudflared&lt;/code&gt; to the &lt;a href=&quot;https://github.com/cloudflare/cloudflared/releases&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;latest version&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;If you manage routes with Terraform, make sure you are on a current version of the &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/zero_trust_tunnel_cloudflared_route&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_zero_trust_tunnel_cloudflared_route&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; resource and the &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Terraform provider&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Before: create a route by URL-encoding the CIDR into the path&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; https://api.cloudflare.com/client/v4/accounts/&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$ACCOUNT_ID&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;/teamnet/routes/network/172.16.0.0%2F16&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;     -H&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &apos;Content-Type: application/json&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;     -H&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;Authorization: Bearer &lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$CLOUDFLARE_API_TOKEN&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;     -d&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &apos;{&quot;tunnel_id&quot;: &quot;&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$TUNNEL_ID&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;&quot;, &quot;comment&quot;: &quot;Example comment for this route.&quot;}&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# After: create a route with the network in the request body&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; https://api.cloudflare.com/client/v4/accounts/&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$ACCOUNT_ID&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;/teamnet/routes&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;     -H&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &apos;Content-Type: application/json&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;     -H&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;Authorization: Bearer &lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$CLOUDFLARE_API_TOKEN&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;     -d&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &apos;{&quot;network&quot;: &quot;172.16.0.0/16&quot;, &quot;tunnel_id&quot;: &quot;&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$TUNNEL_ID&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;&quot;, &quot;comment&quot;: &quot;Example comment for this route.&quot;}&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# After: update or delete a route using its route_id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; -X&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; PATCH&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; https://api.cloudflare.com/client/v4/accounts/&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$ACCOUNT_ID&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;/teamnet/routes/&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$ROUTE_ID &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;\&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;     -H&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &apos;Content-Type: application/json&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;     -H&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;Authorization: Bearer &lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$CLOUDFLARE_API_TOKEN&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;     -d&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &apos;{&quot;comment&quot;: &quot;Updated comment for this route.&quot;}&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; -X&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; DELETE&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; https://api.cloudflare.com/client/v4/accounts/&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$ACCOUNT_ID&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;/teamnet/routes/&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$ROUTE_ID &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;\&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;     -H&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;Authorization: Bearer &lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$CLOUDFLARE_API_TOKEN&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;cloudflare-tunnel-and-cloudflare-mesh-connections&quot;&gt;Cloudflare Tunnel and Cloudflare Mesh connections&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#cloudflare-tunnel-and-cloudflare-mesh-connections&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Starting the same day, the &lt;code&gt;connections&lt;/code&gt; array is removed from list and get responses for &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/&quot;&gt;Cloudflare Tunnel&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/mesh/&quot;&gt;Cloudflare Mesh&lt;/a&gt; nodes (the &lt;code&gt;cfd_tunnel&lt;/code&gt; and &lt;code&gt;warp_connector&lt;/code&gt; API resources). Query the dedicated connections endpoint instead of reading the field off the tunnel or node object.&lt;/p&gt;
&lt;p&gt;This affects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/tunnels/subresources/cloudflared/methods/list/&quot;&gt;&lt;code&gt;GET /accounts/{account_id}/cfd_tunnel&lt;/code&gt;&lt;/a&gt; — &lt;code&gt;connections&lt;/code&gt; removed from each item in &lt;code&gt;result&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/tunnels/subresources/cloudflared/methods/get/&quot;&gt;&lt;code&gt;GET /accounts/{account_id}/cfd_tunnel/{tunnel_id}&lt;/code&gt;&lt;/a&gt; — &lt;code&gt;connections&lt;/code&gt; removed from &lt;code&gt;result&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/tunnels/subresources/warp_connector/methods/list/&quot;&gt;&lt;code&gt;GET /accounts/{account_id}/warp_connector&lt;/code&gt;&lt;/a&gt; — &lt;code&gt;connections&lt;/code&gt; removed from each item in &lt;code&gt;result&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/tunnels/subresources/warp_connector/methods/get/&quot;&gt;&lt;code&gt;GET /accounts/{account_id}/warp_connector/{tunnel_id}&lt;/code&gt;&lt;/a&gt; — &lt;code&gt;connections&lt;/code&gt; removed from &lt;code&gt;result&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;action-required-1&quot;&gt;Action required&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#action-required-1&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Fetch connection details from the tunnel-specific connections endpoint instead of parsing it off the list or get response. For Cloudflare Tunnel, call &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/tunnels/subresources/cloudflared/subresources/connections/methods/get/&quot;&gt;&lt;code&gt;GET /accounts/{account_id}/cfd_tunnel/{tunnel_id}/connections&lt;/code&gt;&lt;/a&gt;. For Cloudflare Mesh, call &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/tunnels/subresources/warp_connector/subresources/connections/methods/get/&quot;&gt;&lt;code&gt;GET /accounts/{account_id}/warp_connector/{tunnel_id}/connections&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Before: read connections off the tunnel object&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; https://api.cloudflare.com/client/v4/accounts/&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$ACCOUNT_ID&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;/cfd_tunnel/&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$TUNNEL_ID &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;\&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;     -H&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;Authorization: Bearer &lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$CLOUDFLARE_API_TOKEN&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# After: query connections directly&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; https://api.cloudflare.com/client/v4/accounts/&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$ACCOUNT_ID&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;/cfd_tunnel/&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$TUNNEL_ID&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;/connections&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;     -H&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;Authorization: Bearer &lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$CLOUDFLARE_API_TOKEN&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Update any dashboards, monitoring scripts, or automation that parses &lt;code&gt;connections&lt;/code&gt; from the tunnel list or get response. &lt;code&gt;cloudflared&lt;/code&gt; and the Cloudflare Terraform provider do not read this field, so no changes are required on their side for this part of the update.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;why-we-are-making-these-changes&quot;&gt;Why we are making these changes&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#why-we-are-making-these-changes&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Smaller, faster responses.&lt;/strong&gt; Cloudflare Tunnel and Cloudflare Mesh nodes with many connections no longer inflate every list and get call — connection detail is only fetched when you need it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A single way to identify a route.&lt;/strong&gt; Consolidating on &lt;code&gt;route_id&lt;/code&gt; removes the need to URL-encode CIDR ranges into the path and matches how every other resource in the Zero Trust Networks API is addressed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consistency across the API.&lt;/strong&gt; Both changes align these endpoints with Cloudflare&apos;s standard REST conventions for resource identifiers and nested detail endpoints.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To learn more, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/networks/&quot;&gt;Zero Trust Networks API&lt;/a&gt;, the &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/tunnels/&quot;&gt;Cloudflare Tunnel API&lt;/a&gt;, and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/routes/&quot;&gt;Routes&lt;/a&gt; documentation.&lt;/p&gt;</description><pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate><product>Cloudflare Tunnel</product><category>Cloudflare Tunnel</category><category>Cloudflare Tunnel for SASE</category><category>Cloudflare Mesh</category></item><item><title>Workers - Send npm package dependency metadata with Worker uploads</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-07-wrangler-deploy-upload-dependencies-metadata/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-07-wrangler-deploy-upload-dependencies-metadata/</guid><description>
&lt;p&gt;Wrangler now collects npm package dependency information from your project&apos;s &lt;code&gt;package.json&lt;/code&gt; during &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/general/#deploy&quot;&gt;&lt;code&gt;wrangler deploy&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/general/#upload&quot;&gt;&lt;code&gt;wrangler versions upload&lt;/code&gt;&lt;/a&gt;, and includes it in the upload metadata sent to the Cloudflare API. This data, each dependency&apos;s name, declared version range, and exact installed version, enables dependency analytics and future supply chain security features such as vulnerability alerting.&lt;/p&gt;
&lt;p&gt;To opt out, set &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/configuration/#top-level-only-keys&quot;&gt;&lt;code&gt;dependencies_instrumentation.enabled&lt;/code&gt;&lt;/a&gt; to &lt;code&gt;false&lt;/code&gt; in your Wrangler configuration file:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;dependencies_instrumentation&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;enabled&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;false&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;dependencies_instrumentation&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;enabled = &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;false&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;For more details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/configuration/#top-level-only-keys&quot;&gt;Wrangler configuration&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare One, Cloudflare WAN - IPsec downgrade protection (beta)</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-08-ipsec-downgrade-protection/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-08-ipsec-downgrade-protection/</guid><description>&lt;p&gt;Cloudflare IPsec now supports the &lt;a href=&quot;https://datatracker.ietf.org/doc/draft-ietf-ipsecme-ikev2-downgrade-prevention/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;IKE_SA_INIT_FULL_TRANSCRIPT_AUTH&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; IKEv2 extension to protect against downgrade attacks on IPsec tunnels.&lt;/p&gt;
&lt;p&gt;IKEv2&apos;s original authentication design has each endpoint sign only its own outbound messages, not the full handshake transcript. A quantum-capable &lt;a href=&quot;https://www.cloudflare.com/learning/security/threats/on-path-attack/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;on-path attacker&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; can exploit this to bypass post-quantum key exchange by downgrading the connection to classical cryptography. The &lt;code&gt;IKE_SA_INIT_FULL_TRANSCRIPT_AUTH&lt;/code&gt; extension addresses this by having both peers sign the entire handshake transcript during the authentication exchange, preventing an attacker from manipulating the negotiation without detection.&lt;/p&gt;
&lt;p&gt;Key details:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Available in beta for Cloudflare WAN and Magic Transit IPsec tunnels.&lt;/li&gt;
&lt;li&gt;Cloudflare sends the &lt;code&gt;IKE_SA_INIT_FULL_TRANSCRIPT_AUTH&lt;/code&gt; notification unconditionally as a responder when the feature flag is enabled.&lt;/li&gt;
&lt;li&gt;Both the initiator (your device) and responder (Cloudflare) must support the extension for downgrade protection to be effective.&lt;/li&gt;
&lt;li&gt;This feature is currently gated by a per-account feature flag. Contact your account team to turn it on.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/reference/gre-ipsec-tunnels/#improved-downgrade-protection-beta&quot;&gt;Downgrade protection&lt;/a&gt; for more details.&lt;/p&gt;</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category><category>Cloudflare WAN</category></item><item><title>Cloudflare Network Firewall, Magic Transit, Cloudflare WAN - IP lists, IDS, and SIP rules supported in Unified Routing</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-08-unified-routing-iplist-ids-sip/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-08-unified-routing-iplist-ids-sip/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-network-firewall/&quot;&gt;Cloudflare Advanced Network Firewall&lt;/a&gt; IP lists, IDS, and SIP rules are now supported for accounts using &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/reference/traffic-steering/#unified-routing&quot;&gt;Unified Routing&lt;/a&gt; mode. These features require a Cloudflare Advanced Network Firewall subscription.&lt;/p&gt;
&lt;p&gt;Support for additional features - Threat Intel Lists, Rate Limiting, and Managed Rulesets - is planned.&lt;/p&gt;
&lt;p&gt;For the full list of current beta limitations, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/reference/traffic-steering/#check-feature-availability-before-upgrading&quot;&gt;Traffic steering beta limitations&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate><product>Cloudflare Network Firewall</product><category>Cloudflare Network Firewall</category><category>Magic Transit</category><category>Cloudflare WAN</category></item><item><title>Workers - Cloudflare Drop</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-08-cloudflare-drag-and-drop/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-08-cloudflare-drag-and-drop/</guid><description>&lt;p&gt;&lt;a href=&quot;https://cloudflare.com/drop&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Drop&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; lets you deploy a static site to Cloudflare without requiring a Cloudflare account to get started.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2498,height=1294,format=webp/_astro/cloudflare-drag-and-drop-upload.KujM69eS.png&quot; alt=&quot;Cloudflare Drag and Drop upload screen for browsing folders or ZIP files&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2498&quot; height=&quot;1294&quot;&gt;
&lt;p&gt;Upload a folder or zip file of static assets (static HTML, CSS, JavaScript, images, and fonts) and get a temporary live preview that stays live for 1 hour. During that window, you can test the site, share the preview URL, or &lt;a href=&quot;https://docs.infinitegaming.org/workers/platform/claim-deployments/&quot;&gt;claim the deployment&lt;/a&gt; to keep it.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2936,height=1594,format=webp/_astro/cloudflare-drag-and-drop-preview.BQ1__XRX.png&quot; alt=&quot;Cloudflare Drag and Drop temporary live preview screen with claim and copy claim link actions&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2936&quot; height=&quot;1594&quot;&gt;
&lt;p&gt;When you are ready to make the deployment permanent, click &lt;strong&gt;Claim&lt;/strong&gt; to sign in or create a Cloudflare account. You can claim the site into an existing Cloudflare account or create a new account for the deployment.&lt;/p&gt;
&lt;aside role=&quot;note&quot; aria-label=&quot;Note&quot; class=&quot;aside-card flex items-start gap-3 rounded-lg px-4 py-3 my-4&quot; style=&quot;--_c: var(--nb-info); --_t: var(--nb-info-muted);&quot; data-astro-cid-znle5jil&gt;&lt;span class=&quot;flex h-[1.375em] shrink-0 items-center&quot; aria-hidden=&quot;true&quot; data-astro-cid-znle5jil&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[1em] w-[1em]&quot; data-astro-cid-znle5jil=&quot;true&quot; data-icon=&quot;ph:info&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24m0 192a88 88 0 1 1 88-88a88.1 88.1 0 0 1-88 88m16-40a8 8 0 0 1-8 8a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 8 8m-32-92a12 12 0 1 1 12 12a12 12 0 0 1-12-12&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div class=&quot;flex min-w-0 flex-1 flex-col gap-0.5&quot; data-astro-cid-znle5jil&gt;&lt;p class=&quot;m-0 text-base leading-snug font-semibold&quot; data-astro-cid-znle5jil&gt;Note&lt;/p&gt;&lt;div class=&quot;aside-card-body text-sm leading-normal&quot; data-astro-cid-znle5jil&gt;&lt;p&gt;If you are creating a new account, you will need to verify your email address before continuing.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1712,height=812,format=webp/_astro/cloudflare-drag-and-drop-claim.8Zv6px9B.png&quot; alt=&quot;Cloudflare Drag and Drop claim account screen with a countdown before the claim link expires&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1712&quot; height=&quot;812&quot;&gt;
&lt;p&gt;After claiming the site, you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Add a domain&lt;/strong&gt;: &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/routing/custom-domains/&quot;&gt;Connect&lt;/a&gt; an existing domain or purchase a new one for your site.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enable &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/&quot;&gt;observability&lt;/a&gt;&lt;/strong&gt;: Monitor your site&apos;s performance and usage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enable &lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/reference/markdown-for-agents/&quot;&gt;Markdown for Agents&lt;/a&gt;&lt;/strong&gt;: Allow AI agents to access your site&apos;s content in Markdown.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Control access&lt;/strong&gt;: Make your site &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/policies/&quot;&gt;private&lt;/a&gt; and choose who can view it.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1812,height=1266,format=webp/_astro/cloudflare-drag-and-drop-post-claim.DvlaNmI7.png&quot; alt=&quot;Claimed Cloudflare Drag and Drop site setup screen showing options to add a domain, control access, enable observability, and enable Markdown for agents&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1812&quot; height=&quot;1266&quot;&gt;</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Windows (version 2026.6.850.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-07-warp-windows-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-07-warp-windows-ga/</guid><description>&lt;p&gt;A new GA release for the Windows Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This hotfix addresses a Windows authentication issue in the embedded WebView2 browser. Single sign-on could fail to use the Windows primary account, causing users to be prompted for an interactive sign-in. The embedded authentication browser now allows SSO providers to use the OS primary account when available.&lt;/p&gt;
</description><pubDate>Tue, 07 Jul 2026 18:35:35 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Access, Cloudflare One - File transfer controls for browser-based RDP (beta)</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-07-rdp-file-transfer-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-07-rdp-file-transfer-beta/</guid><description>&lt;p&gt;You can now configure file transfer controls for browser-based RDP with Cloudflare Access, allowing you to restrict whether users can upload or download files between their local machine and the remote Windows server.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1356,height=692,format=webp/_astro/file-transfer-policy-control.CiSEa5rr.png&quot; alt=&quot;File transfer connection settings in the Access policy configuration.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1356&quot; height=&quot;692&quot;&gt;
&lt;p&gt;This feature is useful for organizations that support bring-your-own-device (BYOD) policies or third-party contractors using unmanaged devices. By restricting file transfers, you can prevent sensitive data from being moved out of the remote session to a user&apos;s personal device.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;configuration-options&quot;&gt;Configuration options&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#configuration-options&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;File transfer controls are configured per policy within your Access application, alongside existing &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/use-cases/rdp/rdp-browser/#connection-settings&quot;&gt;text clipboard controls&lt;/a&gt;. For each policy, you can select one of the following options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Client to remote RDP session allowed&lt;/strong&gt; — Users can upload files from their local machine into the browser-based RDP session.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Remote RDP session to client allowed&lt;/strong&gt; — Users can download files from the browser-based RDP session to their local machine.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Both directions allowed&lt;/strong&gt; — Users can upload and download files between their local machine and the browser-based RDP session.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disable copying/pasting&lt;/strong&gt; — Users are not allowed to transfer files between their local machine and the browser-based RDP session.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By default, file transfer is denied for new policies. For existing Access applications created before this feature was available, file transfer remains denied.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;how-it-works&quot;&gt;How it works&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#how-it-works&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;To upload, drag files into the browser window or select the settings gear icon on the left side of the RDP session. To download, copy a file in the remote session and select the settings gear to download it, download multiple files as a zip, or print PDFs to a local printer.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=812,height=532,format=webp/_astro/clipboard-side-panel.Us2RfXfs.png&quot; alt=&quot;The clipboard side panel showing files available for transfer.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;812&quot; height=&quot;532&quot;&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=770,height=442,format=webp/_astro/remote-doc-ready-for-download-or-print-local.Dcm5hrGD.png&quot; alt=&quot;A remote document ready for download or local printing.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;770&quot; height=&quot;442&quot;&gt;
&lt;p&gt;This feature is in beta and available on all Zero Trust plans. For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/use-cases/rdp/rdp-browser/#transfer-files&quot;&gt;File transfer for browser-based RDP&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category><category>Cloudflare One</category></item><item><title>Browser Isolation, Cloudflare One - Browser Isolation support for authorization proxy endpoints</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-07-authorization-proxy-endpoint-support/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-07-authorization-proxy-endpoint-support/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/remote-browser-isolation/&quot;&gt;Browser Isolation&lt;/a&gt; now supports Gateway &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/resolvers-and-proxies/proxy-endpoints/#authorization-endpoint&quot;&gt;authorization proxy endpoints&lt;/a&gt;. You can apply &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/remote-browser-isolation/isolation-policies/&quot;&gt;HTTP Isolate policies&lt;/a&gt; to traffic routed through authorization proxy endpoints, the same way you can for traffic from the Cloudflare One Client.&lt;/p&gt;
&lt;p&gt;Previously, only &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/resolvers-and-proxies/proxy-endpoints/#source-ip-endpoint&quot;&gt;source IP proxy endpoints&lt;/a&gt; supported Browser Isolation, and only with non-identity policies. Because authorization proxy endpoints authenticate users through an identity provider, you can now apply identity-based Isolate policies to PAC file-proxied traffic without requiring the Cloudflare One Client.&lt;/p&gt;
&lt;p&gt;To get started, &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/resolvers-and-proxies/proxy-endpoints/#authorization-endpoint&quot;&gt;create an authorization proxy endpoint&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/remote-browser-isolation/isolation-policies/&quot;&gt;build an Isolate policy&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate><product>Browser Isolation</product><category>Browser Isolation</category><category>Cloudflare One</category></item><item><title>Cloudflare One Appliance, Cloudflare One, Cloudflare WAN - Self-serve registration of Cloudflare One Virtual Appliance in the dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-06-virtual-appliance-self-serve-ui/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-06-virtual-appliance-self-serve-ui/</guid><description>&lt;p&gt;You can now register a &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/&quot;&gt;Cloudflare One Virtual Appliance&lt;/a&gt; and generate its license key directly from the dashboard, without contacting your account team.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1800,height=988,format=webp/_astro/2026-07-06-virtual-appliance-self-serve-ui.Dn2NC_ql.gif&quot; alt=&quot;Registering a Cloudflare One Virtual Appliance and generating its authentication key from the Connectors page&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;988&quot;&gt;
&lt;ul&gt;
&lt;li&gt;On the &lt;strong&gt;Connectors&lt;/strong&gt; page, select &lt;strong&gt;Add an appliance&lt;/strong&gt; and choose &lt;strong&gt;Virtual appliance&lt;/strong&gt; to register a virtual appliance and generate its authentication key.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;Regenerate authentication key&lt;/strong&gt; from a virtual appliance connector&apos;s menu to rotate its key. The previous key is immediately and irrevocably revoked.&lt;/li&gt;
&lt;li&gt;The authentication key is shown only once — copy and store it securely.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This complements the existing &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/configure-virtual-appliance/#register-a-virtual-appliance-and-generate-a-license-key&quot;&gt;API and Terraform self-serve workflow&lt;/a&gt; for provisioning virtual appliances. Hardware appliances continue to use the existing account-team fulfillment workflow.&lt;/p&gt;
&lt;p&gt;For details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/configure-virtual-appliance/&quot;&gt;Configure a Cloudflare One Virtual Appliance&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate><product>Cloudflare One Appliance</product><category>Cloudflare One Appliance</category><category>Cloudflare One</category><category>Cloudflare WAN</category></item><item><title>Workers - Simpler runtime types with @cloudflare/workers-types v5</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-03-workers-types-v5/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-03-workers-types-v5/</guid><description>
&lt;p&gt;We have released version 5 of &lt;a href=&quot;https://www.npmjs.com/package/@cloudflare/workers-types&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;@cloudflare/workers-types&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. This release simplifies the package to expose only the latest runtime types.&lt;/p&gt;
&lt;p&gt;We still recommend that you generate types for your Worker using &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/general/#types&quot;&gt;&lt;code&gt;wrangler types&lt;/code&gt;&lt;/a&gt;, but if you want to use the package directly, you can install it with your package manager of choice:&lt;/p&gt;
&lt;script&gt;
	if (!customElements.get(&quot;nb-pm-restore&quot;)) {
		customElements.define(
			&quot;nb-pm-restore&quot;,
			class extends HTMLElement {
				connectedCallback() {
					const card = this.closest(&quot;[data-nb-pm]&quot;);
					if (!card) return;
					let saved;
					try {
						saved = sessionStorage.getItem(&quot;ui-pm-tab&quot;);
					} catch {
						return;
					}
					if (!saved) return;
					const tabs = card.querySelectorAll(&quot;[data-nb-pm-tab]&quot;);
					let idx = -1;
					tabs.forEach(function (t, i) {
						if (t.textContent.trim() === saved) idx = i;
					});
					if (idx &lt; 1) return;
					tabs.forEach(function (t, i) {
						t.setAttribute(&quot;aria-selected&quot;, String(i === idx));
					});
					card.querySelectorAll(&quot;[data-nb-pm-panel]&quot;).forEach(function (p, i) {
						p.hidden = i !== idx;
					});
				}
			},
		);
	}
&lt;/script&gt;&lt;div data-nb-pm class=&quot;w-full&quot;&gt;&lt;div class=&quot;flex w-full flex-col overflow-hidden rounded-lg text-sm ring ring-border bg-card&quot;&gt;&lt;div class=&quot;flex items-center gap-2 px-3 py-2 text-[0.8125rem] font-medium leading-5 text-muted-foreground bg-[var(--nb-surface-sunken)]&quot; role=&quot;tablist&quot; aria-label=&quot;Package manager&quot;&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;true&quot; aria-controls=&quot;pm-panel-pm-d7aaa6af-ef15-44d7-a098-01f4412fba86-npm&quot; id=&quot;pm-tab-pm-d7aaa6af-ef15-44d7-a098-01f4412fba86-npm&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;npm&lt;/button&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;false&quot; aria-controls=&quot;pm-panel-pm-d7aaa6af-ef15-44d7-a098-01f4412fba86-yarn&quot; id=&quot;pm-tab-pm-d7aaa6af-ef15-44d7-a098-01f4412fba86-yarn&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;yarn&lt;/button&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;false&quot; aria-controls=&quot;pm-panel-pm-d7aaa6af-ef15-44d7-a098-01f4412fba86-pnpm&quot; id=&quot;pm-tab-pm-d7aaa6af-ef15-44d7-a098-01f4412fba86-pnpm&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;pnpm&lt;/button&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;false&quot; aria-controls=&quot;pm-panel-pm-d7aaa6af-ef15-44d7-a098-01f4412fba86-bun&quot; id=&quot;pm-tab-pm-d7aaa6af-ef15-44d7-a098-01f4412fba86-bun&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;bun&lt;/button&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-d7aaa6af-ef15-44d7-a098-01f4412fba86-npm&quot; aria-labelledby=&quot;pm-tab-pm-d7aaa6af-ef15-44d7-a098-01f4412fba86-npm&quot; data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;npm&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; i -D @cloudflare/workers-types@latest&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;npm i -D @cloudflare/workers-types@latest&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-d7aaa6af-ef15-44d7-a098-01f4412fba86-yarn&quot; aria-labelledby=&quot;pm-tab-pm-d7aaa6af-ef15-44d7-a098-01f4412fba86-yarn&quot; hidden data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;yarn&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; add -D @cloudflare/workers-types@latest&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;yarn add -D @cloudflare/workers-types@latest&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-d7aaa6af-ef15-44d7-a098-01f4412fba86-pnpm&quot; aria-labelledby=&quot;pm-tab-pm-d7aaa6af-ef15-44d7-a098-01f4412fba86-pnpm&quot; hidden data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;pnpm&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; add -D @cloudflare/workers-types@latest&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;pnpm add -D @cloudflare/workers-types@latest&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-d7aaa6af-ef15-44d7-a098-01f4412fba86-bun&quot; aria-labelledby=&quot;pm-tab-pm-d7aaa6af-ef15-44d7-a098-01f4412fba86-bun&quot; hidden data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;bun&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; add -d @cloudflare/workers-types@latest&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;bun add -d @cloudflare/workers-types@latest&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;nb-pm-restore style=&quot;display:contents&quot;&gt;&lt;/nb-pm-restore&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/package-managers/PackageManagerTabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;The package now exposes two entrypoints:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;@cloudflare/workers-types&lt;/code&gt; reflects the latest compatibility date, using the latest stable compatibility flags.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@cloudflare/workers-types/experimental&lt;/code&gt; reflects APIs behind experimental compatibility flags.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The dated entrypoints, such as &lt;code&gt;@cloudflare/workers-types/2022-11-30&lt;/code&gt; and &lt;code&gt;@cloudflare/workers-types/2023-03-01&lt;/code&gt;, are removed. With runtime type generation in &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/&quot;&gt;Wrangler v4&lt;/a&gt;, you can generate these with the &lt;code&gt;wrangler types&lt;/code&gt; command to create types locked to your Worker&apos;s compatibility date.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/languages/typescript/&quot;&gt;TypeScript language support&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare Mesh, Cloudflare One - Hostname routing for Cloudflare Mesh</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-02-mesh-hostname-routing/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-02-mesh-hostname-routing/</guid><description>
&lt;p&gt;You can now add &lt;a href=&quot;https://docs.infinitegaming.org/mesh/features/routes/#hostname-routes&quot;&gt;hostname routes&lt;/a&gt; to a Cloudflare Mesh node, in addition to CIDR routes.&lt;/p&gt;
&lt;figure class=&quot;mesh-hostname-diagram not-content&quot; aria-label=&quot;How hostname routing works with a Cloudflare Mesh node: a client requests a hostname, Cloudflare Gateway assigns a token IP and rewrites the destination, and the Mesh node delivers the traffic to the private host&quot; data-astro-cid-7hjhdnhq&gt;&lt;ol class=&quot;flow&quot; data-astro-cid-7hjhdnhq&gt;&lt;li class=&quot;flow-step&quot; data-astro-cid-7hjhdnhq&gt;&lt;div class=&quot;node-card client-card&quot; data-astro-cid-7hjhdnhq&gt;&lt;div class=&quot;node-header&quot; data-astro-cid-7hjhdnhq&gt;&lt;span class=&quot;node-icon client-icon&quot; aria-hidden=&quot;true&quot; data-astro-cid-7hjhdnhq&gt;&lt;svg width=&quot;0.98em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 48 49&quot; data-astro-cid-7hjhdnhq=&quot;true&quot; data-icon=&quot;warp-client&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M24 5.04a19.5 19.5 0 1 0 19.5 19.5A19.575 19.575 0 0 0 24 5.04m0 3a16.575 16.575 0 0 1 16.5 16.5 16.8 16.8 0 0 1-2.175 8.175c.302-1.125.453-2.285.45-3.45a14.775 14.775 0 0 0-29.55 0 13.2 13.2 0 0 0 .45 3.45A16.8 16.8 0 0 1 7.5 24.54 16.575 16.575 0 0 1 24 8.04m-5.25 30.6a6.974 6.974 0 1 1 10.5 0 5.25 5.25 0 0 0-10.5 0M24 24.015a9.976 9.976 0 0 0-9.975 10.05c-.024.53.026 1.06.15 1.575a11.5 11.5 0 0 1-1.95-6.375 11.775 11.775 0 0 1 23.55 0 11.47 11.47 0 0 1-1.95 6.375 5.6 5.6 0 0 0 .15-1.575A9.974 9.974 0 0 0 24 24.015M21.75 38.79A2.25 2.25 0 1 1 24 41.04a2.174 2.174 0 0 1-2.25-2.25&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;a class=&quot;node-title&quot; href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/&quot; data-astro-cid-7hjhdnhq&gt;Client device&lt;/a&gt;&lt;/div&gt;&lt;p class=&quot;node-caption&quot; data-astro-cid-7hjhdnhq&gt;Requests &lt;code data-astro-cid-7hjhdnhq&gt;wiki.internal.local&lt;/code&gt;&lt;/p&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;flow-connector&quot; data-astro-cid-7hjhdnhq&gt;&lt;span class=&quot;connector-label&quot; data-astro-cid-7hjhdnhq&gt;DNS query&lt;/span&gt;&lt;span class=&quot;connector-arrow&quot; aria-hidden=&quot;true&quot; data-astro-cid-7hjhdnhq&gt;↓&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;flow-step&quot; data-astro-cid-7hjhdnhq&gt;&lt;div class=&quot;node-card gateway-card&quot; data-astro-cid-7hjhdnhq&gt;&lt;div class=&quot;node-header&quot; data-astro-cid-7hjhdnhq&gt;&lt;span class=&quot;node-icon gateway-icon&quot; aria-hidden=&quot;true&quot; data-astro-cid-7hjhdnhq&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 16 16&quot; data-astro-cid-7hjhdnhq=&quot;true&quot; data-icon=&quot;gateway&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M15.45 7.125h-2.577V3.508l-.41-.408H3.925l-.41.41v3.08h.922V4.023h7.513v7.555H4.438v-1.553h-.923v2.065l.41.41h8.538l.41-.41V8.048H16z&quot;/&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M8.453 7.238H0l.517.87H8.97zM9.21 8.51H.755l.517.868h8.453z&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;a class=&quot;node-title&quot; href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/&quot; data-astro-cid-7hjhdnhq&gt;Cloudflare Gateway&lt;/a&gt;&lt;/div&gt;&lt;p class=&quot;node-caption&quot; data-astro-cid-7hjhdnhq&gt;Returns a token IP, then rewrites the destination to the real private IP.&lt;/p&gt;&lt;div class=&quot;pill-row&quot; data-astro-cid-7hjhdnhq&gt;&lt;span class=&quot;token-pill&quot; data-astro-cid-7hjhdnhq&gt;&lt;code data-astro-cid-7hjhdnhq&gt;172.64.128.0/20&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;flow-connector&quot; data-astro-cid-7hjhdnhq&gt;&lt;a class=&quot;connector-label&quot; href=&quot;https://docs.infinitegaming.org/mesh/features/routes/#hostname-routes&quot; data-astro-cid-7hjhdnhq&gt;Hostname route&lt;/a&gt;&lt;span class=&quot;connector-arrow&quot; aria-hidden=&quot;true&quot; data-astro-cid-7hjhdnhq&gt;↓&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;flow-step&quot; data-astro-cid-7hjhdnhq&gt;&lt;div class=&quot;node-card mesh-card&quot; data-astro-cid-7hjhdnhq&gt;&lt;div class=&quot;node-header&quot; data-astro-cid-7hjhdnhq&gt;&lt;span class=&quot;node-icon mesh-icon&quot; aria-hidden=&quot;true&quot; data-astro-cid-7hjhdnhq&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 32 32&quot; data-astro-cid-7hjhdnhq=&quot;true&quot; data-icon=&quot;cloudflare-mesh&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M10 6a2 2 0 1 1-4 0 2 2 0 0 1 4 0m6-2a2 2 0 1 0 0 4 2 2 0 0 0 0-4m8 4a2 2 0 1 0 0-4 2 2 0 0 0 0 4M8 11a2 2 0 1 0 0 4 2 2 0 0 0 0-4m8 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4m8 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4M8 18a2 2 0 1 0 0 4 2 2 0 0 0 0-4m8 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4m0 7a2 2 0 1 0 0 4 2 2 0 0 0 0-4m8-7a2 2 0 1 0 0 4 2 2 0 0 0 0-4&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;a class=&quot;node-title&quot; href=&quot;https://docs.infinitegaming.org/mesh/&quot; data-astro-cid-7hjhdnhq&gt;Mesh node&lt;/a&gt;&lt;/div&gt;&lt;p class=&quot;node-caption&quot; data-astro-cid-7hjhdnhq&gt;Forwards traffic to the host on the local network&lt;/p&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;flow-connector&quot; aria-hidden=&quot;true&quot; data-astro-cid-7hjhdnhq&gt;&lt;span class=&quot;connector-arrow&quot; data-astro-cid-7hjhdnhq&gt;↓&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;flow-step&quot; data-astro-cid-7hjhdnhq&gt;&lt;div class=&quot;node-card host-card&quot; data-astro-cid-7hjhdnhq&gt;&lt;div class=&quot;node-header&quot; data-astro-cid-7hjhdnhq&gt;&lt;span class=&quot;node-icon host-icon&quot; aria-hidden=&quot;true&quot; data-astro-cid-7hjhdnhq&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 48 48&quot; data-astro-cid-7hjhdnhq=&quot;true&quot; data-icon=&quot;dns&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M39 30.98h-2.125v-8.574H25.148v-5.449h2.102l1.25-1.25V9l-1.25-1.25h-6.738L19.262 9v6.707l1.25 1.25h2.136v5.45H11.125v8.573H9l-1.25 1.25V39L9 40.25h6.742l1.25-1.25v-6.77l-1.25-1.25h-2.117v-6.074h9.023v6.074h-2.136l-1.25 1.25V39l1.25 1.25h6.738L28.5 39v-6.77l-1.25-1.25h-2.102v-6.074h9.235v6.074h-2.121l-1.25 1.25V39l1.25 1.25H39L40.25 39v-6.77ZM21.762 10.25H26v4.238h-4.238Zm-7.27 27.5H10.25v-4.27h4.238Zm11.508 0h-4.238v-4.27H26Zm11.75 0h-4.238v-4.27h4.238Z&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;node-title&quot; data-astro-cid-7hjhdnhq&gt;Private host&lt;/span&gt;&lt;/div&gt;&lt;p class=&quot;node-caption&quot; data-astro-cid-7hjhdnhq&gt;&lt;code data-astro-cid-7hjhdnhq&gt;wiki.internal.local&lt;/code&gt; · &lt;code data-astro-cid-7hjhdnhq&gt;10.0.0.50&lt;/code&gt;&lt;/p&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/figure&gt;
&lt;p&gt;Instead of managing IP ranges, you can attract traffic for a hostname to a Mesh node:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Private hostname&lt;/strong&gt; (for example, &lt;code&gt;wiki.internal.local&lt;/code&gt;) — reach an internal application by name, which is useful when it has an unknown or ephemeral IP. On Mesh you do not need to run a DNS server; a local hosts-file entry on the node is enough, or you can use a Gateway resolver policy for split DNS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Public hostname&lt;/strong&gt; (for example, &lt;code&gt;www.example.com&lt;/code&gt;) — route that hostname&apos;s traffic through the node and egress via the node&apos;s public IP.&lt;/li&gt;
&lt;/ul&gt;
&lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/mesh&quot; data-nb-button class=&quot;group inline-flex w-max shrink-0 items-center justify-center rounded-full font-medium whitespace-nowrap no-underline shadow-xs transition-colors cursor-pointer select-none focus-visible:outline-2 focus-visible:outline-ring focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary-hover h-9 gap-1.5 px-3 text-sm&quot; target=&quot;_blank&quot;&gt;
	Go to &lt;strong&gt;Mesh&lt;/strong&gt;&amp;nbsp;&amp;#8599;
&lt;/a&gt;
&lt;p&gt;For setup steps, prerequisites, and DNS options, refer to &lt;a href=&quot;https://docs.infinitegaming.org/mesh/features/routes/#hostname-routes&quot;&gt;Hostname routes&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate><product>Cloudflare Mesh</product><category>Cloudflare Mesh</category><category>Cloudflare One</category></item><item><title>Workers - Work across multiple accounts with Wrangler auth profiles</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-02-wrangler-auth-profiles/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-02-wrangler-auth-profiles/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/&quot;&gt;Wrangler CLI&lt;/a&gt; now supports auth profiles: named logins that you scope to specific Cloudflare accounts and switch between automatically, based on the directory you are working in.&lt;/p&gt;
&lt;p&gt;A profile is a named OAuth login bound to a directory. Commands run in that directory, and its subdirectories, use the matching account — so you can move between accounts without re-running &lt;code&gt;wrangler login&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Use profiles to keep a separate login for each client when working at an agency, or to separate staging and production into different accounts. Pair a profile with an &lt;code&gt;account_id&lt;/code&gt; in your &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/configuration/&quot;&gt;Wrangler configuration file&lt;/a&gt; so a command cannot reach the wrong account.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Create a profile for each account, choosing which accounts it can reach&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; auth&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; create&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; client-a&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; auth&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; activate&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; client-a&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; ~/clients/client-a&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; auth&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; create&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; client-b&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; auth&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; activate&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; client-b&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; ~/clients/client-b&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Use the &lt;code&gt;--profile&lt;/code&gt; flag to run a single command with a specific profile:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; deploy&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --profile&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; personal&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;In CI and other automated environments, &lt;code&gt;CLOUDFLARE_API_TOKEN&lt;/code&gt; still takes precedence over all profiles.&lt;/p&gt;
&lt;p&gt;For setup, the resolution order, and the full command reference, refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/profiles/&quot;&gt;Authentication profiles&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Linux (version 2026.6.836.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-01-warp-linux-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-01-warp-linux-ga/</guid><description>&lt;p&gt;A new GA release for the Linux Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This package is the same release as 2026.6.822.0, with a fix for our RPM package. Previously the repository served a single build to every OS version, so an install could pull a dependency that isn&apos;t available on that release. The repository now serves the correct build for each operating system version, so installs automatically pull the dependencies that version requires. Debian and Ubuntu were not affected.&lt;/p&gt;
&lt;p&gt;If you installed version 2026.6.822.0 on an RPM-based distribution, we recommend refreshing your repository configuration:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo curl -fsSL https://pkg.cloudflareclient.com/cloudflare-warp-ascii.repo | sudo tee /etc/yum.repos.d/cloudflare-warp.repo
sudo dnf clean all
sudo dnf install cloudflare-warp
&lt;/code&gt;&lt;/pre&gt;
</description><pubDate>Wed, 01 Jul 2026 19:48:17 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Access - Fix redirect URL fragment encoding for single-page applications</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-01-spa-redirect-fragment-fix/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-01-spa-redirect-fragment-fix/</guid><description>&lt;p&gt;Access now correctly preserves URL fragment characters (&lt;code&gt;/&lt;/code&gt;, &lt;code&gt;?&lt;/code&gt;, &lt;code&gt;=&lt;/code&gt;, &lt;code&gt;&amp;amp;&lt;/code&gt;, &lt;code&gt;;&lt;/code&gt;) when redirecting users back to an application after login. Previously, these characters were encoded with &lt;code&gt;encodeURIComponent&lt;/code&gt;, which mangled fragment-based routes used by single-page applications (SPAs).&lt;/p&gt;
&lt;p&gt;For example, an SPA URL like &lt;code&gt;https://app.example.com/#/dashboard?tab=settings&amp;amp;view=advanced&lt;/code&gt; would previously redirect to a broken URL after login. This is now handled correctly.&lt;/p&gt;
&lt;p&gt;If your SPA users were experiencing broken navigation after authenticating through Access, this fix resolves the issue without any configuration changes.&lt;/p&gt;</description><pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Access - Independent MFA for infrastructure applications</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-01-ssh-mfa-piv-keys/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-01-ssh-mfa-piv-keys/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/non-http/infrastructure-apps/&quot;&gt;Access for Infrastructure&lt;/a&gt; now supports independent multi-factor authentication (MFA) for SSH connections using YubiKey PIV keys. This adds a hardware-backed second factor to SSH access, ensuring that a compromised device session alone is not sufficient to reach your servers.&lt;/p&gt;
&lt;p&gt;With per-application and per-policy configuration, you can enforce PIV key authentication for sensitive usernames (for example, &lt;code&gt;root&lt;/code&gt;) while applying different requirements for other usernames. You can also set an MFA session duration to control how often users must re-authenticate.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;enrollment&quot;&gt;Enrollment&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#enrollment&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Users enroll their YubiKey PIV key through the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/access-settings/app-launcher/&quot;&gt;App Launcher&lt;/a&gt;. For enrollment instructions and SSH client setup, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/access-settings/independent-mfa/#enroll-a-piv-key-for-infrastructure-apps&quot;&gt;Enroll a PIV key for infrastructure apps&lt;/a&gt;.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;configuration&quot;&gt;Configuration&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#configuration&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;For setup instructions, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/policies/mfa-requirements/#infrastructure-applications&quot;&gt;Enforce MFA for infrastructure applications&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Cloudflare Images - Images binding is now billed per unique transformation</title><link>https://docs.infinitegaming.org/changelog/post/2026-07-01-binding-unique-transformations/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-07-01-binding-unique-transformations/</guid><description>&lt;p&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/binding/&quot;&gt;Images binding&lt;/a&gt; is now billed per unique transformation, matching the model already used for URL-based transformations. Repeat requests for the same combination of source image and parameters within the same calendar month are counted only once.&lt;/p&gt;
&lt;p&gt;Previously, every call to the binding counted as a separate transformation regardless of whether the image or parameters were unique. With this change, you can call the binding on hot paths without paying for each individual request.&lt;/p&gt;
&lt;p&gt;Calls to &lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/binding/#infostream&quot;&gt;&lt;code&gt;.info()&lt;/code&gt;&lt;/a&gt; are no longer billed.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/images/pricing/#images-transformed&quot;&gt;Images pricing&lt;/a&gt; and the &lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/binding/&quot;&gt;Images binding documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate><product>Cloudflare Images</product><category>Cloudflare Images</category></item><item><title>Gateway, Cloudflare One, Cloudflare Fundamentals - New permissions and roles for Gateway policies and lists</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-30-gateway-granular-permissions/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-30-gateway-granular-permissions/</guid><description>&lt;p&gt;You can now assign granular, resource-scoped roles for &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/&quot;&gt;Cloudflare Gateway&lt;/a&gt; firewall policies and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/reusable-components/lists/&quot;&gt;Zero Trust lists&lt;/a&gt;. Administrators can delegate access to specific policy types or list management without granting account-wide or product-wide control.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;what-is-new&quot;&gt;What is new&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#what-is-new&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;When you &lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/manage-members/manage/&quot;&gt;add a member&lt;/a&gt; or create a &lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/manage-members/policies/&quot;&gt;permission policy&lt;/a&gt;, the following resource-scoped roles are now available:&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Zero Trust Gateway Firewall Policies Admin&lt;/td&gt;
&lt;td&gt;Can view and edit all Gateway firewall policies, including DNS, HTTP, and Network policies.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zero Trust Gateway DNS Policies Admin&lt;/td&gt;
&lt;td&gt;Can view and edit Gateway DNS policies.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zero Trust Gateway HTTP Policies Admin&lt;/td&gt;
&lt;td&gt;Can view and edit Gateway HTTP policies.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zero Trust Gateway Network Policies Admin&lt;/td&gt;
&lt;td&gt;Can view and edit Gateway Network policies.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zero Trust Gateway Egress Policies Admin&lt;/td&gt;
&lt;td&gt;Can view and edit Gateway Egress policies.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zero Trust Gateway Resolver Policies Admin&lt;/td&gt;
&lt;td&gt;Can view and edit Gateway Resolver policies.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zero Trust Gateway Policies Admin&lt;/td&gt;
&lt;td&gt;Can view and edit all Gateway policies.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zero Trust Gateway Policies Read&lt;/td&gt;
&lt;td&gt;Can view all Gateway policies.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zero Trust Gateway Read Only&lt;/td&gt;
&lt;td&gt;Can view all Gateway resources.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zero Trust DNS Locations Admin&lt;/td&gt;
&lt;td&gt;Can view and edit DNS locations.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zero Trust Proxy Endpoints Admin&lt;/td&gt;
&lt;td&gt;Can view and edit Gateway Proxy Endpoints.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zero Trust Account Lists Admin&lt;/td&gt;
&lt;td&gt;Can view and edit all Gateway and Access lists.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zero Trust Account Lists Read&lt;/td&gt;
&lt;td&gt;Can view all Gateway and Access lists.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;These roles allow you to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Grant a network engineer write access to Network policies only, without exposing DNS or HTTP policy configuration.&lt;/li&gt;
&lt;li&gt;Allow a security analyst to view all Gateway policies in read-only mode for auditing purposes.&lt;/li&gt;
&lt;li&gt;Delegate list management to a team that maintains block and allow lists without giving them access to policy configuration.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can also now assign &lt;em&gt;Resource-scoped roles&lt;/em&gt;. These roles are complementary to existing account-level roles, and allow you to grant access to a specific resource, like an individual Gateway policy or Cloudflare One list. &lt;strong&gt;Existing account-level roles continue to work.&lt;/strong&gt; A member with the &lt;code&gt;Cloudflare Gateway&lt;/code&gt; or &lt;code&gt;Cloudflare Zero Trust&lt;/code&gt; role retains full access to all Gateway resources. This ensures backward compatibility for existing automation and API tokens.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;get-started&quot;&gt;Get started&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#get-started&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/granular-permissions/&quot;&gt;Granular permissions for Gateway&lt;/a&gt; for setup instructions and supported resources.&lt;/li&gt;
&lt;li&gt;Learn how to &lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/manage-members/policies/&quot;&gt;create permission policies&lt;/a&gt; that use these roles.&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category><category>Cloudflare One</category><category>Cloudflare Fundamentals</category></item><item><title>Workers, Durable Objects - Track memory usage for Workers and Durable Objects in the dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-30-memory-usage-metrics/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-30-memory-usage-metrics/</guid><description>&lt;p&gt;You can now monitor how much memory your &lt;a href=&quot;https://docs.infinitegaming.org/workers/&quot;&gt;Workers&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/&quot;&gt;Durable Objects&lt;/a&gt; consume across invocations with the new &lt;strong&gt;Memory Usage&lt;/strong&gt; chart in the Workers Metrics tab, broken down by P50, P90, P99, and P999 percentiles.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1210,height=782,format=webp/_astro/2026-06-26-memory-usage.B20y2uNp.png&quot; alt=&quot;Memory usage chart showing P50, P90, P99, and P999 percentiles with deployment markers&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1210&quot; height=&quot;782&quot;&gt;
&lt;p&gt;Memory usage measures the V8 &lt;a href=&quot;https://docs.infinitegaming.org/workers/reference/how-workers-works/#isolates&quot;&gt;isolate&lt;/a&gt; memory at the time of each invocation, subject to the &lt;a href=&quot;https://docs.infinitegaming.org/workers/platform/limits/#memory&quot;&gt;128 MB per-isolate limit&lt;/a&gt; — a single isolate can handle many concurrent requests and shares memory across them.&lt;/p&gt;
&lt;p&gt;Use the Memory Usage chart to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Track memory trends&lt;/strong&gt; — Spot gradual increases that may indicate a memory leak before they cause &lt;code&gt;Exceeded Memory&lt;/code&gt; errors.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Correlate with deployments&lt;/strong&gt; — Deployment markers on the chart help you identify whether a new version introduced a memory regression.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Right-size your Worker&lt;/strong&gt; — Understand your baseline memory footprint and how much headroom you have before hitting the 128 MB limit.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For Durable Objects, memory usage reflects the in-memory state an object holds (class properties, caches, active WebSocket connections), which persists across invocations until the object is &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/concepts/durable-object-lifecycle/&quot;&gt;hibernated or evicted&lt;/a&gt;. This state is not preserved across eviction, hibernation, or a crash, so persist anything important to &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/best-practices/access-durable-objects-storage/&quot;&gt;storage&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To view memory usage, open the &lt;strong&gt;Metrics&lt;/strong&gt; tab for your &lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/workers/services/view/:worker/production/metrics&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Worker&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; or &lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/workers/durable-objects&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Durable Object namespace&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. For Durable Objects, you can filter by DO ID or name to drill down into memory usage for a specific object. You can also query memory usage programmatically via the &lt;a href=&quot;https://docs.infinitegaming.org/analytics/graphql-api/tutorials/querying-workers-metrics/&quot;&gt;GraphQL Analytics API&lt;/a&gt; using the &lt;code&gt;workersInvocationsAdaptive&lt;/code&gt; dataset — the &lt;code&gt;quantiles.memoryUsageBytesP50&lt;/code&gt; through &lt;code&gt;quantiles.memoryUsageBytesP999&lt;/code&gt; fields return percentile values in bytes.&lt;/p&gt;
&lt;p&gt;For local memory debugging, you can also &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/dev-tools/memory-usage/&quot;&gt;profile memory with DevTools&lt;/a&gt; to take heap snapshots and identify specific objects causing high memory usage.&lt;/p&gt;</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category><category>Durable Objects</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Windows (version 2026.6.822.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-29-warp-windows-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-29-warp-windows-ga/</guid><description>&lt;p&gt;A new GA release for the Windows Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release introduces multiple features from our previous beta release into stable release, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The client now applies DNS search suffixes configured in your &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/device-profiles&quot;&gt;device profile&lt;/a&gt; / &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/network-policies&quot;&gt;network policy&lt;/a&gt;. Administrators can push a list of DNS search domains that the client appends to single-label queries, alongside any system-configured suffixes. See &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/#dns-search-suffixes&quot;&gt;DNS search suffixes&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;Added mandatory authentication. When enabled via MDM, the Cloudflare One Client blocks all Internet traffic from the moment the machine boots until the user authenticates, closing the visibility gap on newly deployed devices. See the &lt;a href=&quot;https://blog.cloudflare.com/mandatory-authentication-mfa/&quot;&gt;announcement blog&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/windows-no-auth-no-internet/&quot;&gt;documentation&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;Upgraded security of device registration to be hardware-backed. Registration tokens can now be generated in the TPM (with TPM 2.0+) whenever it is available to provide stronger protection against device impersonation. See &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/hardware-backed-registration/&quot;&gt;Hardware-backed registration&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;Added a local-file signal source for Emergency Disconnect. In addition to the existing HTTPS polling mechanism, administrators can now configure WARP to monitor for a file on disk; the presence of the file triggers an emergency disconnect even if both Cloudflare and your own infrastructure are unreachable. Either signal being asserted triggers disconnect; both must be cleared for normal operation to resume.&lt;/li&gt;
&lt;li&gt;Added new warp-cli debug commands for interactive connection diagnosis. See &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/troubleshooting/diagnostic-logs/#extra-debug-logging&quot;&gt;Extra debug logging&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;The local DNS proxy now supports DNSSEC passthrough. DNSSEC-signed responses are forwarded to the application intact (including DO/AD bits and RRSIG records), so applications that validate DNSSEC locally — including resolvers and the dig/drill tooling — work correctly through the client.&lt;/li&gt;
&lt;li&gt;Added a new MDM format for organization-wide settings, including a cleaner way to configure the compliance environment (e.g. FedRAMP). The previous per-configuration approach still works, but the new format is now recommended. See the updated &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/parameters/#organization_configs&quot;&gt;Cloudflare One MDM documentation&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;Added support for dashboard-managed client version deployments. Administrators can now upgrade or downgrade the client version on enrolled devices directly from the Zero Trust dashboard. See &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/client-version-assignments/&quot;&gt;Client version assignments&lt;/a&gt; for details.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Additional Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Starting with 2026.6.822.0, the client unifies all API requests under the &lt;code&gt;api.devices.cloudflare.com&lt;/code&gt; SNI, where previously both &lt;code&gt;zero-trust-client.cloudflareclient.com&lt;/code&gt; and &lt;code&gt;notifications.cloudflareclient.com&lt;/code&gt; were used. Review &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/firewall/&quot;&gt;Cloudflare One Client with firewall&lt;/a&gt; to ensure systems that rely on SNI inspection do not block the API traffic. The behavior of previous client versions is unaffected.&lt;/li&gt;
&lt;li&gt;Client Certificate device-posture checks now support template variables (e.g. &lt;code&gt;${serial_number}&lt;/code&gt;, &lt;code&gt;${device_uuid}&lt;/code&gt;) in the Subject Alternative Name field. Previously only the Common Name field accepted variables, which broke posture rules that pinned identity to a SAN entry.&lt;/li&gt;
&lt;li&gt;Improved accessibility by using high contrast colors and more defined color boundaries when high contrast is enabled in Windows Accessibility settings.&lt;/li&gt;
&lt;li&gt;Path MTU Discovery (PMTUD) is now enabled by default.&lt;/li&gt;
&lt;li&gt;The UseWebView2 registry value (HKLM\SOFTWARE\Cloudflare\CloudflareWARP\UseWebView2 = y) is once again honored by the new GUI for authentication, so administrators who prefer the embedded WebView2 browser for sign-in can opt back in. This setting was effectively ignored in the previous release; the default browser was always used. This key is now also honored for re-authentications.&lt;/li&gt;
&lt;li&gt;Fixed a crash in the authentication browser when navigating to a site that prompts for browser permissions (microphone, camera, notifications, etc.). The same fix had previously landed for the captive-portal browser; this extends it to the auth browser.&lt;/li&gt;
&lt;li&gt;Fixed an issue in proxy mode where hostnames containing underscores (e.g. ai_app.com) were rejected, breaking apps that depend on such hostnames (notably ChatGPT sandbox apps). The local proxy now accepts underscore-containing hostnames in CONNECT requests.&lt;/li&gt;
&lt;li&gt;Fixed an issue where DNS queries would fail after the connection was idle, requiring users to retry.&lt;/li&gt;
&lt;li&gt;Fixed a high CPU issue when the device wakes from sleep.&lt;/li&gt;
&lt;li&gt;Users can now register with team names in any case format without errors.&lt;/li&gt;
&lt;li&gt;New UI fixes
&lt;ul&gt;
&lt;li&gt;Fixed an issue where users with invalid MDM configurations were returned to the onboarding screen after successful authentication.&lt;/li&gt;
&lt;li&gt;Added a re-auth button and banner to the home screen so users don&apos;t miss it when their session expires.&lt;/li&gt;
&lt;li&gt;Added clear error messaging when the Cloudflare certificate needs to be installed.&lt;/li&gt;
&lt;li&gt;Brought back support for pausing the tunnel when connected to user-specified Wi-Fi networks for consumer users.&lt;/li&gt;
&lt;li&gt;New client UI now surfaces Split tunnel configuration and Local Domain Fallback configuration.&lt;/li&gt;
&lt;li&gt;Added ability to configure proxy mode for consumer users.&lt;/li&gt;
&lt;li&gt;Added back the option to quit for consumer users.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Single sign-on in the embedded WebView2 authentication browser may fail to use the Windows primary account, prompting for an interactive sign-in.&lt;/li&gt;
&lt;li&gt;An error indicating that Microsoft Edge can&apos;t read and write to its data directory may be displayed during captive portal login; this error is benign and can be dismissed.&lt;/li&gt;
&lt;li&gt;In rare cases, a registration may hang at &quot;Checking your organization configuration&quot; due to IPC errors. A system reboot should resolve the error, allowing registration to proceed.&lt;/li&gt;
&lt;li&gt;Windows ARM may prompt the user to close running applications while trying to install this version. Simply click &quot;Ok&quot; with the default highlighted option.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Mon, 29 Jun 2026 20:05:45 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - Cloudflare One Client for macOS (version 2026.6.822.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-29-warp-macos-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-29-warp-macos-ga/</guid><description>&lt;p&gt;A new GA release for the macOS Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release introduces multiple features from our previous beta release into stable release, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The client now applies DNS search suffixes configured in your &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/device-profiles&quot;&gt;device profile&lt;/a&gt; / &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/network-policies&quot;&gt;network policy&lt;/a&gt;. Administrators can push a list of DNS search domains that the client appends to single-label queries, alongside any system-configured suffixes. See &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/#dns-search-suffixes&quot;&gt;DNS search suffixes&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;Upgraded security of device registration to be hardware-backed. Registration tokens can now be generated in the Secure Enclave whenever available to provide stronger protection against device impersonation. See &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/hardware-backed-registration/&quot;&gt;Hardware-backed registration&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;Added a local-file signal source for Emergency Disconnect. In addition to the existing HTTPS polling mechanism, administrators can now configure WARP to monitor for a file on disk; the presence of the file triggers an emergency disconnect even if both Cloudflare and your own infrastructure are unreachable. Either signal being asserted triggers disconnect; both must be cleared for normal operation to resume.&lt;/li&gt;
&lt;li&gt;Added new warp-cli debug commands for interactive connection diagnosis. See &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/troubleshooting/diagnostic-logs/#extra-debug-logging&quot;&gt;Extra debug logging&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;The local DNS proxy now supports DNSSEC passthrough. DNSSEC-signed responses are forwarded to the application intact (including DO/AD bits and RRSIG records), so applications that validate DNSSEC locally — including resolvers and the dig/drill tooling — work correctly through the client.&lt;/li&gt;
&lt;li&gt;Added a new MDM format for organization-wide settings, including a cleaner way to configure the compliance environment (e.g. FedRAMP). The previous per-configuration approach still works, but the new format is now recommended. See the updated &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/parameters/#organization_configs&quot;&gt;Cloudflare One MDM documentation&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;Added support for dashboard-managed client version deployments. Administrators can now upgrade or downgrade the client version on enrolled devices directly from the Zero Trust dashboard. See &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/client-version-assignments/&quot;&gt;Client version assignments&lt;/a&gt; for details.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Additional Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Starting with 2026.6.822.0, the client unifies all API requests under the &lt;code&gt;api.devices.cloudflare.com&lt;/code&gt; SNI, where previously both &lt;code&gt;zero-trust-client.cloudflareclient.com&lt;/code&gt; and &lt;code&gt;notifications.cloudflareclient.com&lt;/code&gt; were used. Review &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/firewall/&quot;&gt;Cloudflare One Client with firewall&lt;/a&gt; to ensure systems that rely on SNI inspection do not block the API traffic. The behavior of previous client versions is unaffected.&lt;/li&gt;
&lt;li&gt;Client Certificate device-posture checks now support template variables (e.g. &lt;code&gt;${serial_number}&lt;/code&gt;, &lt;code&gt;${device_uuid}&lt;/code&gt;) in the Subject Alternative Name field. Previously only the Common Name field accepted variables, which broke posture rules that pinned identity to a SAN entry.&lt;/li&gt;
&lt;li&gt;Improved accessibility by using high contrast colors and more defined color boundaries when high contrast is enabled in the macOS Display settings.&lt;/li&gt;
&lt;li&gt;Path MTU Discovery (PMTUD) is now enabled by default.&lt;/li&gt;
&lt;li&gt;Fixed the in-client captive-portal browser rendering a blank &quot;Success&quot; page on some airline Wi-Fi networks. The browser now more consistently loads the airline&apos;s real portal page so users can complete sign-in from inside the client instead of having to open a separate browser.&lt;/li&gt;
&lt;li&gt;Fixed an issue in proxy mode where hostnames containing underscores (e.g. ai_app.com) were rejected, breaking apps that depend on such hostnames (notably ChatGPT sandbox apps). The local proxy now accepts underscore-containing hostnames in CONNECT requests.&lt;/li&gt;
&lt;li&gt;Fixed an issue where DNS queries would fail after the connection was idle, requiring users to retry.&lt;/li&gt;
&lt;li&gt;Users can now register with team names in any case format without errors.&lt;/li&gt;
&lt;li&gt;New UI fixes
&lt;ul&gt;
&lt;li&gt;Fixed an issue where users with invalid MDM configurations were returned to the onboarding screen after successful authentication.&lt;/li&gt;
&lt;li&gt;Added a re-auth button and banner to the home screen so users don&apos;t miss it when their session expires.&lt;/li&gt;
&lt;li&gt;Added clear error messaging when the Cloudflare certificate needs to be installed.&lt;/li&gt;
&lt;li&gt;Brought back support for pausing the tunnel when connected to user-specified Wi-Fi networks for consumer users.&lt;/li&gt;
&lt;li&gt;New client UI now surfaces Split tunnel configuration and Local Domain Fallback configuration.&lt;/li&gt;
&lt;li&gt;Added ability to configure proxy mode for consumer users.&lt;/li&gt;
&lt;li&gt;Added back the option to quit for consumer users.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Registration may hang at &quot;Checking your organization configuration&quot; due to IPC errors. A system reboot should resolve the error, allowing registration to proceed.&lt;/li&gt;
&lt;li&gt;When deploying with Microsoft Intune, the client may be repeatedly reinstalled because Intune adds the client&apos;s embedded framework bundles to its install-detection list, and those frameworks cannot be detected as installed on their own. See &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/troubleshooting/known-limitations/#repeated-reinstalls-on-macos-with-microsoft-intune&quot;&gt;Repeated reinstalls on macOS with Microsoft Intune&lt;/a&gt; for the workaround.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Mon, 29 Jun 2026 20:05:45 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Linux (version 2026.6.822.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-29-warp-linux-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-29-warp-linux-ga/</guid><description>&lt;p&gt;A new GA release for the Linux Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release introduces multiple features from our previous beta release into stable release, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The client now applies DNS search suffixes configured in your &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/device-profiles&quot;&gt;device profile&lt;/a&gt; / &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/network-policies&quot;&gt;network policy&lt;/a&gt;. Administrators can push a list of DNS search domains that the client appends to single-label queries, alongside any system-configured suffixes. See &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/#dns-search-suffixes&quot;&gt;DNS search suffixes&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;Upgraded security of device registration to be hardware-backed. Registration tokens can now be generated in the TPM (with TPM 2.0+) whenever it is available to provide stronger protection against device impersonation. See &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/hardware-backed-registration/&quot;&gt;Hardware-backed registration&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;Added a local-file signal source for Emergency Disconnect. In addition to the existing HTTPS polling mechanism, administrators can now configure WARP to monitor for a file on disk; the presence of the file triggers an emergency disconnect even if both Cloudflare and your own infrastructure are unreachable. Either signal being asserted triggers disconnect; both must be cleared for normal operation to resume.&lt;/li&gt;
&lt;li&gt;Added new warp-cli debug commands for interactive connection diagnosis. See &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/troubleshooting/diagnostic-logs/#extra-debug-logging&quot;&gt;Extra debug logging&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;The local DNS proxy now supports DNSSEC passthrough. DNSSEC-signed responses are forwarded to the application intact (including DO/AD bits and RRSIG records), so applications that validate DNSSEC locally — including resolvers and the dig/drill tooling — work correctly through the client.&lt;/li&gt;
&lt;li&gt;Added a new MDM format for organization-wide settings, including a cleaner way to configure the compliance environment (e.g. FedRAMP). The previous per-configuration approach still works, but the new format is now recommended. See the updated &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/parameters/#organization_configs&quot;&gt;Cloudflare One MDM documentation&lt;/a&gt; for details.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Additional changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Starting with 2026.6.822.0, the client unifies all API requests under the &lt;code&gt;api.devices.cloudflare.com&lt;/code&gt; SNI, where previously both &lt;code&gt;zero-trust-client.cloudflareclient.com&lt;/code&gt; and &lt;code&gt;notifications.cloudflareclient.com&lt;/code&gt; were used. Review &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/firewall/&quot;&gt;Cloudflare One Client with firewall&lt;/a&gt; to ensure systems that rely on SNI inspection do not block the API traffic. The behavior of previous client versions is unaffected.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/mesh/&quot;&gt;Cloudflare Mesh&lt;/a&gt; functionality using the Cloudflare One Client is now supported on RHEL 9 and 10.&lt;/li&gt;
&lt;li&gt;Cloudflare Mesh now supports &lt;a href=&quot;https://docs.infinitegaming.org/mesh/features/routes/#hostname-routes&quot;&gt;hostname-based routing&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Client Certificate device-posture checks now support template variables (e.g. &lt;code&gt;${serial_number}&lt;/code&gt;, &lt;code&gt;${device_uuid}&lt;/code&gt;) in the Subject Alternative Name field. Previously only the Common Name field accepted variables, which broke posture rules that pinned identity to a SAN entry.&lt;/li&gt;
&lt;li&gt;Improved accessibility by using high contrast colors and more defined color boundaries when high contrast is enabled in the system display settings.&lt;/li&gt;
&lt;li&gt;Path MTU Discovery (PMTUD) is now enabled by default.&lt;/li&gt;
&lt;li&gt;Fixed the in-client captive-portal browser rendering a blank &quot;Success&quot; page on some airline Wi-Fi networks. The browser now more consistently loads the airline&apos;s real portal page so users can complete sign-in from inside the client instead of having to open a separate browser.&lt;/li&gt;
&lt;li&gt;Fixed an issue in proxy mode where hostnames containing underscores (e.g. ai_app.com) were rejected, breaking apps that depend on such hostnames (notably ChatGPT sandbox apps). The local proxy now accepts underscore-containing hostnames in CONNECT requests.&lt;/li&gt;
&lt;li&gt;Fixed an issue where DNS queries would fail after the connection was idle, requiring users to retry.&lt;/li&gt;
&lt;li&gt;Fixed an issue where some Debian releases experienced inaccurate version reporting for posture checks.&lt;/li&gt;
&lt;li&gt;Users can now register with team names in any case format without errors.&lt;/li&gt;
&lt;li&gt;New UI fixes
&lt;ul&gt;
&lt;li&gt;Fixed an issue where users with invalid MDM configurations were returned to the onboarding screen after successful authentication.&lt;/li&gt;
&lt;li&gt;Added a re-auth button and banner to the home screen so users don&apos;t miss it when their session expires.&lt;/li&gt;
&lt;li&gt;Added clear error messaging when the Cloudflare certificate needs to be installed.&lt;/li&gt;
&lt;li&gt;Brought back support for pausing the tunnel when connected to user-specified Wi-Fi networks for consumer users.&lt;/li&gt;
&lt;li&gt;New client UI now surfaces Split tunnel configuration and Local Domain Fallback configuration.&lt;/li&gt;
&lt;li&gt;Added ability to configure proxy mode for consumer users.&lt;/li&gt;
&lt;li&gt;Added back the option to quit for consumer users.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For RHEL deployments, this release introduces a dependency on the &lt;a href=&quot;https://docs.fedoraproject.org/en-US/epel/&quot;&gt;Extra Packages for Enterprise Linux&lt;/a&gt; repository (EPEL). The EPEL repository provides packages that support the captive portal detection’s in-app browser authentication and system tray icon. See &lt;a href=&quot;https://docs.fedoraproject.org/en-US/epel/getting-started/&quot;&gt;Getting started with EPEL&lt;/a&gt; for instructions on enabling EPEL.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Registration may hang at &quot;Checking your organization configuration&quot; due to IPC errors. A system reboot should resolve the error, allowing registration to proceed.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Mon, 29 Jun 2026 19:21:09 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Workers - Workers fetch requests now support cf.vary</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-28-cf-vary-request-option/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-28-cf-vary-request-option/</guid><description>
&lt;p&gt;Workers &lt;code&gt;fetch()&lt;/code&gt; requests now support the &lt;code&gt;cf.vary&lt;/code&gt; request option. Use &lt;code&gt;cf.vary&lt;/code&gt; to control how Cloudflare caches origin responses with a &lt;code&gt;Vary&lt;/code&gt; header for a single subrequest.&lt;/p&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;js&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;src/index.js&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(request, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			cf: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				vary: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;					default: { action: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;bypass&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;					headers: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;						accept: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;							action: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;normalize&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;							media_types: [&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;text/html&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;application/json&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;						},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;						&quot;accept-language&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;							action: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;normalize&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;							languages: [&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;en&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;fr&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;de&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;						},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;					},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;src/index.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Promise&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(request, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			cf: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				vary: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;					default: { action: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;bypass&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;					headers: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;						accept: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;							action: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;normalize&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;							media_types: [&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;text/html&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;application/json&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;						},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;						&quot;accept-language&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;							action: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;normalize&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;							languages: [&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;en&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;fr&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;de&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;						},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;					},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;} &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;satisfies&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; ExportedHandler&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;&lt;/div&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/request/#the-cfvary-property&quot;&gt;&lt;code&gt;cf.vary&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Sun, 28 Jun 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare One, Access - Service token support for MCP server portals</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-26-mcp-portal-service-tokens/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-26-mcp-portal-service-tokens/</guid><description>&lt;p&gt;You can now connect autonomous agents and bots to an &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/&quot;&gt;MCP server portal&lt;/a&gt; using an &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/service-credentials/service-tokens/&quot;&gt;Access service token&lt;/a&gt;. Service token sessions can reach upstream MCP servers through the portal without a browser-based OAuth flow.&lt;/p&gt;
&lt;p&gt;To set this up:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add a &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/policies/#service-auth&quot;&gt;Service Auth policy&lt;/a&gt; that matches your service token to the portal&apos;s Access application.&lt;/li&gt;
&lt;li&gt;Add a Service Auth policy that matches the same token to each linked MCP server&apos;s Access application.&lt;/li&gt;
&lt;li&gt;Turn &lt;strong&gt;Require user auth&lt;/strong&gt; off (&lt;code&gt;on_behalf: false&lt;/code&gt;) for each linked server so the portal uses the admin credential instead of a per-user OAuth grant.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The bot connects with &lt;code&gt;CF-Access-Client-Id&lt;/code&gt; and &lt;code&gt;CF-Access-Client-Secret&lt;/code&gt; headers and sees the tools from every linked server it is authorized for. Servers that still require per-user OAuth are excluded from service token sessions because a service token cannot complete a per-user OAuth grant.&lt;/p&gt;
&lt;p&gt;For step-by-step setup, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/#connect-with-a-service-token&quot;&gt;Connect with a service token&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category><category>Access</category></item><item><title>Durable Objects, Workers - Test Durable Object eviction with new cloudflare:test helpers</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-25-durable-object-eviction-test-helpers/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-25-durable-object-eviction-test-helpers/</guid><description>&lt;p&gt;The &lt;code&gt;@cloudflare/vitest-pool-workers&lt;/code&gt; package now includes &lt;code&gt;evictDurableObject&lt;/code&gt; and &lt;code&gt;evictAllDurableObjects&lt;/code&gt; test helpers, exported from &lt;code&gt;cloudflare:test&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;These helpers let you test how a Durable Object behaves across evictions, simulating the production lifecycle where an idle Durable Object can be evicted from memory.&lt;/p&gt;
&lt;p&gt;For more context, refer to &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/concepts/durable-object-lifecycle/&quot;&gt;Lifecycle of a Durable Object&lt;/a&gt;.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { evictDurableObject, evictAllDurableObjects } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;cloudflare:test&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { env } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;cloudflare:workers&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;COUNTER&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;idFromName&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my-counter&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; stub&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;COUNTER&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(id);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// Evict the Durable Object instance pointed to by a specific stub&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; evictDurableObject&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(stub);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// Close WebSockets instead of hibernating them&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; evictDurableObject&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(stub, { webSockets: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;close&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// Evict all currently-running Durable Objects in evictable namespaces&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; evictAllDurableObjects&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;These helpers are available in &lt;code&gt;@cloudflare/vitest-pool-workers@0.16.20&lt;/code&gt; and later.&lt;/p&gt;
&lt;p&gt;Learn more in the &lt;a href=&quot;https://docs.infinitegaming.org/workers/testing/vitest-integration/test-apis/#durable-objects&quot;&gt;Test APIs reference&lt;/a&gt; and the &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/examples/testing-with-durable-objects/#testing-eviction&quot;&gt;Testing Durable Objects guide&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 25 Jun 2026 00:00:00 GMT</pubDate><product>Durable Objects</product><category>Durable Objects</category><category>Workers</category></item><item><title>Cloudflare One Client - Cloudflare One Client for macOS (version 2026.6.782.1)</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-24-warp-macos-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-24-warp-macos-beta/</guid><description>&lt;p&gt;A new Beta release for the macOS Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/beta-releases/&quot;&gt;beta releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This beta release introduces upgraded security of device registration to be hardware-backed. Registration tokens can now be generated in the Secure Enclave whenever available to provide stronger protection against device impersonation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Additional changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This release also introduces multiple fixes and improvements including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improved accessibility by using high contrast colors and more defined color boundaries when high contrast is enabled in the macOS Display settings.&lt;/li&gt;
&lt;li&gt;Path MTU Discovery (PMTUD) is now enabled by default.&lt;/li&gt;
&lt;li&gt;Fixed an issue where DNS queries would fail after the connection was idle, requiring users to retry.&lt;/li&gt;
&lt;li&gt;Users can now register with team names in any case format without errors.&lt;/li&gt;
&lt;li&gt;New UI fixes
&lt;ul&gt;
&lt;li&gt;Fixed an issue where users with invalid MDM configurations were returned to the onboarding screen after successful authentication.&lt;/li&gt;
&lt;li&gt;Added a re-auth button and banner to the home screen so users don&apos;t miss it when their session expires.&lt;/li&gt;
&lt;li&gt;Added clear error messaging when the Cloudflare certificate needs to be installed.&lt;/li&gt;
&lt;li&gt;Brought back support for pausing the tunnel when connected to user-specified Wi-Fi networks for consumer users.&lt;/li&gt;
&lt;li&gt;New client UI now surfaces Split tunnel configuration and Local Domain Fallback configuration.&lt;/li&gt;
&lt;li&gt;Added ability to configure proxy mode for consumer users.&lt;/li&gt;
&lt;li&gt;Added back the option to quit for consumer users.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Registration may hang at &quot;Checking your organization configuration&quot; due to IPC errors. A system reboot should resolve the error, allowing registration to proceed.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Wed, 24 Jun 2026 18:35:32 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Data Localization Suite - Regionalized IP Bindings for Regional Services</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-23-regionalized-ip-bindings/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-23-regionalized-ip-bindings/</guid><description>&lt;p&gt;Regional Services now supports &lt;strong&gt;Regionalized IP Bindings&lt;/strong&gt;, letting you regionalize traffic at the IP layer for prefixes you bring to Cloudflare through &lt;a href=&quot;https://docs.infinitegaming.org/byoip/&quot;&gt;Bring Your Own IP (BYOIP)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Where &lt;a href=&quot;https://docs.infinitegaming.org/data-localization/regional-services/regional-hostnames/&quot;&gt;Regional Hostnames&lt;/a&gt; regionalize traffic by hostname, Regionalized IP Bindings let you bind a CIDR from one of your prefixes to a region — ideal for address-map deployments and any service you address by IP rather than hostname. Cloudflare then terminates TLS and processes traffic to those addresses only within the data centers in that region.&lt;/p&gt;
&lt;p&gt;Regionalized IP Bindings requires the Regional Services and Regional Services for BYOIP entitlements. Contact your account team to enable them.&lt;/p&gt;
&lt;p&gt;To get started, refer to &lt;a href=&quot;https://docs.infinitegaming.org/data-localization/regional-services/ip-bindings/&quot;&gt;Regionalized IP Bindings&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate><product>Data Localization Suite</product><category>Data Localization Suite</category></item><item><title>Cloudflare Mesh, Cloudflare Tunnel, Cloudflare WAN, Cloudflare One - Manage all your routes from one page in the dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-19-unified-routes-page/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-19-unified-routes-page/</guid><description>
&lt;p&gt;The &lt;strong&gt;Routes&lt;/strong&gt; page in the Cloudflare dashboard now shows the routes across all of your connectors — &lt;a href=&quot;https://docs.infinitegaming.org/mesh/&quot;&gt;Cloudflare Mesh&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/tunnel/&quot;&gt;Cloudflare Tunnel&lt;/a&gt; routes alongside &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/&quot;&gt;Cloudflare WAN&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/magic-transit/&quot;&gt;Magic Transit&lt;/a&gt; static routes — in a single table, instead of a separate routes view per product.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1800,height=948,format=webp/_astro/2026-06-19-unified-routes.B3igBY20.gif&quot; alt=&quot;The unified Routes page in the Cloudflare dashboard, showing routes across connectors in a single table&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;948&quot;&gt;
&lt;p&gt;From the unified Routes page you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visualize your network with an interactive map&lt;/strong&gt; that shows how your destinations flow through to your connectors — including equal-cost multi-path (ECMP) routes where the same prefix is served by several connectors. Select a node to filter the table down to the routes behind it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;See every route in one table&lt;/strong&gt;, with its destination, type, connector, priority, and source, and filter or sort to find what you need.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Create, edit, and delete routes&lt;/strong&gt; of any supported type without leaving the page. When adding a Cloudflare WAN or Magic Transit static route, you now pick the next hop by &lt;strong&gt;connector name&lt;/strong&gt; instead of typing its IP.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Manage &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/virtual-networks/&quot;&gt;virtual networks&lt;/a&gt;&lt;/strong&gt; from a dedicated tab.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Test a route&lt;/strong&gt; to see which connector and next hop a destination resolves to before you commit a change.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To find it, go to &lt;strong&gt;Networking&lt;/strong&gt; &amp;gt; &lt;strong&gt;Routes&lt;/strong&gt; in the dashboard sidebar.&lt;/p&gt;
&lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/magic-networks/routes&quot; data-nb-button class=&quot;group inline-flex w-max shrink-0 items-center justify-center rounded-full font-medium whitespace-nowrap no-underline shadow-xs transition-colors cursor-pointer select-none focus-visible:outline-2 focus-visible:outline-ring focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary-hover h-9 gap-1.5 px-3 text-sm&quot; target=&quot;_blank&quot;&gt;
	Go to &lt;strong&gt;Routes&lt;/strong&gt;&amp;nbsp;&amp;#8599;
&lt;/a&gt;
&lt;p&gt;Your existing routes, APIs, and configurations are unchanged — this is a dashboard experience that brings them together in one place. Learn how to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/routes/add-routes/&quot;&gt;add routes&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/virtual-networks/&quot;&gt;manage virtual networks&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate><product>Cloudflare Mesh</product><category>Cloudflare Mesh</category><category>Cloudflare Tunnel</category><category>Cloudflare WAN</category><category>Cloudflare One</category></item><item><title>Workers - Temporary accounts for AI agent deployments</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-19-temporary-accounts-for-agents/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-19-temporary-accounts-for-agents/</guid><description>&lt;p&gt;AI agents can now deploy Workers to Cloudflare without first requiring a user to sign up, open a browser-based OAuth flow, click through the dashboard, or create an API token. When an agent tries to deploy without Cloudflare credentials, Wrangler can tell it to rerun with &lt;code&gt;--temporary&lt;/code&gt;, then deploy the Worker to a temporary preview account.&lt;/p&gt;
&lt;p&gt;To try this with your agent, update to Wrangler 4.102.0 or later, make sure you are logged out (&lt;code&gt;wrangler logout&lt;/code&gt;), and then ask your agent to build something and deploy it to Cloudflare. The agent should follow Wrangler&apos;s output and deploy using the &lt;code&gt;--temporary&lt;/code&gt; flag.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1748,height=368,format=webp/_astro/claim-deployments-flow.Co0tUHG4.png&quot; alt=&quot;Diagram showing an AI agent deploying, verifying, and redeploying a Worker to a temporary account, then claiming it after authentication and moving it to a permanent account&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1748&quot; height=&quot;368&quot;&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; deploy&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --temporary&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The temporary deployment stays live for 60 minutes. During that window, the agent can verify the Worker, redeploy changes, and return both the live Worker URL and claim URL. Opening the claim URL lets you sign in to or create a Cloudflare account and make the temporary account permanent.&lt;/p&gt;
&lt;p&gt;Temporary preview accounts currently support a limited set of products, including Workers, Workers Static Assets, Workers KV, D1, Durable Objects, Hyperdrive, Queues, and SSL/TLS certificates. For supported products, limits, and claim behavior, refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/platform/claim-deployments/&quot;&gt;Claim deployments (temporary accounts)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For more context, refer to &lt;a href=&quot;https://blog.cloudflare.com/temporary-accounts/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Temporary Cloudflare Accounts for Agents&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare One, Access - Cloudflare identity provider is now the default for new accounts</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-18-cloudflare-idp-default/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-18-cloudflare-idp-default/</guid><description>&lt;p&gt;When you create a new Zero Trust organization, Cloudflare now adds the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/identity-providers/cloudflare/&quot;&gt;Cloudflare identity provider&lt;/a&gt; as your default login method. Previously, new organizations started with &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/identity-providers/one-time-pin/&quot;&gt;one-time PIN (OTP)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;With the Cloudflare identity provider, your users authenticate using their existing Cloudflare account credentials, and authentication is restricted to members of your account. You can still add OTP or connect any &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/identity-providers/&quot;&gt;third-party identity provider&lt;/a&gt; whenever you need to.&lt;/p&gt;
&lt;p&gt;This change only applies to newly created accounts. Existing organizations keep the login methods they already have configured. If you would like to use the Cloudflare Identity Provider in an existing account, you must enable it.&lt;/p&gt;</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category><category>Access</category></item><item><title>Cloudflare Images - New optimization features in Images</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-16-new-optimization-features/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-16-new-optimization-features/</guid><description>&lt;p&gt;These updates introduce new features for optimizing and manipulating with Images:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;New &lt;code&gt;composite&lt;/code&gt; option:&lt;/strong&gt; Control how &lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/draw-overlays/#composite&quot;&gt;overlays are blended&lt;/a&gt; with the base image.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Percentage widths:&lt;/strong&gt; Set the dimensions of an overlay as &lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/draw-overlays/#width-and-height&quot;&gt;a fraction of the dimensions&lt;/a&gt; of the base image.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New &lt;code&gt;fit&lt;/code&gt; modes:&lt;/strong&gt; Use &lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/features/#aspect-crop&quot;&gt;&lt;code&gt;aspect-crop&lt;/code&gt;&lt;/a&gt; to always preserve the target aspect ratio or &lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/features/#scale-up&quot;&gt;&lt;code&gt;scale-up&lt;/code&gt;&lt;/a&gt; to always enlarge images.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New &lt;code&gt;upscale&lt;/code&gt; parameter:&lt;/strong&gt; Apply &lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/features/#upscale&quot;&gt;AI upscaling&lt;/a&gt; to produce sharper, more detailed results when enlarging images.&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate><product>Cloudflare Images</product><category>Cloudflare Images</category></item><item><title>Workers - Workers tracing now supports custom spans</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-16-custom-spans/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-16-custom-spans/</guid><description>&lt;p&gt;You can now create custom trace spans in your Workers code using &lt;code&gt;tracing.enterSpan()&lt;/code&gt;. Custom spans appear alongside the automatic platform instrumentation (fetch calls, KV reads, D1 queries, and other platform operations) in your traces and OpenTelemetry exports, with correct parent-child nesting.&lt;/p&gt;
&lt;p&gt;The API is available via &lt;code&gt;import { tracing } from &quot;cloudflare:workers&quot;&lt;/code&gt; or through the handler context as &lt;code&gt;ctx.tracing&lt;/code&gt;:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { tracing } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;cloudflare:workers&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; tracing.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;enterSpan&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;handleRequest&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;async&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;span&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;      span.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;setAttribute&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;url.path&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; URL&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(request.url).pathname);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;      const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; data&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;MY_KV&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;key&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;      return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(data);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Spans nest automatically based on the JavaScript async context, and are auto-ended when the callback returns or its returned promise settles. The &lt;code&gt;Span&lt;/code&gt; object provides &lt;code&gt;setAttribute(key, value)&lt;/code&gt; for attaching metadata and an &lt;code&gt;isTraced&lt;/code&gt; property to check whether the current request is being sampled.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1988,height=670,format=webp/_astro/wobs_custom_spans_screenshot.B-hsHjyv.png&quot; alt=&quot;Trace waterfall showing custom spans nested alongside automatic KV and fetch instrumentation&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1988&quot; height=&quot;670&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/traces/#how-to-enable-tracing&quot;&gt;Tracing must be enabled&lt;/a&gt; in your Wrangler configuration for spans to be recorded.&lt;/p&gt;
&lt;p&gt;For full API details and examples, refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/traces/custom-spans/&quot;&gt;Custom spans&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Data Loss Prevention - Define custom topics for AI prompt protection</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-11-custom-ai-prompt-topics/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-11-custom-ai-prompt-topics/</guid><description>&lt;p&gt;You can now define custom topics for AI prompt protection. Predefined &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/detection-entries/configure-detection-entries/#ai-prompt-topics&quot;&gt;AI prompt topics&lt;/a&gt; cover common content and intent categories such as PII, source code, and jailbreak attempts. Custom topics let you detect unique or proprietary concepts that are not included in predefined categories.&lt;/p&gt;
&lt;p&gt;You describe a custom topic in natural language, and Cloudflare DLP detects whether a prompt matches that topic based on context rather than specific keywords. For example, a topic that describes confidential merger discussions matches a prompt that paraphrases the deal, even when the prompt never uses the word merger or names the companies involved. To detect literal values such as internal codenames or product identifiers, use a &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/detection-entries/configure-detection-entries/#custom-wordlist-datasets&quot;&gt;custom wordlist or pattern entry&lt;/a&gt; instead.&lt;/p&gt;
&lt;p&gt;Custom topics run through the same &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/#granular-controls&quot;&gt;application granular controls&lt;/a&gt; path as predefined AI prompt topics. Custom topics are available for ChatGPT, Google Gemini, Perplexity, and Claude.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;create-a-custom-ai-prompt-topic&quot;&gt;Create a custom AI prompt topic&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#create-a-custom-ai-prompt-topic&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;In the &lt;a href=&quot;https://dash.cloudflare.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, go to &lt;strong&gt;Zero Trust&lt;/strong&gt; &amp;gt; &lt;strong&gt;Data loss prevention&lt;/strong&gt; &amp;gt; &lt;strong&gt;Detection entries&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;AI prompt topics&lt;/strong&gt;, then select &lt;strong&gt;Custom Prompt Topic&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Describe the topic in natural language. Be specific about the concept you want to detect. For example, describe unreleased product roadmap details or confidential customer contract terms.&lt;/li&gt;
&lt;li&gt;Add this detection entry to an existing DLP profile, or &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/dlp-profiles/#build-a-custom-profile&quot;&gt;create a new DLP profile&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Use the profile in a Gateway HTTP policy to log or block prompts that match the topic.&lt;/li&gt;
&lt;/ol&gt;
&lt;aside role=&quot;note&quot; aria-label=&quot;Note&quot; class=&quot;aside-card flex items-start gap-3 rounded-lg px-4 py-3 my-4&quot; style=&quot;--_c: var(--nb-info); --_t: var(--nb-info-muted);&quot; data-astro-cid-znle5jil&gt;&lt;span class=&quot;flex h-[1.375em] shrink-0 items-center&quot; aria-hidden=&quot;true&quot; data-astro-cid-znle5jil&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[1em] w-[1em]&quot; data-astro-cid-znle5jil=&quot;true&quot; data-icon=&quot;ph:info&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24m0 192a88 88 0 1 1 88-88a88.1 88.1 0 0 1-88 88m16-40a8 8 0 0 1-8 8a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 8 8m-32-92a12 12 0 1 1 12 12a12 12 0 0 1-12-12&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div class=&quot;flex min-w-0 flex-1 flex-col gap-0.5&quot; data-astro-cid-znle5jil&gt;&lt;p class=&quot;m-0 text-base leading-snug font-semibold&quot; data-astro-cid-znle5jil&gt;Note&lt;/p&gt;&lt;div class=&quot;aside-card-body text-sm leading-normal&quot; data-astro-cid-znle5jil&gt;&lt;p&gt;Write the description as a concept to classify, not a list of keywords. For example, describe &quot;internal financial forecasts and unreleased revenue figures&quot; rather than listing specific document names.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/detection-entries/configure-detection-entries/#ai-prompt-topics&quot;&gt;AI prompt topics&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate><product>Data Loss Prevention</product><category>Data Loss Prevention</category></item><item><title>Workers - Track Dynamic Workers usage from the dashboard and GraphQL API</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-11-dynamic-workers-count/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-11-dynamic-workers-count/</guid><description>&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1476,height=1102,format=webp/_astro/dynamic-workers-count.BcGsgQ0m.png&quot; alt=&quot;Dynamic Workers usage on the Workers overview page&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1476&quot; height=&quot;1102&quot;&gt;
&lt;p&gt;Customers can now view the number of &lt;a href=&quot;https://docs.infinitegaming.org/dynamic-workers/&quot;&gt;Dynamic Workers&lt;/a&gt; invoked during their billing period from the Workers overview page in the Cloudflare dashboard.&lt;/p&gt;
&lt;p&gt;This count reflects the number of Dynamic Workers that Cloudflare would bill for during the selected billing period. Dynamic Workers usage data only goes back to June 1, 2026.&lt;/p&gt;
&lt;p&gt;You can also query this count through the &lt;a href=&quot;https://docs.infinitegaming.org/analytics/graphql-api/&quot;&gt;GraphQL Analytics API&lt;/a&gt; by using &lt;code&gt;workersInvocationsByOwnerAndScriptGroups&lt;/code&gt; and selecting &lt;code&gt;distinctDynamicWorkerCount&lt;/code&gt;:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;graphql&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;graphql&quot; data-nb-lang=&quot;graphql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;query&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; getDynamicWorkersCount&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;	$accountTag&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;string&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;	$filter&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;AccountWorkersInvocationsByOwnerAndScriptGroupsFilter_InputObject&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;	viewer&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;		accounts&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: { &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;accountTag&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;$accountTag&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; }) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;			workersInvocationsByOwnerAndScriptGroups&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;limit&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;10000&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;$filter&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;				uniq&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;					distinctDynamicWorkerCount&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Use variables to set the account and billing-period date range:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;json&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot; data-nb-lang=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;accountTag&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&amp;lt;ACCOUNT_ID&amp;gt;&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;filter&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;date_geq&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;2026-06-01&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;date_leq&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;2026-06-30&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/dynamic-workers/pricing/&quot;&gt;Dynamic Workers pricing&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare Images - Manage hosted images with the Images binding</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-10-hosted-images-binding/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-10-hosted-images-binding/</guid><description>&lt;p&gt;Use the Images binding to upload, list, retrieve, update, and delete images stored in Images directly from your Worker without managing API tokens or making HTTP requests.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;env.IMAGES.hosted&lt;/code&gt; namespace supports the following storage and management operations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/images/storage/binding/#uploadimage-options&quot;&gt;&lt;code&gt;.upload(image, options)&lt;/code&gt;&lt;/a&gt; — Upload a new image to your account.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/images/storage/binding/#listoptions&quot;&gt;&lt;code&gt;.list(options)&lt;/code&gt;&lt;/a&gt; — List images with pagination.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/images/storage/binding/#imageimageiddetails&quot;&gt;&lt;code&gt;.image(imageId).details()&lt;/code&gt;&lt;/a&gt; — Get image metadata.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/images/storage/binding/#imageimageidbytes&quot;&gt;&lt;code&gt;.image(imageId).bytes()&lt;/code&gt;&lt;/a&gt; — Stream the original image bytes.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/images/storage/binding/#imageimageidupdateoptions&quot;&gt;&lt;code&gt;.image(imageId).update(options)&lt;/code&gt;&lt;/a&gt; — Update metadata or access controls.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/images/storage/binding/#imageimageiddelete&quot;&gt;&lt;code&gt;.image(imageId).delete()&lt;/code&gt;&lt;/a&gt; — Delete an image.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, you can upload an image from a request body and return its metadata:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; image&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;IMAGES&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.hosted.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;upload&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(request.body, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	filename: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;upload.jpg&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	metadata: { source: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;worker&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; Response.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(image);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Or retrieve and serve the original bytes of a hosted image:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; bytes&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;IMAGES&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.hosted.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;image&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;IMAGE_ID&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;bytes&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(bytes);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;For more information, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/images/storage/binding/&quot;&gt;Images binding&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 10 Jun 2026 00:00:00 GMT</pubDate><product>Cloudflare Images</product><category>Cloudflare Images</category></item><item><title>Gateway, Cloudflare Mesh, Workers VPC - Filter Workers&apos; public Internet traffic using Gateway policies</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-05-gateway-egress/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-05-gateway-egress/</guid><description>
&lt;p&gt;Workers using a &lt;a href=&quot;https://docs.infinitegaming.org/workers-vpc/configuration/vpc-networks/&quot;&gt;VPC Network&lt;/a&gt; binding with &lt;code&gt;network_id: &quot;cf1:network&quot;&lt;/code&gt; now egress to public Internet destinations through &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/&quot;&gt;Cloudflare Gateway&lt;/a&gt;. This means your existing Zero Trust traffic policies — DNS, HTTP, Network, and egress — extend to traffic that originates from your Workers, the same way they do for WARP users today.&lt;/p&gt;
&lt;figure class=&quot;vpc-egress-diagram not-content&quot; aria-label=&quot;Workers VPC public Internet egress through Cloudflare Mesh and Cloudflare Gateway&quot; data-astro-cid-lmo6yva7&gt;&lt;ol class=&quot;flow&quot; data-astro-cid-lmo6yva7&gt;&lt;li class=&quot;flow-step&quot; data-astro-cid-lmo6yva7&gt;&lt;div class=&quot;node-card worker-card&quot; data-astro-cid-lmo6yva7&gt;&lt;div class=&quot;node-header&quot; data-astro-cid-lmo6yva7&gt;&lt;span class=&quot;node-icon worker-icon&quot; aria-hidden=&quot;true&quot; data-astro-cid-lmo6yva7&gt;&lt;svg width=&quot;0.98em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 48 49&quot; data-astro-cid-lmo6yva7=&quot;true&quot; data-icon=&quot;workers&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m18.63 37.418-9.645-12.9 9.592-12.533-1.852-2.527L5.917 23.595l-.015 1.808 10.86 14.542z&quot;/&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M21.997 6.503h-3.712l13.387 18.3-13.072 17.7h3.735L35.4 24.81z&quot;/&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M29.175 6.503h-3.758l13.598 18.082-13.598 17.918h3.765l12.908-17.01v-1.808z&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;a class=&quot;node-title&quot; href=&quot;https://docs.infinitegaming.org/workers/&quot; data-astro-cid-lmo6yva7&gt;Worker&lt;/a&gt;&lt;/div&gt;&lt;p class=&quot;node-caption&quot; data-astro-cid-lmo6yva7&gt;Calls &lt;code data-astro-cid-lmo6yva7&gt;env.EGRESS.fetch()&lt;/code&gt;&lt;/p&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;flow-connector&quot; data-astro-cid-lmo6yva7&gt;&lt;a class=&quot;connector-label&quot; href=&quot;https://docs.infinitegaming.org/workers-vpc/&quot; data-astro-cid-lmo6yva7&gt;VPC binding&lt;/a&gt;&lt;span class=&quot;connector-arrow&quot; aria-hidden=&quot;true&quot; data-astro-cid-lmo6yva7&gt;↓&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;flow-step&quot; data-astro-cid-lmo6yva7&gt;&lt;div class=&quot;node-card mesh-card&quot; data-astro-cid-lmo6yva7&gt;&lt;div class=&quot;node-header&quot; data-astro-cid-lmo6yva7&gt;&lt;span class=&quot;node-icon mesh-icon&quot; aria-hidden=&quot;true&quot; data-astro-cid-lmo6yva7&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 32 32&quot; data-astro-cid-lmo6yva7=&quot;true&quot; data-icon=&quot;cloudflare-mesh&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M10 6a2 2 0 1 1-4 0 2 2 0 0 1 4 0m6-2a2 2 0 1 0 0 4 2 2 0 0 0 0-4m8 4a2 2 0 1 0 0-4 2 2 0 0 0 0 4M8 11a2 2 0 1 0 0 4 2 2 0 0 0 0-4m8 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4m8 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4M8 18a2 2 0 1 0 0 4 2 2 0 0 0 0-4m8 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4m0 7a2 2 0 1 0 0 4 2 2 0 0 0 0-4m8-7a2 2 0 1 0 0 4 2 2 0 0 0 0-4&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;a class=&quot;node-title&quot; href=&quot;https://docs.infinitegaming.org/mesh/&quot; data-astro-cid-lmo6yva7&gt;Cloudflare Mesh&lt;/a&gt;&lt;/div&gt;&lt;p class=&quot;node-caption&quot; data-astro-cid-lmo6yva7&gt;Bind via &lt;a class=&quot;inline-pill mesh-pill&quot; href=&quot;https://docs.infinitegaming.org/workers-vpc/configuration/vpc-networks/&quot; data-astro-cid-lmo6yva7&gt;&lt;code data-astro-cid-lmo6yva7&gt;cf1:network&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;flow-connector&quot; aria-hidden=&quot;true&quot; data-astro-cid-lmo6yva7&gt;&lt;span class=&quot;connector-arrow&quot; data-astro-cid-lmo6yva7&gt;↓&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;flow-step&quot; data-astro-cid-lmo6yva7&gt;&lt;div class=&quot;node-card gateway-card&quot; data-astro-cid-lmo6yva7&gt;&lt;div class=&quot;node-header&quot; data-astro-cid-lmo6yva7&gt;&lt;span class=&quot;node-icon gateway-icon&quot; aria-hidden=&quot;true&quot; data-astro-cid-lmo6yva7&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 16 16&quot; data-astro-cid-lmo6yva7=&quot;true&quot; data-icon=&quot;gateway&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M15.45 7.125h-2.577V3.508l-.41-.408H3.925l-.41.41v3.08h.922V4.023h7.513v7.555H4.438v-1.553h-.923v2.065l.41.41h8.538l.41-.41V8.048H16z&quot;/&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M8.453 7.238H0l.517.87H8.97zM9.21 8.51H.755l.517.868h8.453z&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;a class=&quot;node-title&quot; href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/&quot; data-astro-cid-lmo6yva7&gt;Cloudflare Gateway&lt;/a&gt;&lt;/div&gt;&lt;p class=&quot;node-caption&quot; data-astro-cid-lmo6yva7&gt;Policies applied:&lt;/p&gt;&lt;div class=&quot;pill-row&quot; data-astro-cid-lmo6yva7&gt;&lt;a class=&quot;policy-pill&quot; href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/dns-policies/&quot; data-astro-cid-lmo6yva7&gt;DNS&lt;/a&gt;&lt;a class=&quot;policy-pill&quot; href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/&quot; data-astro-cid-lmo6yva7&gt;HTTP&lt;/a&gt;&lt;a class=&quot;policy-pill&quot; href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/network-policies/&quot; data-astro-cid-lmo6yva7&gt;Network&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;flow-connector&quot; aria-hidden=&quot;true&quot; data-astro-cid-lmo6yva7&gt;&lt;span class=&quot;connector-arrow&quot; data-astro-cid-lmo6yva7&gt;↓&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;flow-step&quot; data-astro-cid-lmo6yva7&gt;&lt;div class=&quot;node-card internet-card&quot; data-astro-cid-lmo6yva7&gt;&lt;div class=&quot;node-header&quot; data-astro-cid-lmo6yva7&gt;&lt;span class=&quot;node-icon internet-icon&quot; aria-hidden=&quot;true&quot; data-astro-cid-lmo6yva7&gt;↗&lt;/span&gt;&lt;span class=&quot;node-title&quot; data-astro-cid-lmo6yva7&gt;Public Internet&lt;/span&gt;&lt;/div&gt;&lt;p class=&quot;node-caption&quot; data-astro-cid-lmo6yva7&gt;Any public hostname or IP&lt;/p&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;a class=&quot;logs-card&quot; href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/logs/dashboard-logs/gateway-logs/&quot; aria-label=&quot;Gateway logs&quot; data-astro-cid-lmo6yva7&gt;&lt;span class=&quot;logs-title&quot; data-astro-cid-lmo6yva7&gt;Gateway logs&lt;/span&gt;&lt;span class=&quot;logs-pills&quot; data-astro-cid-lmo6yva7&gt;&lt;span class=&quot;logs-pill&quot; data-astro-cid-lmo6yva7&gt;DNS&lt;/span&gt;&lt;span class=&quot;logs-pill&quot; data-astro-cid-lmo6yva7&gt;HTTP&lt;/span&gt;&lt;span class=&quot;logs-pill&quot; data-astro-cid-lmo6yva7&gt;Network&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;What you get by default:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visibility.&lt;/strong&gt; Worker egress shows up in Gateway &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/dns-policies/&quot;&gt;DNS&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/&quot;&gt;HTTP&lt;/a&gt;, and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/network-policies/&quot;&gt;Network&lt;/a&gt; logs alongside your other traffic, so you can audit what your Workers are calling and when.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enforcement.&lt;/strong&gt; Any existing Gateway policy whose selectors match a Worker request will apply — including allow / block lists, DNS category filtering, and HTTP destination rules. If you have already blocked a category for your workforce, your Workers inherit that block.&lt;/li&gt;
&lt;/ul&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;vpc_networks&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;binding&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;EGRESS&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;network_id&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;cf1:network&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;remote&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;vpc_networks&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;binding = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;EGRESS&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;network_id = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;cf1:network&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;remote = &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// Egress to a public destination — subject to your Gateway policies and logged&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; response&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;EGRESS&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;https://api.example.com/data&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// Egress to a public destination — subject to your Gateway policies and logged&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; response&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;EGRESS&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;https://api.example.com/data&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;For configuration options, refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers-vpc/configuration/vpc-networks/&quot;&gt;VPC Networks&lt;/a&gt;. For policy authoring, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/&quot;&gt;Cloudflare Gateway traffic policies&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category><category>Cloudflare Mesh</category><category>Workers VPC</category></item><item><title>Access - Share identity providers across accounts with IdP federation</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-04-idp-federation/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-04-idp-federation/</guid><description>&lt;p&gt;Cloudflare Access now supports &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/identity-providers/idp-federation/&quot;&gt;IdP federation&lt;/a&gt;, which allows organizations to share a single identity provider across multiple Cloudflare accounts.&lt;/p&gt;
&lt;p&gt;Instead of configuring the same IdP (for example, Okta or Entra ID) separately in every account, you configure it once in a source account and share it with the other accounts in your organization. Each recipient account gets a read-only IdP connection that routes authentication back to the source account through a bridge — a hidden application in the source account that brokers the cross-account login. End users sign in with their existing IdP credentials, and each account&apos;s Access policies evaluate the resulting identity just like any other IdP login.&lt;/p&gt;
&lt;p&gt;Key capabilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;One IdP, many accounts&lt;/strong&gt; — Configure your IdP once and share it with all accounts in your organization.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lifecycle management&lt;/strong&gt; — As accounts join or leave your Cloudflare organization, their IdP connections are provisioned and removed automatically — no manual cleanup required.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Immutable recipient connections&lt;/strong&gt; — IdP connections in recipient accounts cannot be accidentally modified or deleted.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To get started, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/identity-providers/idp-federation/&quot;&gt;IdP federation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Cloudflare Fundamentals, Workers, D1, R2, KV, Queues, Vectorize, Durable Objects, Containers - Billable usage and budget alerts now in product sidebars</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-04-billable-usage-product-sidebar/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-04-billable-usage-product-sidebar/</guid><description>&lt;p&gt;Pay-as-you-go customers can now view billable usage and create &lt;a href=&quot;https://docs.infinitegaming.org/changelog/post/2026-04-13-billable-usage-dashboard-and-budget-alerts/&quot;&gt;budget alerts&lt;/a&gt; directly from the product overview pages for &lt;a href=&quot;https://docs.infinitegaming.org/workers/&quot;&gt;Workers &amp;amp; Pages&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/d1/&quot;&gt;D1&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/r2/&quot;&gt;R2&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/kv/&quot;&gt;Workers KV&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/queues/&quot;&gt;Queues&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/vectorize/&quot;&gt;Vectorize&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/&quot;&gt;Durable Objects&lt;/a&gt;, and &lt;a href=&quot;https://docs.infinitegaming.org/containers/&quot;&gt;Containers&lt;/a&gt;. A new sidebar widget shows current-period spend and the billing cycle date range, alongside a button to create a budget alert.&lt;/p&gt;
&lt;p&gt;The widget pulls from the same data as the &lt;a href=&quot;https://docs.infinitegaming.org/changelog/post/2026-04-13-billable-usage-dashboard-and-budget-alerts/&quot;&gt;Billable Usage dashboard&lt;/a&gt; and aligns to your billing cycle (or the current day on Free plans), so the numbers match your invoice. Enterprise contract accounts are not yet supported.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2872,height=1614,format=webp/_astro/2026-06-04-billable-usage-product-sidebar.BUuIokn_.png&quot; alt=&quot;Billable usage widget in the Durable Objects product sidebar showing current-period spend and a breakdown by service&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2872&quot; height=&quot;1614&quot;&gt;
&lt;p&gt;Selecting &lt;strong&gt;Create budget alert&lt;/strong&gt; opens the budget alert flow inline so you can set a dollar threshold in the same place you are reviewing usage. Budget alerts apply to your total account-level spend across all products, not just the product page you create them from.&lt;/p&gt;
&lt;p&gt;For more information, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/billing/&quot;&gt;Usage-based billing documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate><product>Cloudflare Fundamentals</product><category>Cloudflare Fundamentals</category><category>Workers</category><category>D1</category><category>R2</category><category>KV</category><category>Queues</category><category>Vectorize</category><category>Durable Objects</category><category>Containers</category></item><item><title>Access - SAML assertion encryption for identity providers</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-03-saml-assertion-encryption/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-03-saml-assertion-encryption/</guid><description>&lt;p&gt;Cloudflare Access now supports SAML assertion encryption for identity provider integrations. When turned on, your identity provider encrypts SAML assertions using a Cloudflare-managed certificate before sending them through the user&apos;s browser. Only Access can decrypt these assertions, protecting sensitive identity data even after TLS termination.&lt;/p&gt;
&lt;p&gt;Without encryption, SAML assertions are transmitted in plaintext and could be visible to browser extensions or client-side malware.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1698,height=344,format=webp/_astro/saml-encryption.J5jmiYv8.png&quot; alt=&quot;SAML encryption toggle in the identity provider configuration&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1698&quot; height=&quot;344&quot;&gt;
&lt;p&gt;SAML encryption includes built-in certificate lifecycle management:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Automatic certificate generation&lt;/strong&gt;: Access generates an encryption certificate when you turn on SAML encryption for an identity provider.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Certificate rotation&lt;/strong&gt;: Rotate certificates without downtime. The previous certificate remains valid until expiration, giving you time to update your IdP.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PEM export&lt;/strong&gt;: Copy the certificate in PEM format for manual upload to your IdP, or point your IdP to the SAML metadata endpoint for automatic retrieval.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To get started, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/identity-providers/generic-saml/#encrypt-saml-assertions&quot;&gt;Encrypt SAML assertions&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Workers - New Workers bulk secrets API endpoint</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-03-bulk-secrets-api/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-03-bulk-secrets-api/</guid><description>&lt;p&gt;You can now create, update, or delete multiple secrets for your Worker in a single request using the &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/workers/subresources/scripts/subresources/secrets/methods/bulk_update/&quot;&gt;bulk secrets endpoint&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Include a secret with a value to create or update.&lt;/li&gt;
&lt;li&gt;Set a secret to &lt;code&gt;null&lt;/code&gt; to delete.&lt;/li&gt;
&lt;li&gt;Secrets not included in the request are left unchanged.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following example creates &lt;code&gt;API_KEY&lt;/code&gt;, updates the already existing &lt;code&gt;DB_PASSWORD&lt;/code&gt;, and deletes &lt;code&gt;OLD_SECRET&lt;/code&gt;:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;json&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot; data-nb-lang=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;secrets&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;    &quot;API_KEY&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: { &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;&quot;type&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;secret_text&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;API_KEY&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;&quot;text&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my-api-key&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;    &quot;DB_PASSWORD&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: { &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;&quot;type&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;secret_text&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;DB_PASSWORD&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;&quot;text&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my-db-password&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;    &quot;OLD_SECRET&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;null&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You can do the same from the command line using &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/workers/#secret-bulk&quot;&gt;&lt;code&gt;wrangler secret bulk&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;npx&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; secret&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; bulk&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; secrets.json&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;To delete a key, set its value to &lt;code&gt;null&lt;/code&gt; in the JSON file. Deletion is not supported with &lt;code&gt;.env&lt;/code&gt; files.&lt;/p&gt;
&lt;p&gt;Each request supports up to &lt;strong&gt;100 total operations&lt;/strong&gt; (creates, updates, and deletes combined).&lt;/p&gt;</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Store Wrangler&apos;s OAuth credentials in your OS keychain</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-03-wrangler-keyring-credential-storage/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-03-wrangler-keyring-credential-storage/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/&quot;&gt;Wrangler&lt;/a&gt; can now store the OAuth credentials returned by &lt;code&gt;wrangler login&lt;/code&gt; in an &lt;a href=&quot;https://en.wikipedia.org/wiki/Galois/Counter_Mode&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AES-256-GCM&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;-encrypted file, with the encryption key held in your operating system keychain. The default behavior is unchanged — credentials still live in a plaintext TOML file unless you opt in.&lt;/p&gt;
&lt;p&gt;To opt in, run:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;npx&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; login&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --use-keyring&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The choice is persisted across Wrangler invocations. Opt back out with &lt;code&gt;npx wrangler login --no-use-keyring&lt;/code&gt;, or override the preference for a single command with the &lt;code&gt;CLOUDFLARE_AUTH_USE_KEYRING&lt;/code&gt; environment variable.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;wrangler whoami&lt;/code&gt; now reports where credentials are stored:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;🔐&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Credentials&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; are&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; stored&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; in:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Encrypted&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; file&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (~/.config/.wrangler/config/default.enc) with key in macOS Keychain (service&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;wrangler,&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; account&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Per-platform backends:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;macOS&lt;/strong&gt; uses the built-in Keychain via &lt;code&gt;/usr/bin/security&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Linux&lt;/strong&gt; uses &lt;a href=&quot;https://wiki.gnome.org/Projects/Libsecret&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;libsecret&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; via the &lt;code&gt;secret-tool&lt;/code&gt; CLI from the &lt;code&gt;libsecret-tools&lt;/code&gt; package.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Windows&lt;/strong&gt; uses Credential Manager via &lt;a href=&quot;https://www.npmjs.com/package/@napi-rs/keyring&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;@napi-rs/keyring&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, installed on-demand the first time you opt in.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/general/#storing-oauth-credentials-in-the-os-keychain&quot;&gt;Storing OAuth credentials in the OS keychain&lt;/a&gt; for the full details, including the migration behavior on opt-in/opt-out and the &lt;code&gt;CLOUDFLARE_AUTH_USE_KEYRING&lt;/code&gt; environment variable.&lt;/p&gt;</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare WAN, Cloudflare One - Cisco IOS XE</title><link>https://docs.infinitegaming.org/changelog/post/2026-06-02-cisco-ios-xe/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-06-02-cisco-ios-xe/</guid><description>&lt;p&gt;The Cisco IOS XE third-party integration guide for Cloudflare WAN has been updated to include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Post Quantum Cryptography (PQC)&lt;/li&gt;
&lt;li&gt;Policy-Based Routing (PBR)&lt;/li&gt;
&lt;li&gt;IP Service Level Agreement (IP SLA)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This link will take you directly to the updated &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/third-party/cisco-ios-xe/&quot;&gt;Cisco IOS XE&lt;/a&gt; guide.&lt;/p&gt;</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate><product>Cloudflare WAN</product><category>Cloudflare WAN</category><category>Cloudflare One</category></item><item><title>Cloudflare One Client - Cloudflare One Client for macOS (version 2026.5.1155.1)</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-29-warp-macos-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-29-warp-macos-beta/</guid><description>&lt;p&gt;A new Beta release for the macOS Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/beta-releases/&quot;&gt;beta releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release introduces the new Cloudflare One Client UI for macOS! You can expect a cleaner and more intuitive design as well as easier access to common actions and information. Here are some of the many things we have found our users appreciate:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Right click context menu to access the most common client actions quickly&lt;/li&gt;
&lt;li&gt;Built-in captive portal login experience&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Additional Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The client now applies DNS search suffixes configured in your &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/device-profiles&quot;&gt;device profile&lt;/a&gt; / &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/network-policies&quot;&gt;network policy&lt;/a&gt;. Administrators can push a list of DNS search domains that the client appends to single-label queries, alongside any system-configured suffixes. See &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/#dns-search-suffixes&quot;&gt;DNS search suffixes&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;Administrators can now control which virtual networks (VNETs) are available to which users via WARP device profile settings in the Zero Trust dashboard. Previously, every VNET in the organization was visible to every device; you can now scope the VNET picker per profile so users only see the networks relevant to them. See &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/#vnet-availability&quot;&gt;VNET availability&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;Added a local-file signal source for Emergency Disconnect. In addition to the existing HTTPS polling mechanism, administrators can now configure WARP to monitor for a file on disk; the presence of the file triggers an emergency disconnect even if both Cloudflare and your own infrastructure are unreachable. Either signal being asserted triggers disconnect; both must be cleared for normal operation to resume.&lt;/li&gt;
&lt;li&gt;Added new warp-cli debug commands for interactive connection diagnosis. See &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/troubleshooting/diagnostic-logs/#extra-debug-logging&quot;&gt;Extra debug logging&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;The local DNS proxy now supports DNSSEC passthrough. DNSSEC-signed responses are forwarded to the application intact (including DO/AD bits and RRSIG records), so applications that validate DNSSEC locally — including resolvers and the dig/drill tooling — work correctly through the client.&lt;/li&gt;
&lt;li&gt;Added a new MDM format for organization-wide settings, including a cleaner way to configure the compliance environment (e.g. FedRAMP). The previous per-configuration approach still works, but the new format is now recommended. See the updated &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/parameters/#organization_configs&quot;&gt;Cloudflare One MDM documentation&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;Client Certificate device-posture checks now support template variables (e.g. &lt;code&gt;${serial_number}&lt;/code&gt;, &lt;code&gt;${device_uuid}&lt;/code&gt;) in the Subject Alternative Name field, matching what the documentation has always claimed. Previously only the Common Name field accepted variables, which broke posture rules that pinned identity to a SAN entry.&lt;/li&gt;
&lt;li&gt;Fixed the in-client captive-portal browser rendering a blank &quot;Success&quot; page on some airline Wi-Fi networks (United inflight Wi-Fi was the reported case). The browser now reliably loads the airline&apos;s real portal page so users can complete sign-in from inside the client instead of having to open a separate browser.&lt;/li&gt;
&lt;li&gt;Fixed an issue in proxy mode where hostnames containing underscores (e.g. ai_app.com) were rejected, breaking apps that depend on such hostnames (notably ChatGPT sandbox apps). The local proxy now accepts underscore-containing hostnames in CONNECT requests.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Registration may hang at &quot;Checking your organization configuration&quot; due to IPC errors. A system reboot should resolve the error, allowing registration to proceed.&lt;/li&gt;
&lt;li&gt;Split tunnel list configuration is not available in the new UI. Management of split tunnel entries is currently only possible via &lt;code&gt;warp-cli tunnel ip&lt;/code&gt; and &lt;code&gt;warp-cli tunnel host&lt;/code&gt;. UI support will be added in a future release.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Fri, 29 May 2026 00:55:38 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Windows (version 2026.5.1155.1)</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-29-warp-windows-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-29-warp-windows-beta/</guid><description>&lt;p&gt;A new Beta release for the Windows Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/beta-releases/&quot;&gt;beta releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release introduces the new Cloudflare One Client UI for Windows! You can expect a cleaner and more intuitive design as well as easier access to common actions and information. Here are some of the many things we have found our users appreciate:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Right click context menu to access the most common client actions quickly&lt;/li&gt;
&lt;li&gt;Built-in captive portal login experience&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Additional Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The client now applies DNS search suffixes configured in your &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/device-profiles&quot;&gt;device profile&lt;/a&gt; / &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/network-policies&quot;&gt;network policy&lt;/a&gt;. Administrators can push a list of DNS search domains that the client appends to single-label queries, alongside any system-configured suffixes. See &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/#dns-search-suffixes&quot;&gt;DNS search suffixes&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;Administrators can now control which virtual networks (VNETs) are available to which users via WARP device profile settings in the Zero Trust dashboard. Previously, every VNET in the organization was visible to every device; you can now scope the VNET picker per profile so users only see the networks relevant to them. See &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/#vnet-availability&quot;&gt;VNET availability&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;Added mandatory authentication. When enabled via MDM, the Cloudflare One Client blocks all Internet traffic from the moment the machine boots until the user authenticates, closing the visibility gap on newly deployed devices and during re-authentication. See the &lt;a href=&quot;https://blog.cloudflare.com/mandatory-authentication-mfa/&quot;&gt;announcement blog&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/windows-no-auth-no-internet/&quot;&gt;documentation&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;Added a local-file signal source for Emergency Disconnect. In addition to the existing HTTPS polling mechanism, administrators can now configure WARP to monitor for a file on disk; the presence of the file triggers an emergency disconnect even if both Cloudflare and your own infrastructure are unreachable. Either signal being asserted triggers disconnect; both must be cleared for normal operation to resume.&lt;/li&gt;
&lt;li&gt;Added new warp-cli debug commands for interactive connection diagnosis. See &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/troubleshooting/diagnostic-logs/#extra-debug-logging&quot;&gt;Extra debug logging&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;The local DNS proxy now supports DNSSEC passthrough. DNSSEC-signed responses are forwarded to the application intact (including DO/AD bits and RRSIG records), so applications that validate DNSSEC locally — including resolvers and the dig/drill tooling — work correctly through the client.&lt;/li&gt;
&lt;li&gt;Added a new MDM format for organization-wide settings, including a cleaner way to configure the compliance environment (e.g. FedRAMP). The previous per-configuration approach still works, but the new format is now recommended. See the updated &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/parameters/#organization_configs&quot;&gt;Cloudflare One MDM documentation&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;Client Certificate device-posture checks now support template variables (e.g. &lt;code&gt;${serial_number}&lt;/code&gt;, &lt;code&gt;${device_uuid}&lt;/code&gt;) in the Subject Alternative Name field, matching what the documentation has always claimed. Previously only the Common Name field accepted variables, which broke posture rules that pinned identity to a SAN entry.&lt;/li&gt;
&lt;li&gt;The UseWebView2 registry value (HKLM\SOFTWARE\Cloudflare\CloudflareWARP\UseWebView2 = y) is once again honored by the new GUI for authentication, so administrators who prefer the embedded WebView2 browser for sign-in can opt back in. This setting was effectively ignored in the previous release; the default browser was always used. This key is now also honored for re-authentications.&lt;/li&gt;
&lt;li&gt;Fixed a crash in the authentication browser when navigating to a site that prompts for browser permissions (microphone, camera, notifications, etc.). The same fix had previously landed for the captive-portal browser; this extends it to the auth browser.&lt;/li&gt;
&lt;li&gt;Fixed an issue in proxy mode where hostnames containing underscores (e.g. ai_app.com) were rejected, breaking apps that depend on such hostnames (notably ChatGPT sandbox apps). The local proxy now accepts underscore-containing hostnames in CONNECT requests.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An error indicating that Microsoft Edge can&apos;t read and write to its data directory may be displayed during captive portal login; this error is benign and can be dismissed.&lt;/li&gt;
&lt;li&gt;Registration may hang at &quot;Checking your organization configuration&quot; due to IPC errors. A system reboot should resolve the error, allowing registration to proceed.&lt;/li&gt;
&lt;li&gt;Split tunnel list configuration is not available in the new UI. Management of Split Tunnel entries is currently only possible via &lt;code&gt;warp-cli tunnel ip&lt;/code&gt; and &lt;code&gt;warp-cli tunnel host&lt;/code&gt;. UI support will be added in a future release.&lt;/li&gt;
&lt;li&gt;Windows ARM may prompt the user to close running applications while trying to install this version. Simply click “Ok” with the default highlighted option.&lt;/li&gt;
&lt;li&gt;DNS resolution may be broken when the following conditions are all true:
&lt;ul&gt;
&lt;li&gt;The client is in Secure Web Gateway without DNS filtering (tunnel-only) mode.&lt;/li&gt;
&lt;li&gt;A custom DNS server address is configured on the primary network adapter.&lt;/li&gt;
&lt;li&gt;The custom DNS server address on the primary network adapter is changed while the client is connected.&lt;br&gt;
To work around this issue, please reconnect the client by selecting &quot;disconnect&quot; and then &quot;connect&quot; in the client user interface.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Fri, 29 May 2026 00:55:37 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Access - Tool and prompt aliases for MCP server portals</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-28-mcp-portal-tool-prompt-aliases/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-28-mcp-portal-tool-prompt-aliases/</guid><description>&lt;p&gt;When you connect third-party MCP servers through &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/&quot;&gt;MCP server portals&lt;/a&gt;, you have no control over how the server author named tools or wrote descriptions. Unclear names make it harder for AI agents to select the right tool and harder for users to understand what is available.&lt;/p&gt;
&lt;p&gt;You can now &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/#rename-tools-and-prompts-with-aliases&quot;&gt;rename tools and prompts&lt;/a&gt; and rewrite their descriptions directly on the portal, without modifying the upstream server. For example, a tool named &lt;code&gt;super_cool_tool&lt;/code&gt; can become &lt;code&gt;search_customer_records&lt;/code&gt; with a description tailored to your organization.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1640,height=1144,format=webp/_astro/portal-edit-tool-modal.DrxORhBl.png&quot; alt=&quot;Edit tool modal showing name and description fields for an MCP server tool&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1640&quot; height=&quot;1144&quot;&gt;
&lt;p&gt;Modified tools display a &lt;strong&gt;Modified&lt;/strong&gt; label in the tools list so administrators can see which tools have been customized at a glance.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1862,height=700,format=webp/_astro/portal-tools-authorized-modified.B674Xvip.png&quot; alt=&quot;Tools authorized list showing a modified label on a renamed tool&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1862&quot; height=&quot;700&quot;&gt;
&lt;p&gt;Aliases override the metadata that MCP clients receive. You can set them at two levels:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Per portal&lt;/strong&gt;: Applies only within a specific portal. Takes precedence over server-level aliases.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Per server&lt;/strong&gt;: Applies across all portals that use the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can reset an alias at any time to restore the original upstream name.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/#rename-tools-and-prompts-with-aliases&quot;&gt;Tool and prompt aliases&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Cloudflare Mesh, Cloudflare One - High availability replica management for Cloudflare Mesh</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-28-mesh-ha-replica-ui/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-28-mesh-ha-replica-ui/</guid><description>&lt;p&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/mesh/&quot;&gt;Cloudflare Mesh&lt;/a&gt; dashboard now shows per-replica details for &lt;a href=&quot;https://docs.infinitegaming.org/mesh/features/high-availability/&quot;&gt;high availability&lt;/a&gt; nodes. You can see which replica is active, view each replica&apos;s Mesh IP and connection details, and manually trigger failover — all from the node detail page.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1800,height=1155,format=webp/_astro/mesh-ha-replicas.Dvf1GMmQ.gif&quot; alt=&quot;Mesh HA replica tabs showing active and passive replicas with per-replica Mesh IPs and a manual failover option&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1155&quot;&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;whats-new&quot;&gt;What&apos;s new&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#whats-new&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Replica tabs&lt;/strong&gt; on the node detail page — switch between replicas to see each one&apos;s Mesh IP, edge data center, origin IP, platform, version, and uptime.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Active/passive badges&lt;/strong&gt; identify which replica is currently routing traffic.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Manual failover&lt;/strong&gt; — promote a passive replica to active with a single click. The previous active replica switches to standby.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HA badge&lt;/strong&gt; in the overview table identifies nodes running multiple replicas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Active replica IP&lt;/strong&gt; shown in the overview table — the dashboard now resolves which replica is active and displays the correct Mesh IP.&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;manual-failover&quot;&gt;Manual failover&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#manual-failover&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;To manually promote a passive replica:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the &lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/mesh&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, go to &lt;strong&gt;Networking&lt;/strong&gt; &amp;gt; &lt;strong&gt;Mesh&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select an HA-enabled node.&lt;/li&gt;
&lt;li&gt;Select the passive replica tab.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Promote to active&lt;/strong&gt; and confirm.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Traffic reroutes to the promoted replica immediately. Refer to &lt;a href=&quot;https://docs.infinitegaming.org/mesh/features/high-availability/&quot;&gt;High availability&lt;/a&gt; for details on failover behavior.&lt;/p&gt;</description><pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate><product>Cloudflare Mesh</product><category>Cloudflare Mesh</category><category>Cloudflare One</category></item><item><title>Cloudflare One, Gateway - Write regex using natural language in Cloudflare One</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-27-cloudy-regex-assistance/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-27-cloudy-regex-assistance/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/&quot;&gt;Cloudflare Gateway&lt;/a&gt; policy selectors which support regular expressions can now be authored in the dashboard using natural language. When building a &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/expression-syntax/&quot;&gt;policy&lt;/a&gt; with a regex-based selector (like &lt;code&gt;matches regex&lt;/code&gt;), you can describe what you want to match in plain English and the Cloudflare Agent will generate and validate a corresponding regular expression.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1000,height=638,format=webp/_astro/gateway-regex-ai-generation.CtJ0S6FS.png&quot; alt=&quot;Write policy regex using natural language&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1000&quot; height=&quot;638&quot;&gt;
&lt;p&gt;To get started, select a regex-compatible selector in the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/&quot;&gt;Gateway policy builder&lt;/a&gt; and select the icon. You&apos;ll see an input field for natural language, such as &quot;any URL starting with /api/v1&quot; or &quot;.com, .net, and .app hosts which contain &lt;code&gt;gooogle&lt;/code&gt; in the host.&quot;&lt;/p&gt;
&lt;p&gt;You can also use the tool to explain existing regular expressions. If a policy already contains a regex pattern, you can instantly generate a plain-language description.&lt;/p&gt;
&lt;p&gt;A built-in feedback mechanism allows you to rate each interaction to help improve output quality over time.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/&quot;&gt;Cloudflare One firewall policies&lt;/a&gt; and expect to see the same functionality supported soon in &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/&quot;&gt;Data loss prevention profiles&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category><category>Gateway</category></item><item><title>Cloudflare Images - Transformation flows in Images</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-27-transformation-flows/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-27-transformation-flows/</guid><description>&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1654,height=1398,format=webp/_astro/custom-flow.DeAGR8BY.png&quot; alt=&quot;Custom flow configuration panel&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1654&quot; height=&quot;1398&quot;&gt;
&lt;p&gt;Flows are automated rules that pair conditions (such as file extension, URL path, or query parameter) with parameters. Set up a flow to automatically apply image optimization to matching requests on your zone without writing code or changing URLs.&lt;/p&gt;
&lt;p&gt;There are two modes for transformation flows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/transformations/flows/#set-up-a-provider-flow&quot;&gt;Provider flows&lt;/a&gt;&lt;/strong&gt; — Migrate from another image optimization service. Your existing URLs continue to work while Cloudflare rewrites provider-specific parameters to their Cloudflare equivalents. Currently, Cloudflare supports provider flows for Fastly Image Optimizer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/transformations/flows/#set-up-a-custom-flow&quot;&gt;Custom flows&lt;/a&gt;&lt;/strong&gt; — Define your own conditions and actions for use cases like automatic format conversion, &lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/make-responsive-images/#using-widthauto&quot;&gt;responsive sizing&lt;/a&gt; with &lt;code&gt;width=auto&lt;/code&gt;, or directory-based optimization.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To get started, go to &lt;strong&gt;Images&lt;/strong&gt; &amp;gt; &lt;strong&gt;Transformations&lt;/strong&gt; &amp;gt; &lt;strong&gt;Automation&lt;/strong&gt; in the &lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/images/transformations&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Learn more about &lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/transformations/flows/&quot;&gt;transformation flows&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate><product>Cloudflare Images</product><category>Cloudflare Images</category></item><item><title>Cloudflare Tunnel, Cloudflare Tunnel for SASE - Cloudflare Tunnel now runs connectivity pre-checks at startup</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-27-cloudflared-connectivity-prechecks/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-27-cloudflared-connectivity-prechecks/</guid><description>&lt;p&gt;Starting with &lt;a href=&quot;https://github.com/cloudflare/cloudflared/releases&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflared&lt;/code&gt; version 2026.5.2&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/tunnel/&quot;&gt;Cloudflare Tunnel&lt;/a&gt; automates the entire &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/troubleshoot-tunnels/connectivity-prechecks/&quot;&gt;connectivity pre-checks workflow&lt;/a&gt; directly inside the binary. Previously, customers had to install &lt;code&gt;dig&lt;/code&gt; and &lt;code&gt;netcat&lt;/code&gt; and run those commands by hand to verify their environment. Now &lt;code&gt;cloudflared&lt;/code&gt; does it natively at startup — and surfaces actionable remediation when something is blocked.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1800,height=1012,format=webp/_astro/cloudflared-connectivity-prechecks.DRwN6tGe.gif&quot; alt=&quot;cloudflared connectivity pre-checks output&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1012&quot;&gt;
&lt;p&gt;On every &lt;code&gt;cloudflared tunnel run&lt;/code&gt; (and &lt;code&gt;cloudflared tunnel diag&lt;/code&gt;), the binary now natively checks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DNS resolution&lt;/strong&gt; — &lt;code&gt;region1.v2.argotunnel.com&lt;/code&gt; and &lt;code&gt;region2.v2.argotunnel.com&lt;/code&gt; resolve to valid Cloudflare IPs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transport connectivity&lt;/strong&gt; — outbound &lt;code&gt;UDP (QUIC)&lt;/code&gt; and &lt;code&gt;TCP (HTTP/2)&lt;/code&gt; on port &lt;code&gt;7844&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Management API&lt;/strong&gt; — outbound &lt;code&gt;TCP/443&lt;/code&gt; to &lt;code&gt;api.cloudflare.com&lt;/code&gt; for software updates.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Results are printed in a scannable CLI table with three states:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;Pass&lt;/strong&gt; — the check succeeded.&lt;/li&gt;
&lt;li&gt;⚠️ &lt;strong&gt;Warn&lt;/strong&gt; — a non-blocking issue, for example the Management API is unreachable so automatic updates will not work, but the tunnel will still come up.&lt;/li&gt;
&lt;li&gt;❌ &lt;strong&gt;Fail&lt;/strong&gt; — a blocking issue, with a specific remediation hint (for example, &lt;code&gt;Allow outbound UDP on port 7844&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If DNS is unresolvable, or &lt;strong&gt;both&lt;/strong&gt; UDP and TCP fail on port 7844, &lt;code&gt;cloudflared&lt;/code&gt; exits early with the failure rather than looping on opaque &lt;code&gt;failed to dial&lt;/code&gt; errors.&lt;/p&gt;
&lt;p&gt;Pre-checks now run automatically on every start, which also catches regressions like overnight firewall policy changes — no need to remember to rerun the troubleshooting guide.&lt;/p&gt;
&lt;p&gt;To get the new behavior, upgrade &lt;code&gt;cloudflared&lt;/code&gt; to version &lt;code&gt;2026.5.2&lt;/code&gt; or later. For more details, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/troubleshoot-tunnels/connectivity-prechecks/&quot;&gt;Connectivity pre-checks documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate><product>Cloudflare Tunnel</product><category>Cloudflare Tunnel</category><category>Cloudflare Tunnel for SASE</category></item><item><title>Cloudflare One Client - Cloudflare One Client for macOS (version 2026.4.1390.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-26-warp-macos-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-26-warp-macos-ga/</guid><description>&lt;p&gt;A new GA release for the macOS Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release introduces the new Cloudflare One Client UI for macOS! You can expect a cleaner and more intuitive design as well as easier access to common actions and information. Here are some of the many things we have found our users appreciate:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Right click context menu to access the most common client actions quickly&lt;/li&gt;
&lt;li&gt;Built-in captive portal login experience&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Additional Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added a new CLI command: warp-cli mdm refresh. This command executes an immediate refresh of the Mobile Device Management (MDM) configuration file.&lt;/li&gt;
&lt;li&gt;Fixed a proxy mode connection stall issue.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Registration may hang at &quot;Checking your organization configuration&quot; due to IPC errors. A system reboot should resolve the error, allowing registration to proceed.&lt;/li&gt;
&lt;li&gt;Split tunnel list configuration is not available in the new UI. Management of split tunnel entries is currently only possible via &lt;code&gt;warp-cli tunnel ip&lt;/code&gt; and &lt;code&gt;warp-cli tunnel host&lt;/code&gt;. UI support will be added in a future release.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 26 May 2026 22:26:01 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Windows (version 2026.4.1390.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-26-warp-windows-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-26-warp-windows-ga/</guid><description>&lt;p&gt;A new GA release for the Windows Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release introduces the new Cloudflare One Client UI for Windows! You can expect a cleaner and more intuitive design as well as easier access to common actions and information. Here are some of the many things we have found our users appreciate:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Right click context menu to access the most common client actions quickly&lt;/li&gt;
&lt;li&gt;Built-in captive portal login experience&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Additional Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added a new CLI command: warp-cli mdm refresh. This command executes an immediate refresh of the Mobile Device Management (MDM) configuration file.&lt;/li&gt;
&lt;li&gt;Fixed a proxy mode connection stall issue.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Registration authentication for devices via the integrated WebView2 browser is unavailable in this version as a temporary measure. As a result, the client will utilize the default browser on the device to complete the authentication process.&lt;/li&gt;
&lt;li&gt;An error indicating that Microsoft Edge can&apos;t read and write to its data directory may be displayed during captive portal login; this error is benign and can be dismissed.&lt;/li&gt;
&lt;li&gt;Registration may hang at &quot;Checking your organization configuration&quot; due to IPC errors. A system reboot should resolve the error, allowing registration to proceed.&lt;/li&gt;
&lt;li&gt;Split tunnel list configuration is not available in the new UI. Management of Split Tunnel entries is currently only possible via &lt;code&gt;warp-cli tunnel ip&lt;/code&gt; and &lt;code&gt;warp-cli tunnel host&lt;/code&gt;. UI support will be added in a future release.&lt;/li&gt;
&lt;li&gt;Windows ARM may prompt the user to close running applications while trying to install this version. Simply click “Ok” with the default highlighted option.&lt;/li&gt;
&lt;li&gt;DNS resolution may be broken when the following conditions are all true:
&lt;ul&gt;
&lt;li&gt;The client is in Secure Web Gateway without DNS filtering (tunnel-only) mode.&lt;/li&gt;
&lt;li&gt;A custom DNS server address is configured on the primary network adapter.&lt;/li&gt;
&lt;li&gt;The custom DNS server address on the primary network adapter is changed while the client is connected.&lt;br&gt;
To work around this issue, please reconnect the client by selecting &quot;disconnect&quot; and then &quot;connect&quot; in the client user interface.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 26 May 2026 22:26:00 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Linux (version 2026.4.1390.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-26-warp-linux-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-26-warp-linux-ga/</guid><description>&lt;p&gt;A new GA release for the Linux Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release introduces the new Cloudflare One Client UI for Linux! You can expect a cleaner and more intuitive design as well as easier access to common actions and information. Here are some of the many things we have found our users appreciate:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Right click context menu to access the most common client actions quickly&lt;/li&gt;
&lt;li&gt;Built-in captive portal login experience&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added a new CLI command: warp-cli mdm refresh. This command executes an immediate refresh of the Mobile Device Management (MDM) configuration file.&lt;/li&gt;
&lt;li&gt;Official support for RHEL 9 has been added for Cloudflare Mesh nodes. To install the RHEL 9 package, the Extra Packages for Enterprise Linux (EPEL) repository must be active, as it contains dependencies required for the tray icon and captive portal webview.&lt;/li&gt;
&lt;li&gt;Fixed a proxy mode connection stall issue.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Registration may hang at &quot;Checking your organization configuration&quot; due to IPC errors. A system reboot should resolve the error, allowing registration to proceed.&lt;/li&gt;
&lt;li&gt;Split tunnel list configuration is not available in the new UI. Management of split tunnel entries is currently only possible via &lt;code&gt;warp-cli tunnel ip&lt;/code&gt; and &lt;code&gt;warp-cli tunnel host&lt;/code&gt;. UI support will be added in a future release.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 26 May 2026 20:32:41 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare Fundamentals, Cloudflare One, Cloudflare Tunnel for SASE, Cloudflare Tunnel, Cloudflare Mesh - Granular permissions for Cloudflare Tunnel and Cloudflare Mesh</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-21-tunnel-mesh-granular-permissions/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-21-tunnel-mesh-granular-permissions/</guid><description>&lt;p&gt;You can now scope Cloudflare permissions to individual &lt;a href=&quot;https://docs.infinitegaming.org/tunnel/&quot;&gt;Cloudflare Tunnel&lt;/a&gt; instances and &lt;a href=&quot;https://docs.infinitegaming.org/mesh/&quot;&gt;Cloudflare Mesh&lt;/a&gt; nodes. Administrators can delegate access to specific Tunnels or Mesh nodes without granting account-wide control over private networking.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;what-is-new&quot;&gt;What is new&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#what-is-new&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;When you &lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/manage-members/manage/&quot;&gt;add a member&lt;/a&gt; or create a &lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/manage-members/policies/&quot;&gt;permission policy&lt;/a&gt;, the resource picker now lists &lt;a href=&quot;https://docs.infinitegaming.org/tunnel/&quot;&gt;Cloudflare Tunnel&lt;/a&gt; instances and &lt;a href=&quot;https://docs.infinitegaming.org/mesh/&quot;&gt;Cloudflare Mesh&lt;/a&gt; nodes as scopable resource types. You can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Grant a read-only role on a single Cloudflare Tunnel instance to a support operator for log streaming and diagnostics — without exposing other Tunnels or destructive actions.&lt;/li&gt;
&lt;li&gt;Grant a write role on a specific Cloudflare Mesh node to an application team — without giving them access to the rest of your private network.&lt;/li&gt;
&lt;li&gt;Scope a single policy to one or many Tunnels and Mesh nodes at once.&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;how-it-works&quot;&gt;How it works&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#how-it-works&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Granular permissions are a parallel layer to existing account-level roles — they do not replace them.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Existing account-level roles continue to work.&lt;/strong&gt; A member with &lt;code&gt;Cloudflare Access&lt;/code&gt; or &lt;code&gt;Cloudflare Zero Trust&lt;/code&gt; retains write access to every Tunnel and Mesh node in the account. This ensures backward compatibility for existing automation and tokens.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Granular permissions are additive.&lt;/strong&gt; For any API request on a specific Tunnel or Mesh node, access is granted if the principal has &lt;strong&gt;either&lt;/strong&gt; the account-level role &lt;strong&gt;or&lt;/strong&gt; a granular permission for that resource.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resource enumeration is authorization-aware.&lt;/strong&gt; Listing endpoints (&lt;code&gt;GET /accounts/{id}/cfd_tunnel&lt;/code&gt;, &lt;code&gt;GET /accounts/{id}/warp_connector&lt;/code&gt;) return only the resources the principal has at least read access to.&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;get-started&quot;&gt;Get started&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#get-started&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Configure &lt;a href=&quot;https://docs.infinitegaming.org/tunnel/guides/granular-permissions/&quot;&gt;granular permissions for Cloudflare Tunnel&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Configure &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/granular-permissions/&quot;&gt;granular permissions for Cloudflare Tunnel and Cloudflare Mesh in Cloudflare One&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Review the &lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/manage-members/roles/#resource-scoped-roles&quot;&gt;resource-scoped roles&lt;/a&gt; on the Cloudflare role reference.&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate><product>Cloudflare Fundamentals</product><category>Cloudflare Fundamentals</category><category>Cloudflare One</category><category>Cloudflare Tunnel for SASE</category><category>Cloudflare Tunnel</category><category>Cloudflare Mesh</category></item><item><title>Access - Cloudflare as identity provider and account membership selector</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-19-cloudflare-as-identity-provider/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-19-cloudflare-as-identity-provider/</guid><description>&lt;p&gt;Cloudflare Access now supports using Cloudflare itself as an &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/identity-providers/cloudflare/&quot;&gt;identity provider&lt;/a&gt;. If you publish an Access application and select Cloudflare as the login method, users can sign in with their existing Cloudflare account — no one-time PINs, no third-party IdP configuration, and no shared email inboxes. Authentication is backed by Cloudflare&apos;s own account security (including multi-factor authentication), making it both simpler to set up and more secure than OTP-based login for most use cases.&lt;/p&gt;
&lt;p&gt;Cloudflare is now the &lt;strong&gt;default identity provider for all newly created Zero Trust accounts&lt;/strong&gt;, replacing One-time PIN.&lt;/p&gt;
&lt;p&gt;This also enables two new capabilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare Account Member selector&lt;/strong&gt; — A new &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/policies/#selectors&quot;&gt;policy selector&lt;/a&gt; that matches users based on their membership in a Cloudflare account. You can target the current account or specify a different account ID for cross-account access scenarios.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restrict to account members&lt;/strong&gt; — An identity provider configuration option that limits authentication to users who are members of your Cloudflare account.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To get started, add Cloudflare as an &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/identity-providers/cloudflare/&quot;&gt;identity provider&lt;/a&gt; in your Zero Trust settings.&lt;/p&gt;</description><pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>CASB - CASB adds support for Claude Compliance API</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-19-casb-claude-compliance-api/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-19-casb-claude-compliance-api/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/cloud-and-saas/anthropic/&quot;&gt;Cloudflare CASB&lt;/a&gt; now integrates with the &lt;a href=&quot;https://support.claude.com/en/articles/13015708-access-the-compliance-api&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Compliance API&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. This enhancement gives security teams visibility into Claude usage patterns, admin activity, and compliance-relevant events across their organization.&lt;/p&gt;
&lt;p&gt;The Claude Compliance API provides structured access to audit logs and administrative actions within Claude Enterprise and Claude Platform. Cloudflare CASB ingests this data to surface security findings that help organizations enhance their security posture and enforce AI governance.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;key-capabilities&quot;&gt;Key capabilities&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#key-capabilities&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Starting today, security teams can scan for security findings across the following assets:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Public projects&lt;/strong&gt; — Projects set to public visibility&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Project attachment&lt;/strong&gt; — Files and documents added to projects that violate DLP policies&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chat files&lt;/strong&gt; — User-uploaded and provider-generated files that violate DLP policies&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chat messages&lt;/strong&gt; — User prompts and provider responses that violate DLP policies&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Artifacts&lt;/strong&gt; — Provider-generated documents and files that violate DLP policies&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;learn-more&quot;&gt;Learn more&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#learn-more&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;This &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/cloud-and-saas/anthropic/&quot;&gt;integration&lt;/a&gt; is available to all Cloudflare One customers. New Cloudflare customers can sign up and start with their first two integrations for free. Existing customers can enable the integration directly in the dashboard. The integration begins scanning immediately and surfaces findings in the dashboard within minutes.&lt;/p&gt;</description><pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate><product>CASB</product><category>CASB</category></item><item><title>Cloudflare WAN, Magic Transit - Network Analytics support for Unified Routing</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-18-unified-routing-network-analytics/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-18-unified-routing-network-analytics/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/analytics/network-analytics/&quot;&gt;Network Analytics&lt;/a&gt; is now fully supported for accounts using &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/reference/traffic-steering/#unified-routing&quot;&gt;Unified Routing&lt;/a&gt; mode. Traffic that traverses Unified Routing onramps and offramps is now visible in Network Analytics with the same dimensions and filters as traffic on the standard data plane.&lt;/p&gt;
&lt;p&gt;This closes a parity gap for customers who had moved tunnels onto Unified Routing and lost visibility into their dataplane traffic in the Network Analytics dashboard. No configuration change is required — analytics data is collected automatically for all accounts with Unified Routing enabled.&lt;/p&gt;
&lt;p&gt;For the remaining beta limitations, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/reference/traffic-steering/#check-feature-availability-before-upgrading&quot;&gt;Traffic steering beta limitations&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate><product>Cloudflare WAN</product><category>Cloudflare WAN</category><category>Magic Transit</category></item><item><title>Workers - Share local dev servers through Cloudflare Tunnel in Wrangler and Vite</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-18-local-dev-tunnels/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-18-local-dev-tunnels/</guid><description>&lt;p&gt;You can now share local dev sessions through &lt;a href=&quot;https://docs.infinitegaming.org/tunnel/&quot;&gt;Cloudflare Tunnel&lt;/a&gt; and get a public URL when using either &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/&quot;&gt;Wrangler&lt;/a&gt; or the &lt;a href=&quot;https://docs.infinitegaming.org/workers/vite-plugin/&quot;&gt;Cloudflare Vite plugin&lt;/a&gt;. This is useful when you need to share a preview, test a webhook, or access your app from another device.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1000,height=678,format=webp/_astro/vite-local-dev-tunnel.CW4xpgIR.gif&quot; alt=&quot;Vite local dev tunnel demo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1000&quot; height=&quot;678&quot;&gt;
&lt;p&gt;This lets you either:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;start a temporary &lt;a href=&quot;https://docs.infinitegaming.org/tunnel/get-started/quick-tunnels/&quot;&gt;Quick Tunnel&lt;/a&gt; with a random &lt;code&gt;*.trycloudflare.com&lt;/code&gt; hostname, or&lt;/li&gt;
&lt;li&gt;use an existing &lt;a href=&quot;https://docs.infinitegaming.org/tunnel/get-started/#create-a-tunnel&quot;&gt;named tunnel&lt;/a&gt; for a stable hostname and to restrict access with &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/&quot;&gt;Cloudflare Access&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To start a tunnel, press &lt;code&gt;t&lt;/code&gt; in Wrangler or &lt;code&gt;t + Enter&lt;/code&gt; in Vite while your dev server is running. For details on setting up a named tunnel, refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/local-development/local-dev-tunnels/&quot;&gt;Share a local dev server&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - New Domains tab in the Workers dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-14-domains-tab/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-14-domains-tab/</guid><description>
&lt;p&gt;In your Worker&apos;s dashboard, there is now a dedicated &lt;strong&gt;Domains&lt;/strong&gt; tab where you can purchase a new domain through Cloudflare Registrar and have it automatically connected, add an &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/routing/custom-domains/&quot;&gt;existing domain&lt;/a&gt;, and manage all of your Worker&apos;s routing in one place.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1678,height=1026,format=webp/_astro/domains-tab.Cey2Oyr-.png&quot; alt=&quot;The new Domains tab in the Workers dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1678&quot; height=&quot;1026&quot;&gt;
&lt;p&gt;You can also enable or disable your &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/routing/workers-dev/&quot;&gt;&lt;code&gt;workers.dev&lt;/code&gt; subdomain&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/workers/versions-and-deployments/preview-urls/&quot;&gt;Preview URLs&lt;/a&gt;, put them behind &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/&quot;&gt;Cloudflare Access&lt;/a&gt; to require sign-in, and jump directly to &lt;a href=&quot;https://docs.infinitegaming.org/analytics/&quot;&gt;analytics&lt;/a&gt; or domain overview for any connected domain.&lt;/p&gt;
&lt;p&gt;To get started, go to &lt;strong&gt;Workers &amp;amp; Pages&lt;/strong&gt;, select a Worker, and open the &lt;strong&gt;Domains&lt;/strong&gt; tab.&lt;/p&gt;
&lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/workers-and-pages&quot; data-nb-button class=&quot;group inline-flex w-max shrink-0 items-center justify-center rounded-full font-medium whitespace-nowrap no-underline shadow-xs transition-colors cursor-pointer select-none focus-visible:outline-2 focus-visible:outline-ring focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary-hover h-9 gap-1.5 px-3 text-sm&quot; target=&quot;_blank&quot;&gt;
	Go to &lt;strong&gt;Workers &amp;amp; Pages&lt;/strong&gt;&amp;nbsp;&amp;#8599;
&lt;/a&gt;</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare One, Access - Refreshed Access login page</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-12-access-login-page-refresh/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-12-access-login-page-refresh/</guid><description>&lt;p&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/reusable-components/custom-pages/access-login-page/&quot;&gt;Access login page&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/identity-providers/one-time-pin/&quot;&gt;one-time password (OTP)&lt;/a&gt; page now feature a refreshed design that improves visual consistency, user trust, and mobile responsiveness.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt;&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=532,height=906,format=webp/_astro/access-login-old.CwNVkCQH.png&quot; alt=&quot;Screenshot of the previous Access login page&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;532&quot; height=&quot;906&quot;&gt;
&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt;&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=541,height=722,format=webp/_astro/access-login-new.Y7WUfg9G.png&quot; alt=&quot;Screenshot of the updated Access login page&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;541&quot; height=&quot;722&quot;&gt;
&lt;p&gt;The updated login experience includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Unified authentication card&lt;/strong&gt; - All sign-in options (identity provider buttons, email input, OTP) now appear in a single card with consistent styling, replacing the previous multi-section layout.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consistent button styling&lt;/strong&gt; - Identity provider buttons use a uniform size and layout for easier scanning and selection.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Better mobile experience&lt;/strong&gt; - Responsive layout improvements ensure the login page renders correctly on phones and tablets.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dark mode support&lt;/strong&gt; - The login page now supports dark mode.&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category><category>Access</category></item><item><title>Cloudflare WAN, Magic Transit, Cloudflare One - New accounts assigned a single IPv4 anycast address</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-12-single-anycast-ip-default/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-12-single-anycast-ip-default/</guid><description>&lt;p&gt;New Magic Transit and Cloudflare WAN accounts are now assigned a single IPv4 anycast address by default.&lt;/p&gt;
&lt;p&gt;Cloudflare handles failures on its network automatically by advertising your endpoint IP from multiple nodes across many globally distributed data centers. To handle failures on your network, configure two tunnels from separate routers.&lt;/p&gt;
&lt;p&gt;To request additional anycast IP addresses for your account, contact your account team.&lt;/p&gt;
&lt;p&gt;For tunnel configuration guidance, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/how-to/configure-tunnel-endpoints/&quot;&gt;Configure tunnel endpoints&lt;/a&gt; for Cloudflare WAN or &lt;a href=&quot;https://docs.infinitegaming.org/magic-transit/how-to/configure-tunnel-endpoints/&quot;&gt;Configure tunnel endpoints&lt;/a&gt; for Magic Transit.&lt;/p&gt;</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate><product>Cloudflare WAN</product><category>Cloudflare WAN</category><category>Magic Transit</category><category>Cloudflare One</category></item><item><title>Gateway - Create Gateway firewall policies with natural language</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-12-natural-language-policy-creation/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-12-natural-language-policy-creation/</guid><description>&lt;p&gt;Cloudflare Gateway now supports natural language policy creation for &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/dns-policies/&quot;&gt;DNS&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/&quot;&gt;HTTP&lt;/a&gt;, and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/network-policies/&quot;&gt;Network&lt;/a&gt; firewall policies. Administrators can describe the outcome they want in plain language, and Cloudflare will generate a complete policy rule that populates the policy builder form.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2360,height=1088,format=webp/_astro/gateway-create-with-ai.BYG07coh.png&quot; alt=&quot;Create with AI button on the Gateway firewall policies page&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2360&quot; height=&quot;1088&quot;&gt;
&lt;p&gt;To create a policy with natural language, select &lt;strong&gt;Create with AI&lt;/strong&gt; on any Gateway firewall policy tab. Choose a policy type, describe what the policy should do, and a fully configured rule will appear in the policy builder for review. You can edit any field before saving, or re-generate with a different prompt.&lt;/p&gt;
&lt;p&gt;The generated policy incorporates your account context - including lists, DLP profiles, applications, and device posture checks - so that references to your existing resources resolve automatically.&lt;/p&gt;
&lt;p&gt;A built-in feedback mechanism allows you to rate each generated policy and provide optional comments, which Cloudflare uses to improve output quality over time.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/&quot;&gt;Gateway firewall policies&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Windows (version 2026.4.1350.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-11-warp-windows-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-11-warp-windows-ga/</guid><description>&lt;p&gt;A new GA release for the Windows Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release introduces the new Cloudflare One Client UI for Windows! You can expect a cleaner and more intuitive design as well as easier access to common actions and information. Here are some of the many things we have found our users appreciate:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Right click context menu to access the most common client actions quickly&lt;/li&gt;
&lt;li&gt;Built-in captive portal login experience&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Additional Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added a new CLI command: warp-cli mdm refresh. This command executes an immediate refresh of the Mobile Device Management (MDM) configuration file.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Registration authentication for devices via the integrated WebView2 browser is unavailable in this version as a temporary measure. As a result, the client will utilize the default browser on the device to complete the authentication process.&lt;/li&gt;
&lt;li&gt;An error indicating that Microsoft Edge can&apos;t read and write to its data directory may be displayed during captive portal login; this error is benign and can be dismissed.&lt;/li&gt;
&lt;li&gt;Registration may hang at &quot;Checking your organization configuration&quot; due to IPC errors. A system reboot should resolve the error, allowing registration to proceed.&lt;/li&gt;
&lt;li&gt;Split tunnel list configuration is not available in the new UI. Management of Split Tunnel entries is currently only possible via &lt;code&gt;warp-cli tunnel ip&lt;/code&gt; and &lt;code&gt;warp-cli tunnel host&lt;/code&gt;. UI support will be added in a future release.&lt;/li&gt;
&lt;li&gt;Windows ARM may prompt the user to close running applications while trying to install this version. Simply click “Ok” with the default highlighted option.&lt;/li&gt;
&lt;li&gt;DNS resolution may be broken when the following conditions are all true:
&lt;ul&gt;
&lt;li&gt;The client is in Secure Web Gateway without DNS filtering (tunnel-only) mode.&lt;/li&gt;
&lt;li&gt;A custom DNS server address is configured on the primary network adapter.&lt;/li&gt;
&lt;li&gt;The custom DNS server address on the primary network adapter is changed while the client is connected.&lt;br&gt;
To work around this issue, please reconnect the client by selecting &quot;disconnect&quot; and then &quot;connect&quot; in the client user interface.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Mon, 11 May 2026 17:35:58 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - Cloudflare One Client for macOS (version 2026.4.1350.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-11-warp-macos-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-11-warp-macos-ga/</guid><description>&lt;p&gt;A new GA release for the macOS Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release introduces the new Cloudflare One Client UI for macOS! You can expect a cleaner and more intuitive design as well as easier access to common actions and information. Here are some of the many things we have found our users appreciate:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Right click context menu to access the most common client actions quickly&lt;/li&gt;
&lt;li&gt;Built-in captive portal login experience&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Additional Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added a new CLI command: warp-cli mdm refresh. This command executes an immediate refresh of the Mobile Device Management (MDM) configuration file.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Registration may hang at &quot;Checking your organization configuration&quot; due to IPC errors. A system reboot should resolve the error, allowing registration to proceed.&lt;/li&gt;
&lt;li&gt;Split tunnel list configuration is not available in the new UI. Management of split tunnel entries is currently only possible via &lt;code&gt;warp-cli tunnel ip&lt;/code&gt; and &lt;code&gt;warp-cli tunnel host&lt;/code&gt;. UI support will be added in a future release.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Mon, 11 May 2026 17:35:57 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Linux (version 2026.4.1350.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-11-warp-linux-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-11-warp-linux-ga/</guid><description>&lt;p&gt;A new GA release for the Linux Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release introduces the new Cloudflare One Client UI for Linux! You can expect a cleaner and more intuitive design as well as easier access to common actions and information. Here are some of the many things we have found our users appreciate:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Right click context menu to access the most common client actions quickly&lt;/li&gt;
&lt;li&gt;Built-in captive portal login experience&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added a new CLI command: warp-cli mdm refresh. This command executes an immediate refresh of the Mobile Device Management (MDM) configuration file.&lt;/li&gt;
&lt;li&gt;Official support for RHEL 9 has been added for Cloudflare Mesh nodes. To install the RHEL 9 package, the Extra Packages for Enterprise Linux (EPEL) repository must be active, as it contains dependencies required for the tray icon and captive portal webview.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Registration may hang at &quot;Checking your organization configuration&quot; due to IPC errors. A system reboot should resolve the error, allowing registration to proceed.&lt;/li&gt;
&lt;li&gt;Split tunnel list configuration is not available in the new UI. Management of split tunnel entries is currently only possible via &lt;code&gt;warp-cli tunnel ip&lt;/code&gt; and &lt;code&gt;warp-cli tunnel host&lt;/code&gt;. UI support will be added in a future release.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Mon, 11 May 2026 15:17:54 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare WAN, Magic Transit - NAT-T support for IKE on UDP port 500</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-11-nat-t-port-500/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-11-nat-t-port-500/</guid><description>&lt;p&gt;Cloudflare IPsec now supports the standard NAT traversal (NAT-T) flow, where IKE begins on UDP port &lt;code&gt;500&lt;/code&gt; and switches to UDP port &lt;code&gt;4500&lt;/code&gt; after NAT is detected.&lt;/p&gt;
&lt;p&gt;Previously, devices behind NAT had to be configured to initiate IKE on UDP port &lt;code&gt;4500&lt;/code&gt; directly. Devices that started on UDP port &lt;code&gt;500&lt;/code&gt; could not complete the IKE handshake when NAT was in the path. This required custom configuration on devices such as VeloCloud SD-WAN edges, Cisco IOS-XE routers, and Juniper SRX firewalls, and was not possible on every platform.&lt;/p&gt;
&lt;p&gt;What changed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Devices behind NAT can now initiate IKE on either UDP port &lt;code&gt;500&lt;/code&gt; or UDP port &lt;code&gt;4500&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Devices that start IKE on UDP port &lt;code&gt;500&lt;/code&gt; and switch to UDP port &lt;code&gt;4500&lt;/code&gt; after NAT detection now complete the handshake successfully.&lt;/li&gt;
&lt;li&gt;No configuration change is required on Cloudflare. The change is available for all IPsec tunnels on Cloudflare WAN and Magic Transit.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This change does not affect existing tunnels:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tunnels using UDP port &lt;code&gt;500&lt;/code&gt; with no NAT detected continue to operate as before.&lt;/li&gt;
&lt;li&gt;Tunnels configured to start IKE on UDP port &lt;code&gt;4500&lt;/code&gt; continue to operate as before.&lt;/li&gt;
&lt;li&gt;NAT detection logic is unchanged.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For configuration details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/reference/gre-ipsec-tunnels/&quot;&gt;GRE and IPsec tunnels&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate><product>Cloudflare WAN</product><category>Cloudflare WAN</category><category>Magic Transit</category></item><item><title>Workers, WAF - WAF and framework adapter mitigations for React and Next.js vulnerabilities</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-06-react-nextjs-vulnerabilities/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-06-react-nextjs-vulnerabilities/</guid><description>&lt;p&gt;Multiple security vulnerabilities were disclosed by the React team and Vercel affecting React Server Components and Next.js. These include denial of service, middleware and proxy bypass, server-side request forgery, cross-site scripting, and cache poisoning issues across a range of severity levels.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We strongly recommend updating your application and its dependencies immediately.&lt;/strong&gt; Patched versions are available for React (&lt;code&gt;react-server-dom-webpack&lt;/code&gt;, &lt;code&gt;react-server-dom-parcel&lt;/code&gt;, and &lt;code&gt;react-server-dom-turbopack&lt;/code&gt; &lt;code&gt;19.0.6&lt;/code&gt;, &lt;code&gt;19.1.7&lt;/code&gt;, and &lt;code&gt;19.2.6&lt;/code&gt;) and Next.js (&lt;code&gt;15.5.16&lt;/code&gt; and &lt;code&gt;16.2.5&lt;/code&gt;).&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;waf-protections&quot;&gt;WAF protections&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#waf-protections&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Cloudflare WAF rules deployed in response to prior React Server Component CVEs (&lt;a href=&quot;https://github.com/facebook/react/security/advisories/GHSA-2m3v-v2m8-q956&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;CVE-2025-55184&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and &lt;a href=&quot;https://github.com/facebook/react/security/advisories/GHSA-83fc-fqcc-2hmg&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;CVE-2026-23864&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;) already provide coverage for the newly disclosed denial-of-service vulnerabilities. These rules are enabled by default with a Block action for all customers using the Cloudflare Managed Ruleset, including Free plan customers using the Free Managed Ruleset.&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ruleset&lt;/th&gt;
&lt;th&gt;Rule description&lt;/th&gt;
&lt;th&gt;Rule ID&lt;/th&gt;
&lt;th&gt;Default action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Cloudflare Managed Ruleset&lt;/td&gt;
&lt;td&gt;React - DoS - &lt;a href=&quot;https://github.com/facebook/react/security/advisories/GHSA-2m3v-v2m8-q956&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;CVE-2025-55184&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;2694f1610c0b471393b21aef102ec699&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Block&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloudflare Managed Ruleset&lt;/td&gt;
&lt;td&gt;React - DoS - &lt;a href=&quot;https://github.com/facebook/react/security/advisories/GHSA-83fc-fqcc-2hmg&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;CVE-2026-23864&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;aaede80b4d414dc89c443cea61680354&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Block&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;The existing rules detect the underlying attack patterns generically. As a result, they apply to the new &lt;a href=&quot;https://github.com/facebook/react/security/advisories/GHSA-rv78-f8rc-xrxh&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;CVE-2026-23870&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; denial-of-service vulnerability in Server Components and the corresponding Next.js advisory &lt;a href=&quot;https://github.com/vercel/next.js/security/advisories/GHSA-8h8q-6873-q5fj&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;GHSA-8h8q-6873-q5fj&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Cloudflare is investigating whether WAF rules can be safely and effectively deployed for three of the high-severity advisories: &lt;a href=&quot;https://github.com/facebook/react/security/advisories/GHSA-rv78-f8rc-xrxh&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;CVE-2026-23870&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; / &lt;a href=&quot;https://github.com/vercel/next.js/security/advisories/GHSA-8h8q-6873-q5fj&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;GHSA-8h8q-6873-q5fj&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/vercel/next.js/security/advisories/GHSA-267c-6grr-h53f&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;GHSA-267c-6grr-h53f&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, and &lt;a href=&quot;https://github.com/vercel/next.js/security/advisories/GHSA-mg66-mrh9-m8jx&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;GHSA-mg66-mrh9-m8jx&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. If it is possible to create a managed WAF rule that mitigates these CVEs and does not potentially break application behavior, Cloudflare will add additional managed WAF rules. These rules will be announced through the &lt;a href=&quot;https://docs.infinitegaming.org/waf/change-log/changelog/&quot;&gt;WAF changelog&lt;/a&gt;. Because these vulnerabilities were shared with Cloudflare with minimal advance notice, we are still investigating what WAF mitigations are possible.&lt;/p&gt;
&lt;p&gt;Several of the disclosed vulnerabilities are not possible to block in WAF. We strongly recommend updating your applications so they are not purely reliant on WAF mitigations.&lt;/p&gt;
&lt;p&gt;Customers on Pro, Business, or Enterprise plans should ensure that &lt;a href=&quot;https://docs.infinitegaming.org/waf/get-started/#1-deploy-the-cloudflare-managed-ruleset&quot;&gt;Managed Rules are enabled&lt;/a&gt;.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;nextjs-adapters&quot;&gt;Next.js adapters&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#nextjs-adapters&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Vinext:&lt;/strong&gt; &lt;a href=&quot;https://github.com/cloudflare/vinext&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Vinext&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; is a Vite plugin that reimplements the Next.js API surface. Vinext&apos;s latest release is not vulnerable to any of the disclosed CVEs. Vinext&apos;s architecture differs from stock Next.js in ways that sidestep the affected code paths. For example, it does not implement the PPR resume protocol, does not expose Pages Router data-route endpoints, and strips internal headers such as &lt;code&gt;x-nextjs-data&lt;/code&gt; at request boundaries. As an extra layer of defense, we added a React &lt;code&gt;19.2.6&lt;/code&gt; or later requirement when running &lt;code&gt;vinext init&lt;/code&gt; (&lt;a href=&quot;https://github.com/cloudflare/vinext/pull/1118&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;PR #1118&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/cloudflare/vinext/pull/1112&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;PR #1112&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;) to prevent accidentally running a vulnerable version of React with Vinext.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenNext on Cloudflare:&lt;/strong&gt; OpenNext is an adapter that lets you deploy Next.js apps to the Cloudflare Workers platform. OpenNext itself is not directly vulnerable to the React denial-of-service CVE, but users must update the Next.js version in their application. The OpenNext team has updated the adapter to further harden against these vectors and released a new version of the Cloudflare adapter. Test fixtures and examples have been updated to use patched versions (&lt;a href=&quot;https://github.com/opennextjs/opennextjs-cloudflare/pull/1255&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;PR #1255&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;).&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;summary-of-disclosed-vulnerabilities&quot;&gt;Summary of disclosed vulnerabilities&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#summary-of-disclosed-vulnerabilities&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Advisory&lt;/th&gt;
&lt;th&gt;Severity&lt;/th&gt;
&lt;th&gt;Issue&lt;/th&gt;
&lt;th&gt;WAF status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/facebook/react/security/advisories/GHSA-rv78-f8rc-xrxh&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;CVE-2026-23870&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; / &lt;a href=&quot;https://github.com/vercel/next.js/security/advisories/GHSA-8h8q-6873-q5fj&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;GHSA-8h8q-6873-q5fj&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Denial of service in Server Components&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;WAF rules in place:&lt;/strong&gt; &lt;code&gt;2694f1610c0b471393b21aef102ec699&lt;/code&gt;, &lt;code&gt;aaede80b4d414dc89c443cea61680354&lt;/code&gt;&lt;br&gt;Cloudflare is investigating additional managed WAF coverage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/vercel/next.js/security/advisories/GHSA-267c-6grr-h53f&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;GHSA-267c-6grr-h53f&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Middleware bypass via segment-prefetch routes&lt;/td&gt;
&lt;td&gt;Cloudflare is investigating if this can be safely and effectively mitigated by a managed WAF rule&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/vercel/next.js/security/advisories/GHSA-mg66-mrh9-m8jx&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;GHSA-mg66-mrh9-m8jx&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Denial of service via connection exhaustion in Cache Components&lt;/td&gt;
&lt;td&gt;Cloudflare is investigating if this can be safely and effectively mitigated by a managed WAF rule&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/vercel/next.js/security/advisories/GHSA-492v-c6pp-mqqv&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;GHSA-492v-c6pp-mqqv&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Middleware bypass via dynamic route parameter injection&lt;/td&gt;
&lt;td&gt;Not possible to safely enable a managed WAF rule without potentially breaking application behavior&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/vercel/next.js/security/advisories/GHSA-c4j6-fc7j-m34r&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;GHSA-c4j6-fc7j-m34r&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;SSRF via WebSocket upgrades&lt;/td&gt;
&lt;td&gt;Not possible to safely enable a managed WAF rule without potentially breaking application behavior&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/vercel/next.js/security/advisories/GHSA-36qx-fr4f-26g5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;GHSA-36qx-fr4f-26g5&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Middleware bypass in Pages Router i18n&lt;/td&gt;
&lt;td&gt;Custom WAF rule possible; global managed rule could potentially break application behavior&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/vercel/next.js/security/advisories/GHSA-ffhc-5mcf-pf4q&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;GHSA-ffhc-5mcf-pf4q&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;XSS via CSP nonces&lt;/td&gt;
&lt;td&gt;Custom WAF rule possible; global managed rule could potentially break application behavior&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/vercel/next.js/security/advisories/GHSA-gx5p-jg67-6x7h&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;GHSA-gx5p-jg67-6x7h&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;XSS in &lt;code&gt;beforeInteractive&lt;/code&gt; scripts&lt;/td&gt;
&lt;td&gt;Not possible to safely enable a managed WAF rule without potentially breaking application behavior&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/vercel/next.js/security/advisories/GHSA-h64f-5h5j-jqjh&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;GHSA-h64f-5h5j-jqjh&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;Denial of service in Image Optimization API&lt;/td&gt;
&lt;td&gt;Custom WAF rule possible; global managed rule could potentially break application behavior&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/vercel/next.js/security/advisories/GHSA-wfc6-r584-vfw7&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;GHSA-wfc6-r584-vfw7&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;Cache poisoning in RSC responses&lt;/td&gt;
&lt;td&gt;Custom WAF rule possible; global managed rule could potentially break application behavior&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/vercel/next.js/security/advisories/GHSA-vfv6-92ff-j949&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;GHSA-vfv6-92ff-j949&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;Cache poisoning via RSC cache-busting collisions&lt;/td&gt;
&lt;td&gt;Not possible to safely enable a managed WAF rule without potentially breaking application behavior&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/vercel/next.js/security/advisories/GHSA-3g8h-86w9-wvmq&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;GHSA-3g8h-86w9-wvmq&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;Middleware redirect cache poisoning&lt;/td&gt;
&lt;td&gt;Custom WAF rule possible; global managed rule could potentially break application behavior&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;</description><pubDate>Thu, 07 May 2026 12:00:00 GMT</pubDate><product>Workers</product><category>Workers</category><category>WAF</category></item><item><title>Cloudflare One Appliance, Cloudflare One, Cloudflare WAN - Custom DHCP options on Cloudflare One Appliance</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-07-appliance-dhcp-options/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-07-appliance-dhcp-options/</guid><description>&lt;p&gt;When the Cloudflare One Appliance is acting as the DHCP server for a LAN, you can now configure custom DHCP options on the leases it issues. This unlocks workflows such as PXE / iPXE boot, VoIP phone provisioning, and vendor-specific client configuration.&lt;/p&gt;
&lt;p&gt;Each option is defined by &lt;code&gt;option_number&lt;/code&gt;, &lt;code&gt;value&lt;/code&gt;, and one of four value types: &lt;code&gt;text&lt;/code&gt;, &lt;code&gt;integer&lt;/code&gt;, &lt;code&gt;hex&lt;/code&gt;, or &lt;code&gt;ip&lt;/code&gt;. Configurations are validated on the appliance before being applied — invalid configurations are rejected and the underlying error is returned to the API caller, so a bad option will not disrupt the live DHCP service.&lt;/p&gt;
&lt;p&gt;For details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/network-options/dhcp/dhcp-options/&quot;&gt;DHCP server options&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate><product>Cloudflare One Appliance</product><category>Cloudflare One Appliance</category><category>Cloudflare One</category><category>Cloudflare WAN</category></item><item><title>Cloudflare One Appliance, Cloudflare One, Cloudflare WAN - Source-based breakout and prioritization on Cloudflare One Appliance</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-07-appliance-source-based-breakout/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-07-appliance-source-based-breakout/</guid><description>&lt;p&gt;Breakout and traffic prioritization rules on the Cloudflare One Appliance can now match by &lt;strong&gt;source&lt;/strong&gt; in addition to destination application. You can pin breakout or priority behavior to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A source LAN interface — VLANs attached to that LAN are included automatically.&lt;/li&gt;
&lt;li&gt;A source IP address, range, or CIDR block.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is the natural way to break out a guest VLAN to the local Internet, or to prioritize traffic from a specific subnet, without enumerating destination applications.&lt;/p&gt;
&lt;p&gt;For details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/network-options/application-based-policies/breakout-traffic/#breakout-by-source&quot;&gt;Breakout traffic&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate><product>Cloudflare One Appliance</product><category>Cloudflare One Appliance</category><category>Cloudflare One</category><category>Cloudflare WAN</category></item><item><title>Cloudflare One Appliance, Cloudflare One, Cloudflare WAN - Self-serve provisioning of Cloudflare One Virtual Appliance via API</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-07-virtual-appliance-self-serve-api/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-07-virtual-appliance-self-serve-api/</guid><description>&lt;p&gt;You can now create, rotate, and delete Cloudflare One Virtual Appliance instances and their license keys directly via the API and Terraform.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create a virtual appliance and receive a license key: &lt;code&gt;POST /accounts/{account_id}/magic/connectors&lt;/code&gt; with &lt;code&gt;device.provision_license: true&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Rotate the license key for an existing virtual appliance: &lt;code&gt;PATCH /accounts/{account_id}/magic/connectors/{connector_id}&lt;/code&gt; with &lt;code&gt;provision_license: true&lt;/code&gt;. The previous key is immediately and irrevocably revoked.&lt;/li&gt;
&lt;li&gt;Delete a virtual appliance to release the associated licensed device.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The license key is returned in the response only once, at create or rotate time. Copy and store it securely.&lt;/p&gt;
&lt;p&gt;For details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/configure-virtual-appliance/&quot;&gt;Configure a Cloudflare One Virtual Appliance&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate><product>Cloudflare One Appliance</product><category>Cloudflare One Appliance</category><category>Cloudflare One</category><category>Cloudflare WAN</category></item><item><title>Stream - Introducing Stream Bindings for Workers</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-07-stream-workers-binding/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-07-stream-workers-binding/</guid><description>
&lt;p&gt;You can now interact with your Stream video library using new bindings for Workers! This allows customers to upload content to Stream, provision direct uploads, manage videos, and generate signed URLs from a Worker without making authenticated API calls. We&apos;re excited to bring Stream and Workers closer together to empower more programmatic pipelines, tighter integrations, and support generative AI and inference workloads.&lt;/p&gt;
&lt;p&gt;Use the Stream binding when you want to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Upload videos from URLs or create basic direct upload links for end users&lt;/li&gt;
&lt;li&gt;Generate signed playback tokens without managing signing keys&lt;/li&gt;
&lt;li&gt;Manage video metadata, captions, downloads, and watermarks&lt;/li&gt;
&lt;li&gt;Build video pipelines entirely within Workers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To get started, add the Stream binding to your Wrangler configuration:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;$schema&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./node_modules/wrangler/config-schema.json&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;stream&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;    &quot;binding&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;STREAM&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;stream&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;binding = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;STREAM&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;&lt;strong&gt;Generate a video with AI and upload directly to Stream&lt;/strong&gt; or send a URL of a file you already have:&lt;/p&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; aiResponse&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;AI&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;	&quot;google/veo-3.1&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		prompt: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;A dog walking next to a river&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		duration: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;10s&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		aspect_ratio: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;16:9&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		resolution: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;1080p&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		generate_audio: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		gateway: { id: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;experiments&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// Veo will return a URL of the generated asset.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; videoUrl&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; aiResponse.result.video;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// Alternative option: a video of the Austin Office mobile&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// const videoUrl = &apos;https://pub-d9fcbc1abcd244c1821f38b99017347f.r2.dev/aus-mobile.mp4&apos;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// Upload to Stream by providing a URL&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; streamVideo&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;STREAM&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;upload&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(videoUrl);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// The streamVideo response will include the video ID, playback and manifest&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// URLs, and other information, just like the REST API.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; aiResponse&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;AI&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;	&apos;google/veo-3.1&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		prompt: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;A dog walking next to a river&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		duration: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;10s&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		aspect_ratio: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;16:9&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		resolution: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;1080p&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		generate_audio: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		gateway: { id: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;experiments&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// Veo will return a URL of the generated asset.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; videoUrl&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; aiResponse.result.video;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// Alternative option: a video of the Austin Office mobile&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// const videoUrl = &apos;https://pub-d9fcbc1abcd244c1821f38b99017347f.r2.dev/aus-mobile.mp4&apos;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// Upload to Stream by providing a URL&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; streamVideo&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;STREAM&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;upload&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(videoUrl);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// The streamVideo response will include the video ID, playback and manifest&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// URLs, and other information, just like the REST API.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Generate a signed URL without using a signing key&lt;/strong&gt; or an API call:&lt;/p&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; video_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;ce800be43a9772f4bb02f35b860fb516&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; token&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;STREAM&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;video&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(video_id).&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;generateToken&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// Use the &quot;token&quot; in an iframe embed code, manifest URL, or thumbnail:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; embedUrl&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; `https://customer-igynxd2rwhmuoxw8.cloudflarestream.com/${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;token&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;}/iframe`&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; video_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &apos;ce800be43a9772f4bb02f35b860fb516&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; token&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;STREAM&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;video&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(video_id).&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;generateToken&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// Use the &quot;token&quot; in an iframe embed code, manifest URL, or thumbnail:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; embedUrl&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; `https://customer-igynxd2rwhmuoxw8.cloudflarestream.com/${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;token&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;}/iframe`&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Get and set video properties&lt;/strong&gt; easily:&lt;/p&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; video_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;46c8b7f480d410840758c1cb14a72e47&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; result&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;STREAM&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;video&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(video_id).&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;details&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;STREAM&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;video&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(video_id).&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;update&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	meta: { name: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;sample video&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; video_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &apos;46c8b7f480d410840758c1cb14a72e47&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; result&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;STREAM&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;video&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(video_id).&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;details&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;STREAM&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;video&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(video_id).&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;update&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  meta: { name: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;sample video&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;For setup instructions and the full API reference, refer to &lt;a href=&quot;https://docs.infinitegaming.org/stream/manage-video-library/bindings/&quot;&gt;Bind to Workers API&lt;/a&gt;.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;get-started-with-your-agent&quot;&gt;Get started with your Agent&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#get-started-with-your-agent&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Add a binding for Cloudflare Stream (env.STREAM). On the watch page, use the
Stream binding to get info based on the ID, and leverage video.meta.name as
the page title.&lt;/p&gt;
&lt;/blockquote&gt;</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate><product>Stream</product><category>Stream</category></item><item><title>Workers - Automatic tracing across Durable Object and Worker subrequests</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-07-automatic-tracing-across-do-and-worker-subrequests/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-07-automatic-tracing-across-do-and-worker-subrequests/</guid><description>&lt;p&gt;You can now get a single unified trace across Worker-to-Worker subrequests, with trace context propagating automatically. Previously, &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/traces/&quot;&gt;automatic tracing&lt;/a&gt; produced disconnected traces when a Worker called another Worker through a &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/bindings/service-bindings/&quot;&gt;service binding&lt;/a&gt; or &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/&quot;&gt;Durable Object&lt;/a&gt;.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1824,height=1156,format=webp/_astro/2026-04-28-worker-to-worker-context-prop.Db1qNQJL.png&quot; alt=&quot;Unified trace showing nested spans across a Durable Object subrequest and a service binding call&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1824&quot; height=&quot;1156&quot;&gt;
&lt;p&gt;This means you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Follow a request through your entire Worker architecture in one trace view&lt;/li&gt;
&lt;li&gt;See service binding and Durable Object calls as nested child spans instead of separate traces&lt;/li&gt;
&lt;li&gt;Debug cross-Worker request flows in the Cloudflare dashboard or in an external observability platform via &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/opentelemetry-export/&quot;&gt;OpenTelemetry&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/traces/#how-to-enable-tracing&quot;&gt;Tracing must be enabled&lt;/a&gt; in your Wrangler configuration for traces to be recorded. Checkout &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/traces/&quot;&gt;Workers tracing&lt;/a&gt; to get started.&lt;/p&gt;
&lt;p&gt;Up next, we are working on external trace context propagation using &lt;a href=&quot;https://www.w3.org/TR/trace-context/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;W3C Trace Context standards&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, which will allow traces from your Workers to link with traces from services outside of Cloudflare.&lt;/p&gt;</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Email security - Cloudy Summaries in PhishNet O365</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-06-cloudy-summaries-in-phishnet_o365/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-06-cloudy-summaries-in-phishnet_o365/</guid><description>&lt;p&gt;PhishNet users can now access &lt;strong&gt;Cloudy summaries&lt;/strong&gt; directly within the email investigation experience. When reviewing a message in PhishNet, users will see an AI-generated summary that provides additional context and key details about the email.&lt;/p&gt;
&lt;p&gt;These summaries help users quickly understand the nature of a message without needing to manually parse through headers, body content, and detection signals. Cloudy surfaces the most relevant information so users can make faster, more informed decisions about suspicious emails.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;These summaries are not trained on customer data.&lt;/strong&gt; They are generated using the outputs of our existing detection models and analysis systems.&lt;/p&gt;
&lt;p&gt;This feature is available for PhishNet with Office 365. Support for Gmail will be available by the end of the quarter.&lt;/p&gt;</description><pubDate>Wed, 06 May 2026 18:15:13 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Cloudflare One - IPv6 CIDR routes for Cloudflare Mesh</title><link>https://docs.infinitegaming.org/changelog/post/2026-05-06-mesh-ipv6-routes/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-05-06-mesh-ipv6-routes/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/mesh/&quot;&gt;Cloudflare Mesh&lt;/a&gt; nodes now support IPv6 CIDR routes. You can advertise both IPv4 and IPv6 subnets through your Mesh nodes, making IPv6-only or dual-stack private networks reachable from any enrolled device.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2906,height=1352,format=webp/_astro/mesh-ipv6-routes.CC-jlZkw.png&quot; alt=&quot;IPv6 CIDR routes on a Mesh node in the Cloudflare dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2906&quot; height=&quot;1352&quot;&gt;
&lt;p&gt;To add an IPv6 route, follow the same steps as &lt;a href=&quot;https://docs.infinitegaming.org/mesh/features/routes/#add-a-route&quot;&gt;adding an IPv4 route&lt;/a&gt; — enter the IPv6 CIDR (for example, &lt;code&gt;fd00::/64&lt;/code&gt;) when configuring the route in the &lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/mesh&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; or via the API.&lt;/p&gt;</description><pubDate>Wed, 06 May 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category></item><item><title>Cloudflare One, Cloudflare WAN - Post-quantum IPsec interoperability with third-party devices</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-30-ipsec-post-quantum-third-party/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-30-ipsec-post-quantum-third-party/</guid><description>&lt;p&gt;Cloudflare IPsec now supports post-quantum key agreement with compatible third-party devices. &lt;a href=&quot;https://www.cisco.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cisco&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and &lt;a href=&quot;https://www.fortinet.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Fortinet&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; are the first third-party vendors validated to interoperate with Cloudflare IPsec using ML-KEM (Module-Lattice-Based Key-Encapsulation Mechanism).&lt;/p&gt;
&lt;p&gt;Post-quantum IPsec uses &lt;a href=&quot;https://datatracker.ietf.org/doc/rfc9370/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;RFC 9370&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and &lt;a href=&quot;https://datatracker.ietf.org/doc/draft-ietf-ipsecme-ikev2-mlkem/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;draft-ietf-ipsecme-ikev2-mlkem&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; to negotiate hybrid key agreement during the IKEv2 &lt;code&gt;IKE_INTERMEDIATE&lt;/code&gt; phase. This combines classical Diffie-Hellman (Group 20) with ML-KEM-768 or ML-KEM-1024 to protect against &lt;a href=&quot;https://en.wikipedia.org/wiki/Harvest_now,_decrypt_later&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;harvest-now, decrypt-later&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; attacks.&lt;/p&gt;
&lt;p&gt;Key details:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Compatible with Cisco 8000 Series Secure Routers with IOS XR Release 26.1.1 and Fortinet FortiOS 7.6.6 and later.&lt;/li&gt;
&lt;li&gt;Uses ML-KEM-768 or ML-KEM-1024 as an additional Key Exchange to DH Group 20.&lt;/li&gt;
&lt;li&gt;Follows RFC 9370 and draft-ietf-ipsecme-ikev2-mlkem standards.&lt;/li&gt;
&lt;li&gt;No additional licensing required.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Post-quantum IPsec with third-party devices is now generally available with confirmed interoperability for the platforms listed above. Cloudflare intends to support interoperability with more vendors as they build out support for draft-ietf-ipsecme-ikev2-mlkem. Contact your account team to discuss support for additional vendors.&lt;/p&gt;
&lt;p&gt;For supported key exchange methods and the list of validated platforms, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/reference/gre-ipsec-tunnels/#tested-third-party-vendor-interoperability&quot;&gt;GRE and IPsec tunnels&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category><category>Cloudflare WAN</category></item><item><title>Data Loss Prevention - Classify sensitive content with Data Classification</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-30-data-classification/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-30-data-classification/</guid><description>&lt;p&gt;Cloudflare DLP now includes &lt;strong&gt;Data Classification&lt;/strong&gt;, which lets administrators organize and label sensitive content using labels, templates, and reusable data classes.&lt;/p&gt;
&lt;p&gt;With Data Classification, administrators can define labels such as sensitivity schemas and levels, and data tag groups and tags. Administrators can also build from Cloudflare-managed templates and create reusable data classes that combine detection entries, other data classes, sensitivity levels, and data tags.&lt;/p&gt;
&lt;p&gt;You can then use those classifications in custom DLP profiles to identify the severity of sensitive content, understand where it exists, and apply that logic consistently across DLP profiles.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/data-classification/&quot;&gt;Data Classification&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate><product>Data Loss Prevention</product><category>Data Loss Prevention</category></item><item><title>Data Loss Prevention - New predefined detection entries are available</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-30-standalone-predefined-detection-entries/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-30-standalone-predefined-detection-entries/</guid><description>&lt;p&gt;Cloudflare DLP now includes new predefined detection entries.&lt;/p&gt;
&lt;p&gt;The expanded catalog includes detections for specific credential types, webhooks, addresses, tax identifiers, national IDs, financial data, and crypto wallets.&lt;/p&gt;
&lt;p&gt;Examples include &lt;code&gt;GitHub PAT&lt;/code&gt;, &lt;code&gt;OpenAI API Key&lt;/code&gt;, &lt;code&gt;Slack Webhook&lt;/code&gt;, &lt;code&gt;Discord Webhook&lt;/code&gt;, &lt;code&gt;US Physical Address&lt;/code&gt;, and &lt;code&gt;Bitcoin Wallet&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For the full list, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/detection-entries/predefined-detection-entries/&quot;&gt;Predefined detection entries&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate><product>Data Loss Prevention</product><category>Data Loss Prevention</category></item><item><title>Digital Experience Monitoring - Digital experience tests to authenticated resources and enhanced configuration</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-29-dex-tests-to-auth/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-29-dex-tests-to-auth/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/dex/tests/&quot;&gt;Digital experience tests&lt;/a&gt; now support testing applications protected by Cloudflare Access or third-party authentication. All authentication secrets are managed via &lt;a href=&quot;https://docs.infinitegaming.org/secrets-store/&quot;&gt;Cloudflare Secret Store&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Digital experience tests also have enhanced configuration options including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New HTTP methods (DELETE, PATCH, POST, PUT)&lt;/li&gt;
&lt;li&gt;Secret Store headers, custom plain text headers, and custom request bodies&lt;/li&gt;
&lt;li&gt;Advanced settings: follow redirects, response bodies, response headers, and allow untrusted certificates&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2840,height=1374,format=webp/_astro/dex_test_auth_config.CD3G3zb_.png&quot; alt=&quot;Digital experience test configuration for Cloudflare Access applications&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2840&quot; height=&quot;1374&quot;&gt;&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2840,height=1496,format=webp/_astro/dex_test_enhanced_config.Nsv7Vcob.png&quot; alt=&quot;Digital experience enhanced test configuration&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2840&quot; height=&quot;1496&quot;&gt;</description><pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate><product>Digital Experience Monitoring</product><category>Digital Experience Monitoring</category></item><item><title>Gateway - Gateway Authorization Proxy and hosted PAC files are now generally available</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-29-gateway-authorization-proxy-pac-files-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-29-gateway-authorization-proxy-pac-files-ga/</guid><description>&lt;p&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/resolvers-and-proxies/proxy-endpoints/#authorization-endpoint&quot;&gt;Gateway Authorization Proxy&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/resolvers-and-proxies/proxy-endpoints/#create-a-hosted-pac-file&quot;&gt;hosted PAC files&lt;/a&gt; are now generally available for all plan types.&lt;/p&gt;
&lt;p&gt;Authorization proxy endpoints add an identity-aware option alongside the existing &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/resolvers-and-proxies/proxy-endpoints/#source-ip-endpoint&quot;&gt;source IP proxy endpoints&lt;/a&gt;, using &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/policies/&quot;&gt;Cloudflare Access&lt;/a&gt; authentication to verify who a user is before applying Gateway filtering — without installing the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/&quot;&gt;Cloudflare One Client&lt;/a&gt;. Cloudflare-hosted PAC files let you create and distribute PAC files directly from Cloudflare One on Cloudflare&apos;s global network.&lt;/p&gt;
&lt;p&gt;These features are ideal for environments where deploying a device client is not an option, such as virtual desktops (VDI) or compliance-restricted endpoints.&lt;/p&gt;
&lt;p&gt;To get started, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/resolvers-and-proxies/proxy-endpoints/&quot;&gt;proxy endpoints documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Digital Experience Monitoring - Internet outage notifications for devices</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-28-dex-internet-outage-notification/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-28-dex-internet-outage-notification/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/dex/&quot;&gt;Digital Experience&lt;/a&gt; will display a dashboard notification when an Internet outage or traffic anomaly may impact a &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/&quot;&gt;Cloudflare One Client&lt;/a&gt; device based on its geographic location or network connection.&lt;/p&gt;
&lt;p&gt;This Internet outage and traffic anomaly data is pulled from &lt;a href=&quot;https://radar.cloudflare.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Radar&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. All Internet outage and traffic anomaly observations can be viewed in the &lt;a href=&quot;https://radar.cloudflare.com/outage-center&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Radar Outage Center&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2076,height=314,format=webp/_astro/dex_radar_ux_notification.CpdrUVYA.png&quot; alt=&quot;Digital Experience Monitoring dashboard notification for Internet outage impacting Cloudflare One Client devices&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2076&quot; height=&quot;314&quot;&gt;&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2068,height=909,format=webp/_astro/dex_radar_analytics.GaPxWM6C.png&quot; alt=&quot;Digital Experience Monitoring dashboard analytics for Internet outage impacting Cloudflare One Client devices&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2068&quot; height=&quot;909&quot;&gt;</description><pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate><product>Digital Experience Monitoring</product><category>Digital Experience Monitoring</category></item><item><title>Digital Experience Monitoring - Cloudflare One Client speed tests</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-28-dex-speed-test/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-28-dex-speed-test/</guid><description>&lt;p&gt;IT teams can now remotely run speed tests from the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/&quot;&gt;Cloudflare One Client&lt;/a&gt; to Cloudflare&apos;s network edge.&lt;/p&gt;
&lt;p&gt;Each speed test includes the following metrics:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Internet speed: download and upload throughput&lt;/li&gt;
&lt;li&gt;Latency: download, upload, unloaded latency, and jitter&lt;/li&gt;
&lt;li&gt;Network quality score: video streaming, webchat/real-time communication (RTC)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the &lt;a href=&quot;https://dash.cloudflare.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, go to &lt;strong&gt;Zero Trust&lt;/strong&gt; &amp;gt; &lt;strong&gt;Insights&lt;/strong&gt; &amp;gt; &lt;strong&gt;Digital experience&lt;/strong&gt; &amp;gt; &lt;strong&gt;Diagnostics&lt;/strong&gt; and select &lt;strong&gt;Run diagnostics&lt;/strong&gt; to use the feature today.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2906,height=1730,format=webp/_astro/dex_speed_test.DukupcRs.png&quot; alt=&quot;Cloudflare One client speed test result&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2906&quot; height=&quot;1730&quot;&gt;</description><pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate><product>Digital Experience Monitoring</product><category>Digital Experience Monitoring</category></item><item><title>Data Loss Prevention - Create and manage DLP detection entries outside of profiles</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-28-detection-entries-outside-profiles/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-28-detection-entries-outside-profiles/</guid><description>&lt;p&gt;You can now create, view, and manage DLP detection entries outside of profiles.&lt;/p&gt;
&lt;p&gt;Detection entries are no longer hidden inside individual profiles. Administrators can manage detection entries directly from the &lt;strong&gt;Detection entries&lt;/strong&gt; section and use them in custom DLP profiles.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/detection-entries/configure-detection-entries/&quot;&gt;Configure detection entries&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate><product>Data Loss Prevention</product><category>Data Loss Prevention</category></item><item><title>Data Loss Prevention - Detect PII records with a new predefined DLP profile</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-28-pii-record-profile/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-28-pii-record-profile/</guid><description>&lt;p&gt;Cloudflare DLP now includes a new predefined profile designed to detect PII records that contain multiple types of personal data: &lt;strong&gt;Personally Identifiable Information (PII) Record&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Most predefined and custom DLP profiles match when any enabled detection entry matches. The &lt;strong&gt;Personally Identifiable Information (PII) Record&lt;/strong&gt; profile is different. It only matches when at least three unique detection entries are found in close proximity, which reduces false positives from standalone values that may not represent a real PII record.&lt;/p&gt;
&lt;p&gt;Detection entries included in the profile:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AU Passport Number&lt;/li&gt;
&lt;li&gt;American Express Card Number&lt;/li&gt;
&lt;li&gt;Diners Club Card Number&lt;/li&gt;
&lt;li&gt;US Driver&apos;s License Number&lt;/li&gt;
&lt;li&gt;Email Address&lt;/li&gt;
&lt;li&gt;Full Name&lt;/li&gt;
&lt;li&gt;US Mailing Address&lt;/li&gt;
&lt;li&gt;Mastercard Card Number&lt;/li&gt;
&lt;li&gt;US Individual Tax Identification Number (ITIN)&lt;/li&gt;
&lt;li&gt;US Passport Number&lt;/li&gt;
&lt;li&gt;US Phone Number&lt;/li&gt;
&lt;li&gt;Union Pay Card Number&lt;/li&gt;
&lt;li&gt;United States SSN Numeric Detection&lt;/li&gt;
&lt;li&gt;Visa Card Number&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/dlp-profiles/predefined-profiles/&quot;&gt;predefined DLP profiles&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate><product>Data Loss Prevention</product><category>Data Loss Prevention</category></item><item><title>Gateway, Cloudflare One - Network Session Logs now available for all on-ramps</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-24-nsl-all-onramps/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-24-nsl-all-onramps/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/logs/logpush/logpush-job/datasets/account/zero_trust_network_sessions/&quot;&gt;Zero Trust Network Session Logs&lt;/a&gt; are now generated for all traffic proxied through Cloudflare Gateway, regardless of on-ramp type. This includes traffic from &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/resolvers-and-proxies/proxy-endpoints/&quot;&gt;proxy endpoints (PAC files)&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/remote-browser-isolation/&quot;&gt;Browser Isolation&lt;/a&gt; egress — on-ramps that previously did not generate session logs.&lt;/p&gt;
&lt;p&gt;Customers who already consume the &lt;code&gt;zero_trust_network_sessions&lt;/code&gt; dataset via &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/logs/logpush/&quot;&gt;Logpush&lt;/a&gt; or &lt;a href=&quot;https://docs.infinitegaming.org/log-explorer/&quot;&gt;Log Explorer&lt;/a&gt; may see increased log volume if they use these on-ramps.&lt;/p&gt;
&lt;p&gt;For field definitions, refer to &lt;a href=&quot;https://docs.infinitegaming.org/logs/logpush/logpush-job/datasets/account/zero_trust_network_sessions/&quot;&gt;Zero Trust Network Session Logs&lt;/a&gt;. For traffic analysis, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/analytics/network-sessions/&quot;&gt;Network session analytics&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category><category>Cloudflare One</category></item><item><title>Access - AAGUID restrictions and AMR matching for Access independent MFA</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-23-independent-mfa-aaguid-amr/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-23-independent-mfa-aaguid-amr/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/access-settings/independent-mfa/&quot;&gt;Independent MFA&lt;/a&gt; in Cloudflare Access now supports two additional organization-level controls:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/access-settings/independent-mfa/#restrict-authenticators-by-aaguid&quot;&gt;Restrict authenticators by AAGUID&lt;/a&gt;&lt;/strong&gt; — Limit enrollment to a specific set of WebAuthn authenticators using their &lt;a href=&quot;https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-registry-v2.0-id-20180227.html#authenticator-attestation-guid&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AAGUID&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. This is useful for organizations that require FIPS-validated security keys or company-issued hardware. AAGUIDs are managed through a new &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/reusable-components/lists/&quot;&gt;List&lt;/a&gt; type.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/access-settings/independent-mfa/#use-identity-provider-mfa&quot;&gt;AMR matching&lt;/a&gt;&lt;/strong&gt; — Skip the independent MFA prompt when the identity provider has already performed an equivalent MFA. Access reads the &lt;code&gt;amr&lt;/code&gt; claim defined in &lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc8176&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;RFC 8176&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and matches supported values such as &lt;code&gt;hwk&lt;/code&gt;, &lt;code&gt;otp&lt;/code&gt;, and &lt;code&gt;fpt&lt;/code&gt; to the authenticator types allowed on the application or policy. This prevents users from having to complete MFA twice when their identity provider already enforces it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To get started, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/access-settings/independent-mfa/&quot;&gt;Independent MFA&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 23 Apr 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Cloudflare Network Firewall, Magic Transit, Cloudflare WAN - Country rules supported in Unified Routing</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-21-unified-routing-geoip-country-rules/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-21-unified-routing-geoip-country-rules/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-network-firewall/&quot;&gt;Cloudflare Advanced Network Firewall&lt;/a&gt; Country rules are now supported for accounts using &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/reference/traffic-steering/#unified-routing&quot;&gt;Unified Routing&lt;/a&gt; mode. This feature requires a Cloudflare Advanced Network Firewall subscription.&lt;/p&gt;
&lt;p&gt;You can create firewall rules that match traffic based on source or destination country to enforce geographic access policies across your network.&lt;/p&gt;
&lt;p&gt;This is the first of the Cloudflare Advanced Network Firewall features to become available in Unified Routing. Support for additional features - IP Lists, ASN Lists, Threat Intel Lists, IDS, Rate Limiting, SIP, and Managed Rulesets - is planned.&lt;/p&gt;
&lt;p&gt;For the full list of current beta limitations, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/reference/traffic-steering/#check-feature-availability-before-upgrading&quot;&gt;Traffic steering beta limitations&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 21 Apr 2026 12:00:00 GMT</pubDate><product>Cloudflare Network Firewall</product><category>Cloudflare Network Firewall</category><category>Magic Transit</category><category>Cloudflare WAN</category></item><item><title>Cloudflare Fundamentals, Workers - Introducing Billable Usage dashboard and Budget alerts</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-13-billable-usage-dashboard-and-budget-alerts/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-13-billable-usage-dashboard-and-budget-alerts/</guid><description>&lt;p&gt;Pay-as-you-go customers can now monitor usage-based costs and configure spend alerts through two new features: the Billable Usage dashboard and Budget alerts.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;billable-usage-dashboard&quot;&gt;Billable Usage dashboard&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#billable-usage-dashboard&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The Billable Usage dashboard provides daily visibility into usage-based costs across your Cloudflare account. The data comes from the same system that generates your monthly invoice, so the figures match your bill.&lt;/p&gt;
&lt;p&gt;The dashboard displays:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A bar chart showing daily usage charges for your billing period&lt;/li&gt;
&lt;li&gt;A sortable table breaking down usage by product, including total usage, billable usage, and cumulative costs&lt;/li&gt;
&lt;li&gt;Ability to view previous billing periods&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Usage data aligns to your billing cycle, not the calendar month. The total usage cost shown at the end of a completed billing period matches the usage overage charges on your corresponding invoice.&lt;/p&gt;
&lt;p&gt;To access the dashboard, go to &lt;strong&gt;Manage Account&lt;/strong&gt; &amp;gt; &lt;strong&gt;Billing&lt;/strong&gt; &amp;gt; &lt;strong&gt;Billable Usage&lt;/strong&gt;.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1033,height=757,format=webp/_astro/2026-04-13-billable-usage-dashboard.CQvMdtrp.png&quot; alt=&quot;Screenshot of the Billable Usage dashboard in the Cloudflare dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1033&quot; height=&quot;757&quot;&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;budget-alerts&quot;&gt;Budget alerts&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#budget-alerts&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Budget alerts allow you to set dollar-based thresholds for your account-level usage spend. You receive an email notification when your projected monthly spend reaches your configured threshold, giving you proactive visibility into your bill before month-end.&lt;/p&gt;
&lt;p&gt;To configure a budget alert:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;Manage Account&lt;/strong&gt; &amp;gt; &lt;strong&gt;Billing&lt;/strong&gt; &amp;gt; &lt;strong&gt;Billable Usage&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Set Budget Alert&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enter a budget threshold amount greater than $0.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Create&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Alternatively, configure alerts via &lt;strong&gt;Notifications&lt;/strong&gt; &amp;gt; &lt;strong&gt;Add&lt;/strong&gt; &amp;gt; &lt;strong&gt;Budget Alert&lt;/strong&gt;.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=315,height=374,format=webp/_astro/2026-04-13-budget-alert-modal.BjIzGOLV.png&quot; alt=&quot;Create Budget Alert modal in the Cloudflare dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;315&quot; height=&quot;374&quot;&gt;
&lt;p&gt;You can create multiple budget alerts at different dollar amounts. The notifications system automatically deduplicates alerts if multiple thresholds trigger at the same time. Budget alerts are calculated daily based on your usage trends and fire once per billing cycle when your projected spend first crosses your threshold.&lt;/p&gt;
&lt;p&gt;Both features are available to Pay-as-you-go accounts with usage-based products (Workers, R2, Images, etc.). Enterprise contract accounts are not supported.&lt;/p&gt;
&lt;p&gt;For more information, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/billing/understand/usage-based-billing/&quot;&gt;Usage based billing documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 21 Apr 2026 00:00:00 GMT</pubDate><product>Cloudflare Fundamentals</product><category>Cloudflare Fundamentals</category><category>Workers</category></item><item><title>Workers - WebSocket binary messages now delivered as Blob by default</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-21-websocket-standard-binary-type/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-21-websocket-standard-binary-type/</guid><description>&lt;p&gt;Binary frames received on a &lt;code&gt;WebSocket&lt;/code&gt; are now delivered to the &lt;code&gt;message&lt;/code&gt; event as &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Blob&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;Blob&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; objects by default. This matches the &lt;a href=&quot;https://websockets.spec.whatwg.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;WebSocket specification&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and standard browser behavior. Previously, binary frames were always delivered as &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;ArrayBuffer&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. The &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/websockets/#binarytype&quot;&gt;&lt;code&gt;binaryType&lt;/code&gt;&lt;/a&gt; property on &lt;code&gt;WebSocket&lt;/code&gt; controls the delivery type on a per-WebSocket basis.&lt;/p&gt;
&lt;p&gt;This change has been active for Workers with compatibility dates on or after &lt;code&gt;2026-03-17&lt;/code&gt;, via the &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/compatibility-flags/#websocket-standard-binary-type&quot;&gt;&lt;code&gt;websocket_standard_binary_type&lt;/code&gt;&lt;/a&gt; compatibility flag. We should have documented this change when it shipped but didn&apos;t. We&apos;re sorry for the trouble that caused. If your Worker handles binary WebSocket messages and assumes &lt;code&gt;event.data&lt;/code&gt; is an &lt;code&gt;ArrayBuffer&lt;/code&gt;, the frames will arrive as &lt;code&gt;Blob&lt;/code&gt; instead, and a naive &lt;code&gt;instanceof ArrayBuffer&lt;/code&gt; check will silently drop every frame.&lt;/p&gt;
&lt;p&gt;To opt back into &lt;code&gt;ArrayBuffer&lt;/code&gt; delivery, assign &lt;code&gt;binaryType&lt;/code&gt; before calling &lt;code&gt;accept()&lt;/code&gt;. This works regardless of the compatibility flag:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; resp&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;https://example.com&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	headers: { Upgrade: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;websocket&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; ws&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; resp.webSocket;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// Opt back into ArrayBuffer delivery for this WebSocket.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;ws.binaryType &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;arraybuffer&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;ws.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;accept&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;ws.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;message&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, (&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;event&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	if&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;typeof&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; event.data &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;===&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;string&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// Text frame.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	} &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// event.data is an ArrayBuffer because we set binaryType above.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;If you are not ready to migrate and want to keep &lt;code&gt;ArrayBuffer&lt;/code&gt; as the default for all WebSockets in your Worker, add the &lt;code&gt;no_websocket_standard_binary_type&lt;/code&gt; flag to your &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/configuration/&quot;&gt;Wrangler configuration file&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This change has no effect on the Durable Object hibernatable WebSocket &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/best-practices/websockets/&quot;&gt;&lt;code&gt;webSocketMessage&lt;/code&gt;&lt;/a&gt; handler, which continues to receive binary data as &lt;code&gt;ArrayBuffer&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/websockets/#binary-messages&quot;&gt;WebSockets binary messages&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 21 Apr 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare One, Gateway - Network session analytics dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-20-network-session-analytics/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-20-network-session-analytics/</guid><description>&lt;p&gt;The new &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/analytics/network-sessions/&quot;&gt;Network session analytics&lt;/a&gt; dashboard is now available in Cloudflare One. This dashboard provides visibility into your network traffic patterns, helping you understand how traffic flows through your Cloudflare One infrastructure.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2926,height=1574,format=webp/_astro/cf1-network-session-analytics.Gl90hEcp.png&quot; alt=&quot;Cloudflare One Network Session Analytics&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2926&quot; height=&quot;1574&quot;&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;what-you-can-do-with-network-session-analytics&quot;&gt;What you can do with Network session analytics&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#what-you-can-do-with-network-session-analytics&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Analyze geographic distribution&lt;/strong&gt;: View a world map showing where your network traffic originates, with a list of top locations by session count.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitor key metrics&lt;/strong&gt;: Track session count, total bytes transferred, and unique users.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Identify connection issues&lt;/strong&gt;: Analyze connection close reasons to troubleshoot network problems.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Review protocol usage&lt;/strong&gt;: See which network protocols (TCP, UDP, ICMP) are most used.&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;dashboard-features&quot;&gt;Dashboard features&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#dashboard-features&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Summary metrics&lt;/strong&gt;: Session count, bytes total, and unique users&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traffic by location&lt;/strong&gt;: World map visualization and location list with top traffic sources&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Top protocols&lt;/strong&gt;: Breakdown of TCP, UDP, ICMP, and ICMPv6 traffic&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Connection close reasons&lt;/strong&gt;: Insights into why sessions terminated (client closed, origin closed, timeouts, errors)&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;how-to-access&quot;&gt;How to access&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#how-to-access&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Log in to &lt;a href=&quot;https://dash.cloudflare.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare One&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;Zero Trust&lt;/strong&gt; &amp;gt; &lt;strong&gt;Insights&lt;/strong&gt; &amp;gt; &lt;strong&gt;Dashboards&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Network session analytics&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For more information, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/analytics/network-sessions/&quot;&gt;Network session analytics documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category><category>Gateway</category></item><item><title>Access - Homepage and sign-out for MCP server portals</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-17-mcp-portal-homepage-and-sign-out/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-17-mcp-portal-homepage-and-sign-out/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/&quot;&gt;MCP server portals&lt;/a&gt; display a homepage when users visit the portal domain in a browser.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1037,height=631,format=webp/_astro/portals-homepage-disconnected.BHbOwayQ.png&quot; alt=&quot;MCP server portal homepage showing connection status and setup instructions&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1037&quot; height=&quot;631&quot;&gt;
&lt;p&gt;The homepage shows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The portal name and organization branding&lt;/li&gt;
&lt;li&gt;The MCP endpoint URL with a copy button&lt;/li&gt;
&lt;li&gt;Per-client connection instructions for Claude Desktop, Workers AI Playground, OpenCode, Windsurf, and other MCP clients&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Authenticated users see their email address and a &lt;strong&gt;Sign out&lt;/strong&gt; button. Selecting &lt;strong&gt;Sign out&lt;/strong&gt; revokes all portal-level OAuth grants, deletes upstream server OAuth states, and redirects through Cloudflare Access logout. A confirmation page shows a summary of the revoked sessions.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/#portal-homepage&quot;&gt;MCP server portals&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 17 Apr 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Access - Independent MFA for Access applications</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-15-independent-mfa/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-15-independent-mfa/</guid><description>&lt;p&gt;Cloudflare Access now supports independent multi-factor authentication (MFA), allowing you to enforce MFA requirements without relying on your identity provider (IdP). With per-application and per-policy configuration, you can enforce stricter authentication methods like hardware security keys on sensitive applications without requiring them across your entire organization. This reduces the risk of MFA fatigue for your broader user population while adding additional security where it matters most.&lt;/p&gt;
&lt;p&gt;This feature also addresses common gaps in IdP-based MFA, such as inconsistent MFA policies across different identity providers or the need for additional security layers beyond what the IdP provides.&lt;/p&gt;
&lt;p&gt;Independent MFA supports the following authenticator types:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Authenticator application&lt;/strong&gt; — Time-based one-time passwords (TOTP) using apps like Google Authenticator, Microsoft Authenticator, or Authy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security key&lt;/strong&gt; — Hardware security keys such as YubiKeys.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Biometrics&lt;/strong&gt; — Built-in device authenticators including Apple Touch ID, Apple Face ID, and Windows Hello.&lt;/li&gt;
&lt;/ul&gt;
&lt;aside role=&quot;note&quot; aria-label=&quot;Note&quot; class=&quot;aside-card flex items-start gap-3 rounded-lg px-4 py-3 my-4&quot; style=&quot;--_c: var(--nb-info); --_t: var(--nb-info-muted);&quot; data-astro-cid-znle5jil&gt;&lt;span class=&quot;flex h-[1.375em] shrink-0 items-center&quot; aria-hidden=&quot;true&quot; data-astro-cid-znle5jil&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[1em] w-[1em]&quot; data-astro-cid-znle5jil=&quot;true&quot; data-icon=&quot;ph:info&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24m0 192a88 88 0 1 1 88-88a88.1 88.1 0 0 1-88 88m16-40a8 8 0 0 1-8 8a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 8 8m-32-92a12 12 0 1 1 12 12a12 12 0 0 1-12-12&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div class=&quot;flex min-w-0 flex-1 flex-col gap-0.5&quot; data-astro-cid-znle5jil&gt;&lt;p class=&quot;m-0 text-base leading-snug font-semibold&quot; data-astro-cid-znle5jil&gt;Note&lt;/p&gt;&lt;div class=&quot;aside-card-body text-sm leading-normal&quot; data-astro-cid-znle5jil&gt;&lt;p&gt;Infrastructure applications do not yet support independent MFA.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;configuration-levels&quot;&gt;Configuration levels&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#configuration-levels&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;You can configure MFA requirements at three levels:&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Level&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Organization&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Enforce MFA by default for all applications in your account.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Application&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Require or turn off MFA for a specific application.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Policy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Require or turn off MFA for users who match a specific policy.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Settings at lower levels (policy) override settings at higher levels (organization), giving you granular control over MFA enforcement.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;user-enrollment&quot;&gt;User enrollment&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#user-enrollment&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Users enroll their authenticators through the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/access-settings/app-launcher/&quot;&gt;App Launcher&lt;/a&gt;. To help with onboarding, administrators can share a direct enrollment link: &lt;code&gt;&amp;lt;your-team-name&amp;gt;.cloudflareaccess.com/AddMfaDevice&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;To get started with Independent MFA, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/access-settings/independent-mfa/&quot;&gt;Independent MFA&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Cloudflare One - New, streamlined creation experience for Access Applications and Gateway Policies</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-15-new-rule-and-application-builders/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-15-new-rule-and-application-builders/</guid><description>&lt;p&gt;The Cloudflare One dashboard now features redesigned builders for two core workflows: creating Gateway policies and configuring self-hosted Access applications.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;gateway-rule-builder&quot;&gt;Gateway rule builder&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#gateway-rule-builder&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The Gateway rule builder now features a redesigned user experience, bringing it in line with the Access policy builder experience. Improvements include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Streamlined UX&lt;/strong&gt; with clearer states and improved user interactions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wirefilter editing&lt;/strong&gt; for viewing and editing Gateway rules directly from wirefilter expressions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Preview state&lt;/strong&gt; to review the impact of your policy in a simple graphic&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1280,height=1494,format=webp/_astro/gateway-rule-builder.BxvzsN8s.png&quot; alt=&quot;New Gateway rule builder&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1280&quot; height=&quot;1494&quot;&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/&quot;&gt;Traffic policies&lt;/a&gt;.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;access-application-builder-for-self-hosted-apps&quot;&gt;Access application builder for self-hosted apps&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#access-application-builder-for-self-hosted-apps&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The self-hosted Access application builder now offers a simplified creation workflow with fewer steps from setup to save. Improvements include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;New application selection experience&lt;/strong&gt; that makes choosing the right application type before you begin easier.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Streamlined creation flow&lt;/strong&gt; with fewer clicks to build and save an application&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inline policy creation&lt;/strong&gt; for building Access policies directly within the application creation flow&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Preview state&lt;/strong&gt; to understand how your policies enforce user access before saving&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1970,height=1104,format=webp/_astro/access-application-builder.B__yqGin.png&quot; alt=&quot;New Access application builder&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1970&quot; height=&quot;1104&quot;&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/http-apps/&quot;&gt;self-hosted applications&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category></item><item><title>Digital Experience Monitoring - Last seen timestamp for Cloudflare One Client devices is more consistent</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-15-dex-consistent-last-seen-timestamps/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-15-dex-consistent-last-seen-timestamps/</guid><description>&lt;p&gt;The last seen timestamp for &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/&quot;&gt;Cloudflare One Client&lt;/a&gt; devices is now more consistent across the dashboard. IT teams will see more consistent information about the most recent client event between a device and Cloudflare&apos;s network.&lt;/p&gt;</description><pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate><product>Digital Experience Monitoring</product><category>Digital Experience Monitoring</category></item><item><title>Data Loss Prevention - DLP account-level settings</title><link>https://docs.infinitegaming.org/changelog/post/2025-04-14-account-level-dlp-settings/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-04-14-account-level-dlp-settings/</guid><description>&lt;p&gt;&lt;strong&gt;Account-level DLP settings are now available&lt;/strong&gt; in Cloudflare One. You can now configure advanced DLP settings at the account level, including OCR, AI context analysis, and payload masking. This provides consistent enforcement across all DLP profiles and simplifies configuration management.&lt;/p&gt;
&lt;p&gt;Key changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Consistent enforcement&lt;/strong&gt;: Settings configured at the account level apply to all DLP profiles&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simplified migration&lt;/strong&gt;: Settings enabled on any profile are automatically migrated to account level&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deprecation notice&lt;/strong&gt;: Profile-level advanced settings will be deprecated in a future release&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Migration details:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;During the migration period, if a setting is enabled on any profile, it will automatically be enabled at the account level. This means profiles that previously had a setting disabled may now have it enabled if another profile in the account had it enabled.&lt;/p&gt;
&lt;p&gt;Settings are evaluated using OR logic - a setting is enabled if it is turned on at either the account level or the profile level. However, profile-level settings cannot be enabled when the account-level setting is off.&lt;/p&gt;
&lt;p&gt;For more details, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/dlp-settings/&quot;&gt;DLP settings documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 14 Apr 2026 12:00:00 GMT</pubDate><product>Data Loss Prevention</product><category>Data Loss Prevention</category></item><item><title>Cloudflare One - Introducing Cloudflare Mesh</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-14-cloudflare-mesh/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-14-cloudflare-mesh/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/mesh/&quot;&gt;Cloudflare Mesh&lt;/a&gt; is now available (&lt;a href=&quot;https://blog.cloudflare.com/mesh/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;blog post&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;). Mesh connects your services and devices with post-quantum encrypted networking, allowing you to route traffic privately between servers, laptops, and phones over TCP, UDP, and ICMP.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2070,height=875,format=webp/_astro/mesh-network-map.CED6jNHK.gif&quot; alt=&quot;Cloudflare Mesh network map showing nodes and devices connected through Cloudflare&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2070&quot; height=&quot;875&quot;&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;what-cloudflare-mesh-does&quot;&gt;What Cloudflare Mesh does&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#what-cloudflare-mesh-does&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Assigns a private &lt;a href=&quot;https://docs.infinitegaming.org/mesh/concepts/#mesh-ips&quot;&gt;Mesh IP&lt;/a&gt; to every enrolled device and node.&lt;/li&gt;
&lt;li&gt;Enables any participant to reach any other participant by IP — including client-to-client, without deploying any infrastructure.&lt;/li&gt;
&lt;li&gt;Supports &lt;a href=&quot;https://docs.infinitegaming.org/mesh/features/routes/&quot;&gt;CIDR routes&lt;/a&gt; for subnet routing through Mesh nodes.&lt;/li&gt;
&lt;li&gt;Supports &lt;a href=&quot;https://docs.infinitegaming.org/mesh/features/high-availability/&quot;&gt;high availability&lt;/a&gt; with active-passive replicas for nodes with routes.&lt;/li&gt;
&lt;li&gt;All traffic flows through Cloudflare, so &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/network-policies/&quot;&gt;Gateway network policies&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/reusable-components/posture-checks/&quot;&gt;device posture checks&lt;/a&gt;, and access rules apply to every connection.&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;what-changed&quot;&gt;What changed&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#what-changed&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WARP Connector&lt;/strong&gt; is now &lt;strong&gt;Cloudflare Mesh&lt;/strong&gt;. Existing WARP Connectors are now called mesh nodes. All existing deployments continue to work — no migration required.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Peer-to-peer connectivity&lt;/strong&gt; is now called &lt;strong&gt;Mesh connectivity&lt;/strong&gt; and is part of the Cloudflare Mesh documentation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mesh node limit&lt;/strong&gt; increased from 10 to &lt;strong&gt;50 per account&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;New &lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/mesh&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dashboard experience&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; at &lt;strong&gt;Networking&lt;/strong&gt; &amp;gt; &lt;strong&gt;Mesh&lt;/strong&gt; with an interactive network map, node management, route configuration, diagnostics, and a setup wizard.&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;get-started&quot;&gt;Get started&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#get-started&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Refer to the &lt;a href=&quot;https://docs.infinitegaming.org/mesh/&quot;&gt;Cloudflare Mesh documentation&lt;/a&gt; to set up your first Mesh network.&lt;/p&gt;</description><pubDate>Tue, 14 Apr 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category></item><item><title>Data Loss Prevention - Detect Cloudflare API tokens with DLP</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-14-cloudflare-api-token-detections/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-14-cloudflare-api-token-detections/</guid><description>&lt;p&gt;The &lt;strong&gt;Credentials and Secrets&lt;/strong&gt; DLP profile now includes three new predefined entries for detecting Cloudflare API credentials:&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Entry name&lt;/th&gt;
&lt;th&gt;Token prefix&lt;/th&gt;
&lt;th&gt;Detects&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Cloudflare User API Key&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cfk_&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;User-scoped API keys&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloudflare User API Token&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cfut_&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;User-scoped API tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloudflare Account Owned API Token&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cfat_&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Account-scoped API tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;These detections target the new &lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/api/get-started/token-formats/&quot;&gt;Cloudflare API credential format&lt;/a&gt;, which uses a structured prefix and a CRC32 checksum suffix. The identifiable prefix makes it possible to detect leaked credentials with high confidence and low false positive rates — no surrounding context such as &lt;code&gt;Authorization: Bearer&lt;/code&gt; headers is required.&lt;/p&gt;
&lt;p&gt;Credentials generated before this format change will not be matched by these entries.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;how-to-enable-cloudflare-api-token-detections&quot;&gt;How to enable Cloudflare API token detections&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#how-to-enable-cloudflare-api-token-detections&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;In the &lt;a href=&quot;https://dash.cloudflare.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, go to &lt;strong&gt;Zero Trust&lt;/strong&gt; &amp;gt; &lt;strong&gt;DLP&lt;/strong&gt; &amp;gt; &lt;strong&gt;DLP Profiles&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select the &lt;strong&gt;Credentials and Secrets&lt;/strong&gt; profile.&lt;/li&gt;
&lt;li&gt;Turn on one or more of the new Cloudflare API token entries.&lt;/li&gt;
&lt;li&gt;Use the profile in a Gateway HTTP policy to log or block traffic containing these credentials.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Example policy:&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Selector&lt;/th&gt;
&lt;th&gt;Operator&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DLP Profile&lt;/td&gt;
&lt;td&gt;in&lt;/td&gt;
&lt;td&gt;&lt;em&gt;Credentials and Secrets&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;Block&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;You can also enable individual entries to scope detection to specific credential types — for example, enabling &lt;strong&gt;Account Owned API Token&lt;/strong&gt; detection without enabling &lt;strong&gt;User API Key&lt;/strong&gt; detection.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/dlp-profiles/predefined-profiles/&quot;&gt;predefined DLP profiles&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 14 Apr 2026 00:00:00 GMT</pubDate><product>Data Loss Prevention</product><category>Data Loss Prevention</category></item><item><title>Gateway, Data Loss Prevention - Configure how sensitive data appears in DLP payload logs</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-14-configurable-payload-log-masking/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-14-configurable-payload-log-masking/</guid><description>&lt;p&gt;You can now configure how sensitive data matches are displayed in your DLP payload match logs — giving your incident response team the context they need to validate alerts without compromising your security posture.&lt;/p&gt;
&lt;p&gt;To get started, go to the &lt;a href=&quot;https://dash.cloudflare.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, select &lt;strong&gt;Zero Trust&lt;/strong&gt; &amp;gt; &lt;strong&gt;Data loss prevention&lt;/strong&gt; &amp;gt; &lt;strong&gt;DLP settings&lt;/strong&gt; and find the &lt;strong&gt;Payload log masking&lt;/strong&gt; card.&lt;/p&gt;
&lt;p&gt;Previously, all DLP payload logs used a single masking mode that obscured matched data entirely and hid the original character count, making it difficult to distinguish true positives from false positives. This update introduces three options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Full Mask (default):&lt;/strong&gt; Masks the match while preserving character count and visual formatting (for example, &lt;code&gt;***-**-****&lt;/code&gt; for a Social Security Number). This is an improvement over the previous default, which did not preserve character count.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Partial Mask:&lt;/strong&gt; Reveals 25% of the matched content while masking the remainder (for example, &lt;code&gt;***-**-6789&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clear Text:&lt;/strong&gt; Stores the full, unmasked violation for deep investigation (for example, &lt;code&gt;123-45-6789&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; The masking level you select is applied at detection time, before the payload is encrypted. This means the chosen format is what your team will see after decrypting the log with your private key — the existing encryption workflow is unchanged.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Applies to all enabled detections:&lt;/strong&gt; When a masking level other than Full Mask is selected, it applies to all sensitive data matches found within a payload window — not just the match that triggered the policy. Any data matched by your enabled DLP detection entries will be masked at the selected level.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/dlp-policies/logging-options/#log-the-payload-of-matched-rules&quot;&gt;DLP logging options&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 14 Apr 2026 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category><category>Data Loss Prevention</category></item><item><title>Workers - Local Explorer for local resource data</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-13-local-explorer/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-13-local-explorer/</guid><description>&lt;p&gt;Local Explorer is a browser-based interface and REST API for viewing and editing local resource data during development. It removes the need to write throwaway scripts or dig through &lt;code&gt;.wrangler/state&lt;/code&gt; to understand what data your Worker has stored locally.&lt;/p&gt;
&lt;p&gt;Local Explorer is available in Wrangler 4.82.1+ and the Cloudflare Vite plugin 1.32.0+. Start a local development session and press &lt;code&gt;e&lt;/code&gt; in your terminal, or navigate to &lt;code&gt;/cdn-cgi/local/explorer&lt;/code&gt; on your local dev server.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;supported-resources&quot;&gt;Supported resources&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#supported-resources&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Local Explorer supports five resource types and works across multiple workers running locally:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.infinitegaming.org/kv/&quot;&gt;KV&lt;/a&gt;&lt;/strong&gt; — Browse keys, view values and metadata, create, update, and delete key-value pairs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.infinitegaming.org/r2/&quot;&gt;R2&lt;/a&gt;&lt;/strong&gt; — List objects, view metadata, upload files, and delete objects. Supports directory views and multi-select.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.infinitegaming.org/d1/&quot;&gt;D1&lt;/a&gt;&lt;/strong&gt; — Browse tables and rows, run arbitrary SQL queries, and edit schemas in a full data studio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/&quot;&gt;Durable Objects&lt;/a&gt;&lt;/strong&gt; (SQLite storage) — Browse individual object SQLite tables, run SQL queries, and edit schemas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workflows/&quot;&gt;Workflows&lt;/a&gt;&lt;/strong&gt; — List instances, view status and step history, trigger new runs, and pause, resume, restart, or terminate instances.&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;openapi-powered-rest-api&quot;&gt;OpenAPI-powered REST API&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#openapi-powered-rest-api&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Local Explorer exposes a REST API at &lt;code&gt;/cdn-cgi/local/explorer/api&lt;/code&gt; that provides programmatic access to the same operations available in the browser. The root endpoint returns an &lt;a href=&quot;https://www.openapis.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAPI specification&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; describing all available endpoints, parameters, and response formats.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; http://localhost:8787/cdn-cgi/local/explorer/api&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Point an AI coding agent at &lt;code&gt;/cdn-cgi/local/explorer/api&lt;/code&gt; and it can discover and interact with your local resources without manual setup. This enables iterative development loops where an agent can populate test data in KV or D1, inspect Durable Object state, trigger Workflow runs, or upload files to R2.&lt;/p&gt;
&lt;p&gt;For more details, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/workers/local-development/local-explorer/&quot;&gt;Local Explorer documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Browser Isolation - Canvas Remoting optimizes performance for productivity applications</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-10-canvas-remoting-performance/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-10-canvas-remoting-performance/</guid><description>&lt;p&gt;Remote Browser Isolation now supports &lt;strong&gt;Canvas Remoting&lt;/strong&gt;, improving performance for HTML5 Canvas applications by sending vector draw commands instead of rasterized bitmaps.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;key-improvements&quot;&gt;Key improvements&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#key-improvements&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;10x bandwidth reduction:&lt;/strong&gt; Microsoft Word and other Office apps use 90% less bandwidth&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Smooth performance:&lt;/strong&gt; Google Sheets maintains consistent 30fps rendering&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Responsive terminals:&lt;/strong&gt; Web-based development environments and AI notebooks work in real-time&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zero configuration:&lt;/strong&gt; Enabled by default for all Browser Isolation customers&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;how-it-works&quot;&gt;How it works&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#how-it-works&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Instead of sending rasterized bitmaps for every Canvas update, Browser Isolation now:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Captures Canvas draw commands at the source&lt;/li&gt;
&lt;li&gt;Converts them to lightweight vector instructions&lt;/li&gt;
&lt;li&gt;Renders Canvas content on the client&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This reduces bandwidth from hundreds of kilobytes per second to tens of kilobytes per second.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;managing-canvas-remoting&quot;&gt;Managing Canvas Remoting&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#managing-canvas-remoting&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;To temporarily disable for troubleshooting:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Right-click the isolated webpage background&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Disable Canvas Remoting&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Re-enable the same way by selecting &lt;strong&gt;Enable Canvas Remoting&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;limitations&quot;&gt;Limitations&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#limitations&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Currently supports 2D Canvas contexts only. WebGL and 3D graphics applications continue using bitmap rendering. For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/remote-browser-isolation/canvas-remoting/&quot;&gt;Canvas Remoting&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate><product>Browser Isolation</product><category>Browser Isolation</category></item><item><title>CASB - Send CASB posture finding instances with webhooks</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-09-casb-webhooks/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-09-casb-webhooks/</guid><description>&lt;p&gt;You can now use &lt;strong&gt;CASB webhooks&lt;/strong&gt; in Cloudflare One to send posture finding instances to external systems such as chat platforms, ticketing systems, SIEMs, SOAR tools, and custom automation services.&lt;/p&gt;
&lt;p&gt;This gives security teams a simple way to route CASB posture findings into the tools and workflows they already use for triage and response.&lt;/p&gt;
&lt;p&gt;To get started, go to &lt;strong&gt;Integrations&lt;/strong&gt; &amp;gt; &lt;strong&gt;Webhooks&lt;/strong&gt; in the Cloudflare One dashboard to create a webhook destination. After you configure a webhook, open a posture finding instance and select &lt;strong&gt;Send webhook&lt;/strong&gt; to send it.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;key-capabilities&quot;&gt;Key capabilities&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#key-capabilities&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Flexible authentication&lt;/strong&gt; — Configure destinations using &lt;strong&gt;None&lt;/strong&gt;, &lt;strong&gt;Basic Auth&lt;/strong&gt;, &lt;strong&gt;Bearer Auth&lt;/strong&gt;, &lt;strong&gt;Static Headers&lt;/strong&gt;, or &lt;strong&gt;HMAC-Signing&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built-in testing&lt;/strong&gt; — Use &lt;strong&gt;Test delivery&lt;/strong&gt; to send a test request before sending a live finding instance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Posture finding workflows&lt;/strong&gt; — Send posture finding instances directly from the finding details workflow in &lt;strong&gt;Cloud &amp;amp; SaaS findings&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HTTPS destinations&lt;/strong&gt; — Configure webhook destinations with public &lt;code&gt;https://&lt;/code&gt; URLs.&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;learn-more&quot;&gt;Learn more&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#learn-more&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Configure &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/cloud-and-saas/webhooks/&quot;&gt;CASB webhooks&lt;/a&gt; in Cloudflare.&lt;/li&gt;
&lt;li&gt;Learn how to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/cloud-and-saas-findings/manage-findings/&quot;&gt;manage findings&lt;/a&gt; in Cloudflare.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CASB webhooks are now available in Cloudflare One.&lt;/p&gt;</description><pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate><product>CASB</product><category>CASB</category></item><item><title>Workers - Relaxed simultaneous connection limiting for Workers</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-09-relaxed-connection-limiting/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-09-relaxed-connection-limiting/</guid><description>&lt;p&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/workers/platform/limits/#simultaneous-open-connections&quot;&gt;simultaneous open connections limit&lt;/a&gt; has been relaxed. Previously, each Worker invocation was limited to six open connections at a time for the entire lifetime of each connection, including while reading the response body. Now, a connection is freed as soon as response headers arrive, so the six-connection limit only constrains how many connections can be in the initial &quot;waiting for headers&quot; phase simultaneously.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;before-new-connections-are-blocked-until-an-earlier-connection-fully-completes&quot;&gt;Before: New connections are blocked until an earlier connection fully completes&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#before-new-connections-are-blocked-until-an-earlier-connection-fully-completes&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=820,height=500,format=svg/_astro/connection-limit-before.BYti-Sxe.svg&quot; alt=&quot;A 7th fetch is queued until an earlier connection fully completes, including reading its entire response body&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;820&quot; height=&quot;500&quot;&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;after-new-connections-can-start-as-soon-as-response-headers-arrive&quot;&gt;After: New connections can start as soon as response headers arrive&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#after-new-connections-can-start-as-soon-as-response-headers-arrive&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=820,height=500,format=svg/_astro/connection-limit-after.BfVRyLE8.svg&quot; alt=&quot;A 7th fetch starts as soon as any earlier connection receives its response headers&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;820&quot; height=&quot;500&quot;&gt;
&lt;p&gt;This means Workers can now have many more connections open at the same time without queueing, as long as no more than six are waiting for their initial response. This eliminates the &lt;code&gt;Response closed due to connection limit&lt;/code&gt; exception that could previously occur when the runtime canceled stalled connections to prevent deadlocks.&lt;/p&gt;
&lt;p&gt;Previously, the runtime used a deadlock avoidance algorithm that watched each open connection for I/O activity. If all six connections appeared idle — even momentarily — the runtime would cancel the least-recently-used connection to make room for new requests. In practice, this heuristic was fragile. For example, when a response used &lt;code&gt;Content-Encoding: gzip&lt;/code&gt;, the runtime&apos;s internal decompression created brief gaps between read and write operations. During these gaps, the connection appeared stalled despite being actively read by the Worker. If multiple connections hit these gaps at the same time, the runtime could spuriously cancel a connection that was working correctly. By only counting connections during the waiting-for-headers phase — where the runtime is fully in control and there is no ambiguity about whether the connection is active — this class of bug is eliminated entirely.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;before-connections-could-be-canceled-during-brief-internal-pauses&quot;&gt;Before: Connections could be canceled during brief internal pauses&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#before-connections-could-be-canceled-during-brief-internal-pauses&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=820,height=260,format=svg/_astro/connection-cancel-before.D4As_PDP.svg&quot; alt=&quot;A connection with gaps from gzip decompression appears idle and is canceled by the runtime&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;820&quot; height=&quot;260&quot;&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;after-connections-complete-normally-regardless-of-internal-pauses&quot;&gt;After: Connections complete normally regardless of internal pauses&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#after-connections-complete-normally-regardless-of-internal-pauses&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=820,height=230,format=svg/_astro/connection-cancel-after.RdmZLNge.svg&quot; alt=&quot;The same connection completes normally because the body phase is no longer counted against the limit&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;820&quot; height=&quot;230&quot;&gt;</description><pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Risk Score - User risk scoring for high risk browsing activity</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-08-high-risk-browsing/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-08-high-risk-browsing/</guid><description>&lt;p&gt;Cloudflare One&apos;s &lt;strong&gt;User Risk Scoring&lt;/strong&gt; now incorporates direct signals from &lt;strong&gt;Gateway DNS traffic patterns&lt;/strong&gt;. This update allows security teams to automatically elevate a user&apos;s risk score when they visit high-risk or malicious domains, providing a more holistic view of internal threats.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;why-this-matters&quot;&gt;Why this matters&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#why-this-matters&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Browsing activity is a primary indicator of potential compromise. By tying Gateway DNS logs to specific users, administrators can now flag individuals interacting with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Security threats&lt;/strong&gt;: Domains associated with malware, phishing, or command-and-control (C2) centers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;High-risk content&lt;/strong&gt;: Categories such as questionable content or violence that may violate corporate compliance.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Even if a Gateway policy is set to &lt;strong&gt;Block&lt;/strong&gt; the traffic, the interaction is still captured as a &quot;hit&quot; to ensure the user&apos;s risk profile reflects the attempted activity.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;new-risk-behaviors&quot;&gt;New risk behaviors&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#new-risk-behaviors&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Two new behaviors are now available in the dashboard:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Suspicious Security Domain Visited&lt;/strong&gt;: Triggers when a user visits a domain in the security threats or security risk categories.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;High risk domain visited&lt;/strong&gt;: Triggers when a user visits domains categorized as questionable content, violence, or CIPA.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To learn more and get started, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/users/risk-score/&quot;&gt;User Risk Scoring documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate><product>Risk Score</product><category>Risk Score</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Windows (version 2026.3.851.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-07-warp-windows-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-07-warp-windows-ga/</guid><description>&lt;p&gt;A new GA release for the Windows Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains minor fixes and improvements.&lt;/p&gt;
&lt;p&gt;The next stable release for Windows will introduce the new Cloudflare One Client UI, providing a cleaner and more intuitive design as well as easier access to common actions and information.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an issue causing Windows client tunnel interface initialization failure which prevented clients from establishing a tunnel for connection.&lt;/li&gt;
&lt;li&gt;Consumer-only CLI commands are now clearly distinguished from Zero Trust commands.&lt;/li&gt;
&lt;li&gt;Added detailed QUIC connection metrics to diagnostic logs for better troubleshooting.&lt;/li&gt;
&lt;li&gt;Added monitoring for tunnel statistics collection timeouts.&lt;/li&gt;
&lt;li&gt;Switched tunnel congestion control algorithm for local proxy mode to Cubic for improved reliability across platforms.&lt;/li&gt;
&lt;li&gt;Fixed packet capture failing on tunnel interface when the tunnel interface is renamed by SCCM VPN boundary support.&lt;/li&gt;
&lt;li&gt;Fixed unnecessary registration deletion caused by RDP connections in multi-user mode.&lt;/li&gt;
&lt;li&gt;Fixed increased tunnel interface start-up time due to a race between duplicate address detection (DAD) and disabling NetBT.&lt;/li&gt;
&lt;li&gt;Fixed tunnel failing to connect when the system DNS search list contains unexpected characters.&lt;/li&gt;
&lt;li&gt;Empty MDM files are now rejected instead of being incorrectly accepted as a single MDM config.&lt;/li&gt;
&lt;li&gt;Fixed an issue in local proxy mode where the client could become unresponsive due to upstream connection timeouts.&lt;/li&gt;
&lt;li&gt;Fixed an issue where the emergency disconnect status of a prior organization persisted after a switch to a different organization.&lt;/li&gt;
&lt;li&gt;Fixed initiating managed network detections checks when no network is available, which caused device profile flapping.&lt;/li&gt;
&lt;li&gt;Fixed an issue where degraded Windows Management Instrumentation (WMI) state could put the client in a failed connection state loop during initialization.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;For Windows 11 24H2 users, Microsoft has confirmed a regression that may lead to performance issues like mouse lag, audio cracking, or other slowdowns. Cloudflare recommends users experiencing these issues upgrade to a minimum &lt;a href=&quot;https://support.microsoft.com/en-us/topic/july-8-2025-kb5062553-os-build-26100-4652-523e69cb-051b-43c6-8376-6a76d6caeefd&quot;&gt;Windows 11 24H2 version KB5062553&lt;/a&gt; or higher for resolution. This warning will be omitted from future release notes. This Windows update was released in July 2025.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Devices with KB5055523 installed may receive a warning about &lt;code&gt;Win32/ClickFix.ABA&lt;/code&gt; being present in the installer. To resolve this false positive, update Microsoft Security Intelligence to &lt;a href=&quot;https://www.microsoft.com/en-us/wdsi/definitions/antimalware-definition-release-notes?requestVersion=1.429.19.0&quot;&gt;version 1.429.19.0&lt;/a&gt; or later. This warning will be omitted from future release notes. This Microsoft Security Intelligence update was released in May 2025.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DNS resolution may be broken when the following conditions are all true:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The client is in Secure Web Gateway without DNS filtering (tunnel-only) mode.&lt;/li&gt;
&lt;li&gt;A custom DNS server address is configured on the primary network adapter.&lt;/li&gt;
&lt;li&gt;The custom DNS server address on the primary network adapter is changed while the client is connected.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To work around this issue, reconnect the client by selecting &lt;strong&gt;Disconnect&lt;/strong&gt; and then &lt;strong&gt;Connect&lt;/strong&gt; in the client user interface.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 07 Apr 2026 15:56:36 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Email security - User Submission Triage Status Tracking</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-07-triage-status-tracking/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-07-triage-status-tracking/</guid><description>&lt;p&gt;Cloudflare Email security now supports &lt;strong&gt;Triage Status Tracking for User Submissions&lt;/strong&gt;. This enhancement gives SOC teams a streamlined way to track, manage, and prioritize user-submitted emails directly within the Cloudflare One dashboard.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The User Submissions table now includes a &lt;strong&gt;Status&lt;/strong&gt; column with three states: &lt;strong&gt;Unreviewed&lt;/strong&gt; (new submissions awaiting triage), &lt;strong&gt;Reviewed&lt;/strong&gt; (submissions assessed by the SOC team), and &lt;strong&gt;Escalated&lt;/strong&gt; (submissions escalated to team submissions for further investigation). Analysts can quickly update statuses and filter the table to focus on what needs attention.&lt;/li&gt;
&lt;li&gt;SOC teams can now organize their triage workflows, avoid duplicate reviews, and make sure critical threats get escalated for deeper investigation—bringing order to the chaos of high-volume submission management.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Triage Status Tracking is &lt;strong&gt;automatically available&lt;/strong&gt; for all Email security customers using the user submissions feature. No additional configuration is required; customers just need to make sure user submissions are being sent to their user submission aliases.&lt;/p&gt;
&lt;p&gt;This applies to all Email security packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Advantage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise + PhishGuard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Tue, 07 Apr 2026 09:00:00 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Cloudflare One Appliance, Cloudflare One, Cloudflare WAN - Link aggregation (LACP) support for Cloudflare One Appliance</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-07-link-aggregation-lacp-appliance/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-07-link-aggregation-lacp-appliance/</guid><description>&lt;p&gt;Cloudflare One Appliance now supports Link Aggregation Control Protocol (LACP), allowing you to bundle up to six physical LAN ports into a single logical interface. Link aggregation increases available bandwidth and eliminates single points of failure on the LAN side of the appliance.&lt;/p&gt;
&lt;p&gt;This feature is available in beta on physical appliance hardware with the latest OS. No entitlement is required.&lt;/p&gt;
&lt;p&gt;To configure a Link Aggregation Group, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/network-options/link-aggregation/&quot;&gt;Configure link aggregation groups&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 07 Apr 2026 00:00:00 GMT</pubDate><product>Cloudflare One Appliance</product><category>Cloudflare One Appliance</category><category>Cloudflare One</category><category>Cloudflare WAN</category></item><item><title>Workers - WebSockets now automatically reply to Close frames</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-07-websocket-auto-reply-to-close/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-07-websocket-auto-reply-to-close/</guid><description>&lt;p&gt;The Workers runtime now automatically sends a reciprocal Close frame when it receives a Close frame from the peer. The &lt;code&gt;readyState&lt;/code&gt; transitions to &lt;code&gt;CLOSED&lt;/code&gt; before the &lt;code&gt;close&lt;/code&gt; event fires. This matches the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/close_event&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;WebSocket specification&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and standard browser behavior.&lt;/p&gt;
&lt;p&gt;This change is enabled by default for Workers using compatibility dates on or after &lt;code&gt;2026-04-07&lt;/code&gt; (via the &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/compatibility-flags/#websocket-auto-reply-to-close&quot;&gt;&lt;code&gt;web_socket_auto_reply_to_close&lt;/code&gt;&lt;/a&gt; compatibility flag). Existing code that manually calls &lt;code&gt;close()&lt;/code&gt; inside the &lt;code&gt;close&lt;/code&gt; event handler will continue to work — the call is silently ignored when the WebSocket is already closed.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; [&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;server&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;] &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; Object.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;values&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; WebSocketPair&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;server.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;accept&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;server.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;close&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, (&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;event&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;	// readyState is already CLOSED — no need to call server.close().&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	console.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(server.readyState); &lt;/span&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// WebSocket.CLOSED&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	console.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(event.code); &lt;/span&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// 1000&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	console.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(event.wasClean); &lt;/span&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;half-open-mode-for-websocket-proxying&quot;&gt;Half-open mode for WebSocket proxying&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#half-open-mode-for-websocket-proxying&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The automatic close behavior can interfere with WebSocket proxying, where a Worker sits between a client and a backend and needs to coordinate the close on both sides independently. To support this use case, pass &lt;code&gt;{ allowHalfOpen: true }&lt;/code&gt; to &lt;code&gt;accept()&lt;/code&gt;:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; [&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;server&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;] &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; Object.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;values&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; WebSocketPair&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;server.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;accept&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({ allowHalfOpen: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;server.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;close&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, (&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;event&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;	// readyState is still CLOSING here, giving you time&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;	// to coordinate the close on the other side.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	console.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(server.readyState); &lt;/span&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// WebSocket.CLOSING&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;	// Manually close when ready.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	server.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(event.code, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;done&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/websockets/#close-behavior&quot;&gt;WebSockets Close behavior&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 07 Apr 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Email security - DANE Support for MX Deployments</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-06-dane-support-mx-deployments/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-06-dane-support-mx-deployments/</guid><description>&lt;p&gt;Cloudflare Email Security now supports DANE (DNS-based Authentication of Named Entities) for MX deployments. This enhancement strengthens email transport security by enabling DNSSEC-backed certificate verification for our regional MX records.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Regional MX hostnames now publish DANE TLSA records backed by DNSSEC, enabling DANE-capable SMTP senders to cryptographically validate certificate identities before establishing TLS connections—moving beyond opportunistic encryption to verified encrypted delivery.&lt;/li&gt;
&lt;li&gt;DANE support is automatically available for all customers using regional MX deployments. No additional configuration is required; DANE-capable mail infrastructure will automatically validate MX certificates using the published records.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This applies to all Email Security packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Advantage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise + PhishGuard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Mon, 06 Apr 2026 09:00:00 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Cloudflare Fundamentals, Cloudflare One, Gateway, Organizations - Organizations is now in public beta for enterprises</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-06-organizations-public-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-06-organizations-public-beta/</guid><description>&lt;p&gt;We&apos;re announcing the public beta of &lt;strong&gt;Organizations&lt;/strong&gt; for enterprise customers, a new top-level Cloudflare container that lets Cloudflare customers manage multiple accounts, members, analytics, and shared policies from one centralized location.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What&apos;s New&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Organizations [BETA]&lt;/strong&gt;: &lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/organizations/&quot;&gt;Organizations&lt;/a&gt; are a new top-level container for centrally managing multiple accounts. Each Organization supports up to 500 accounts and 5000 zones, giving larger teams a single place to administer resources at scale.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Self-serve onboarding&lt;/strong&gt;: Enterprise customers can &lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/organizations/setup/&quot;&gt;create an Organization&lt;/a&gt; in the dashboard and assign accounts where they are already Super Administrators.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Centralized Account Management&lt;/strong&gt;: At launch, every Organization member has the Organization Super Admin role. Organization Super Admins can invite other users and manage any child account under the Organization implicitly.
&lt;strong&gt;Shared policies&lt;/strong&gt;: Share &lt;a href=&quot;https://docs.infinitegaming.org/waf/custom-rules/&quot;&gt;WAF&lt;/a&gt; or &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/tiered-policies/organizations/&quot;&gt;Gateway&lt;/a&gt; policies across multiple accounts within your Organization to simplify centralized policy management.
&lt;strong&gt;Implicit access&lt;/strong&gt;: Members of an Organization automatically receive Super Administrator permissions across child accounts, removing the need for explicit membership on each account. Additional Org-level roles will be available over the course of the year.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Unified analytics&lt;/strong&gt;: View, filter, and download aggregate HTTP analytics across all Organization child accounts from a single dashboard for centralized visibility into traffic patterns and security events.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Terraform provider support&lt;/strong&gt;: Manage Organizations with infrastructure as code from day one. Provision organizations, assign accounts, and configure settings programmatically with the &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/organization&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Terraform provider&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Shared policies&lt;/strong&gt;: Share &lt;a href=&quot;https://docs.infinitegaming.org/waf/custom-rules/&quot;&gt;WAF&lt;/a&gt; or &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/&quot;&gt;Gateway&lt;/a&gt; policies across multiple accounts within your Organization to simplify centralized policy management.&lt;/p&gt;
&lt;aside role=&quot;note&quot; aria-label=&quot;Note&quot; class=&quot;aside-card flex items-start gap-3 rounded-lg px-4 py-3 my-4&quot; style=&quot;--_c: var(--nb-info); --_t: var(--nb-info-muted);&quot; data-astro-cid-znle5jil&gt;&lt;span class=&quot;flex h-[1.375em] shrink-0 items-center&quot; aria-hidden=&quot;true&quot; data-astro-cid-znle5jil&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[1em] w-[1em]&quot; data-astro-cid-znle5jil=&quot;true&quot; data-icon=&quot;ph:info&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24m0 192a88 88 0 1 1 88-88a88.1 88.1 0 0 1-88 88m16-40a8 8 0 0 1-8 8a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 8 8m-32-92a12 12 0 1 1 12 12a12 12 0 0 1-12-12&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div class=&quot;flex min-w-0 flex-1 flex-col gap-0.5&quot; data-astro-cid-znle5jil&gt;&lt;p class=&quot;m-0 text-base leading-snug font-semibold&quot; data-astro-cid-znle5jil&gt;Note&lt;/p&gt;&lt;div class=&quot;aside-card-body text-sm leading-normal&quot; data-astro-cid-znle5jil&gt;&lt;p&gt;Organizations is in Public Beta. You must have an Enterprise account to create an organization, but once created, you can add accounts of any plan type where you are a Super Administrator.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;For more info:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/organizations/&quot;&gt;Get started with Organizations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/organizations/setup/&quot;&gt;Set up your Organization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/organizations/limitations/&quot;&gt;Review limitations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate><product>Cloudflare Fundamentals</product><category>Cloudflare Fundamentals</category><category>Cloudflare One</category><category>Gateway</category><category>Organizations</category></item><item><title>Cloudflare One Client - Cloudflare One Client for macOS (version 2026.3.846.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-02-warp-macos-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-02-warp-macos-ga/</guid><description>&lt;p&gt;A new GA release for the macOS Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains minor fixes and improvements.&lt;/p&gt;
&lt;p&gt;The next stable release for macOS will introduce the new Cloudflare One Client UI, providing a cleaner and more intuitive design as well as easier access to common actions and information.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Empty MDM files are now rejected instead of being incorrectly accepted as a single MDM config.&lt;/li&gt;
&lt;li&gt;Fixed an issue in local proxy mode where the client could become unresponsive due to upstream connection timeouts.&lt;/li&gt;
&lt;li&gt;Fixed an issue where the emergency disconnect status of a prior organization persisted after a switch to a different organization.&lt;/li&gt;
&lt;li&gt;Consumer-only CLI commands are now clearly distinguished from Zero Trust commands.&lt;/li&gt;
&lt;li&gt;Added detailed QUIC connection metrics to diagnostic logs for better troubleshooting.&lt;/li&gt;
&lt;li&gt;Added monitoring for tunnel statistics collection timeouts.&lt;/li&gt;
&lt;li&gt;Switched tunnel congestion control algorithm for local proxy mode to Cubic for improved reliability across platforms.&lt;/li&gt;
&lt;li&gt;Fixed initiating managed network detections checks when no network is available, which caused device profile flapping.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Thu, 02 Apr 2026 16:28:33 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - Cloudflare One Client for Linux (version 2026.3.846.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-02-warp-linux-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-02-warp-linux-ga/</guid><description>&lt;p&gt;A new GA release for the Linux Cloudflare One Client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains minor fixes and improvements.&lt;/p&gt;
&lt;p&gt;The next stable release for Linux will introduce the new Cloudflare One Client UI, providing a cleaner and more intuitive design as well as easier access to common actions and information.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Empty MDM files are now rejected instead of being incorrectly accepted as a single MDM config.&lt;/li&gt;
&lt;li&gt;Fixed an issue in local proxy mode where the client could become unresponsive due to upstream connection timeouts.&lt;/li&gt;
&lt;li&gt;Fixed an issue where the emergency disconnect status of a prior organization persisted after a switch to a different organization.&lt;/li&gt;
&lt;li&gt;Consumer-only CLI commands are now clearly distinguished from Zero Trust commands.&lt;/li&gt;
&lt;li&gt;Added detailed QUIC connection metrics to diagnostic logs for better troubleshooting.&lt;/li&gt;
&lt;li&gt;Added monitoring for tunnel statistics collection timeouts.&lt;/li&gt;
&lt;li&gt;Switched tunnel congestion control algorithm for local proxy mode to Cubic for improved reliability across platforms.&lt;/li&gt;
&lt;li&gt;Fixed initiating managed network detections checks when no network is available, which caused device profile flapping.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Thu, 02 Apr 2026 15:39:10 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Access - Session management for MCP server portals</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-02-mcp-portal-session-management/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-02-mcp-portal-session-management/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/&quot;&gt;MCP server portals&lt;/a&gt; support in-session management of upstream MCP server connections. Users can return to the server selection page at any time to enable or disable servers, reauthenticate, or change which data a server has access to — all without leaving their MCP client.&lt;/p&gt;
&lt;p&gt;To return to the server selection page, ask your AI agent with a prompt like &quot;take me back to the server selection page.&quot; The portal responds with an authorization URL via &lt;a href=&quot;https://modelcontextprotocol.io/specification/2025-03-26/server/elicitation&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;MCP elicitation&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; that you open in your browser:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;txt&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;txt&quot; data-nb-lang=&quot;txt&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-wvjl67&quot;&gt;https://&amp;lt;subdomain&amp;gt;.&amp;lt;domain&amp;gt;/authorize?elicitationId=&amp;lt;ELICITATION_ID&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;From the server selection page you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enable or disable servers&lt;/strong&gt; — Toggle individual upstream MCP servers on or off. Disabling a server removes its tools from the active session, which reduces context window usage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Log out and reauthenticate&lt;/strong&gt; — Log out of a server and log back in to change which data the server has access to, or to reauthenticate with different permissions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Users can also enable or disable a server inline by asking their AI agent directly, for example &quot;enable the wiki server&quot; or &quot;disable my Jira server.&quot;&lt;/p&gt;
&lt;p&gt;The portal also automatically prompts connected users to authorize new servers when an admin adds them to the portal. This requires the use of &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/http-apps/managed-oauth/#enable-managed-oauth-on-an-mcp-server-portal&quot;&gt;managed OAuth&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/#manage-portal-sessions&quot;&gt;Manage portal sessions&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Cloudflare One, Access, Gateway - Logs UI refresh</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-01-logs-ui-refresh/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-01-logs-ui-refresh/</guid><description>&lt;p&gt;Access authentication logs and Gateway activity logs (DNS, Network, and HTTP) now feature a refreshed user interface that gives you more flexibility when viewing and analyzing your logs.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2984,height=842,format=webp/_astro/cf1-new-logs-ui.DxF4x0l-.png&quot; alt=&quot;Screenshot of the new logs UI showing DNS query logs with customizable columns and filtering options&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2984&quot; height=&quot;842&quot;&gt;
&lt;p&gt;The updated UI includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Filter by field&lt;/strong&gt; - Select any field value to add it as a filter and narrow down your results.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Customizable fields&lt;/strong&gt; - Choose which fields to display in the log table. Querying for fewer fields improves log loading performance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;View details&lt;/strong&gt; - Select a timestamp to view the full details of a log entry.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Switch to classic view&lt;/strong&gt; - Return to the previous log viewer interface if needed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/logs/dashboard-logs/access-authentication-logs/&quot;&gt;Access authentication logs&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/logs/dashboard-logs/gateway-logs/&quot;&gt;Gateway activity logs&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category><category>Access</category><category>Gateway</category></item><item><title>Workers - Deploy Hooks are now available for Workers Builds</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-01-deploy-hooks/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-01-deploy-hooks/</guid><description>
&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/&quot;&gt;Workers Builds&lt;/a&gt; now supports Deploy Hooks — trigger builds from your headless CMS, a Cron Trigger, a Slack bot, or any system that can send an HTTP request.&lt;/p&gt;
&lt;p&gt;Each Deploy Hook is a unique URL tied to a specific branch. Send it a &lt;code&gt;POST&lt;/code&gt; and your Worker builds and deploys.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; -X&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; POST&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;https://api.cloudflare.com/client/v4/workers/builds/deploy_hooks/&amp;lt;DEPLOY_HOOK_ID&amp;gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;To create one, go to &lt;strong&gt;Workers &amp;amp; Pages&lt;/strong&gt; &amp;gt; your Worker &amp;gt; &lt;strong&gt;Settings&lt;/strong&gt; &amp;gt; &lt;strong&gt;Builds&lt;/strong&gt; &amp;gt; &lt;strong&gt;Deploy Hooks&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Since a Deploy Hook is a URL, you can also call it from another Worker. For example, a Worker with a &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/cron-triggers/&quot;&gt;Cron Trigger&lt;/a&gt; can rebuild your project on a schedule:&lt;/p&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; scheduled&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;event&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		ctx.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;waitUntil&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;DEPLOY_HOOK_URL&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, { method: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;POST&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; }));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; scheduled&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;event&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; ScheduledEvent&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; ExecutionContext&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Promise&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    ctx.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;waitUntil&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;DEPLOY_HOOK_URL&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, { method: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;POST&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; }));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;} &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;satisfies&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; ExportedHandler&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;&lt;/div&gt;
&lt;p&gt;You can also use Deploy Hooks to &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/deploy-hooks/#cms-integration&quot;&gt;rebuild when your CMS publishes new content&lt;/a&gt; or &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/deploy-hooks/#deploy-from-a-slack-slash-command&quot;&gt;deploy from a Slack slash command&lt;/a&gt;.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;built-in-optimizations&quot;&gt;Built-in optimizations&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#built-in-optimizations&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Automatic deduplication&lt;/strong&gt;: If a Deploy Hook fires multiple times before the first build starts running, redundant builds are automatically skipped. This keeps your build queue clean when webhooks retry or CMS events arrive in bursts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Last triggered&lt;/strong&gt;: The dashboard shows when each hook was last triggered.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build source&lt;/strong&gt;: Your Worker&apos;s build history shows which Deploy Hook started each build by name.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Deploy Hooks are rate limited to 10 builds per minute per Worker and 100 builds per minute per account. For all limits, see &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/limits-and-pricing/&quot;&gt;Limits &amp;amp; pricing&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To get started, read the &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/deploy-hooks/&quot;&gt;Deploy Hooks documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - New L4 transport telemetry fields in Workers</title><link>https://docs.infinitegaming.org/changelog/post/2026-04-01-l4-transport-telemetry-fields/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-04-01-l4-transport-telemetry-fields/</guid><description>&lt;p&gt;Three new properties are now available on &lt;code&gt;request.cf&lt;/code&gt; in Workers that expose Layer 4 transport telemetry from the client connection. These properties let your Worker make decisions based on real-time connection quality signals — such as round-trip time and data delivery rate — without requiring any client-side changes.&lt;/p&gt;
&lt;p&gt;Previously, this telemetry was only available via the &lt;code&gt;Server-Timing: cfL4&lt;/code&gt; response header. These new properties surface the same data directly in the Workers runtime, so you can use it for routing, logging, or response customization.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;new-properties&quot;&gt;New properties&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#new-properties&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;clientTcpRtt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;number | undefined&lt;/td&gt;
&lt;td&gt;The smoothed TCP round-trip time (RTT) between Cloudflare and the client in milliseconds. Only present for TCP connections (HTTP/1, HTTP/2). For example, &lt;code&gt;22&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;clientQuicRtt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;number | undefined&lt;/td&gt;
&lt;td&gt;The smoothed QUIC round-trip time (RTT) between Cloudflare and the client in milliseconds. Only present for QUIC connections (HTTP/3). For example, &lt;code&gt;42&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;edgeL4&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Object | undefined&lt;/td&gt;
&lt;td&gt;Layer 4 transport statistics. Contains &lt;code&gt;deliveryRate&lt;/code&gt; (number) — the most recent data delivery rate estimate for the connection, in bytes per second. For example, &lt;code&gt;123456&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;example-log-connection-quality-metrics&quot;&gt;Example: Log connection quality metrics&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#example-log-connection-quality-metrics&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; cf&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; request.cf;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; rtt&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; cf.clientTcpRtt &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;??&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; cf.clientQuicRtt &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;??&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; 0&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; deliveryRate&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; cf.edgeL4?.deliveryRate &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;??&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; 0&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; transport&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; cf.clientTcpRtt &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;TCP&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; :&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;QUIC&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    console.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;`Transport: ${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;transport&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;}, RTT: ${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;rtt&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;}ms, Delivery rate: ${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;deliveryRate&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;} B/s`&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; headers&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Headers&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(request.headers);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    headers.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;X-Client-RTT&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(rtt));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    headers.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;X-Delivery-Rate&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(deliveryRate));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(request, { headers }));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/request/&quot;&gt;Workers Runtime APIs: Request&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - New RFC 9440 mTLS certificate fields in Workers</title><link>https://docs.infinitegaming.org/changelog/post/2026-03-27-rfc9440-mtls-fields/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-03-27-rfc9440-mtls-fields/</guid><description>&lt;p&gt;Four new fields are now available on &lt;code&gt;request.cf.tlsClientAuth&lt;/code&gt; in Workers for requests that include a mutual TLS (mTLS) client certificate. These fields encode the client certificate and its intermediate chain in &lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc9440&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;RFC 9440&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; format — the same standard format used by the &lt;code&gt;Client-Cert&lt;/code&gt; and &lt;code&gt;Client-Cert-Chain&lt;/code&gt; HTTP headers — so your Worker can forward them directly to your origin without any custom parsing or encoding logic.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;new-fields&quot;&gt;New fields&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#new-fields&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;certRFC9440&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;String&lt;/td&gt;
&lt;td&gt;The client leaf certificate in RFC 9440 format (&lt;code&gt;:base64-DER:&lt;/code&gt;). Empty if no client certificate was presented.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;certRFC9440TooLarge&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Boolean&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt; if the leaf certificate exceeded 10 KB and was omitted from &lt;code&gt;certRFC9440&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;certChainRFC9440&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;String&lt;/td&gt;
&lt;td&gt;The intermediate certificate chain in RFC 9440 format as a comma-separated list. Empty if no intermediates were sent or if the chain exceeded 16 KB.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;certChainRFC9440TooLarge&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Boolean&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt; if the intermediate chain exceeded 16 KB and was omitted from &lt;code&gt;certChainRFC9440&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;example-forwarding-client-certificate-headers-to-your-origin&quot;&gt;Example: forwarding client certificate headers to your origin&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#example-forwarding-client-certificate-headers-to-your-origin&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; tls&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; request.cf.tlsClientAuth;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;    // Only forward if cert was verified and chain is complete&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    if&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;tls &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; !&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;tls.certVerified &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; tls.certRevoked &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; tls.certChainRFC9440TooLarge) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;      return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Unauthorized&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, { status: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;401&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; headers&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Headers&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(request.headers);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    headers.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Client-Cert&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, tls.certRFC9440);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    headers.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Client-Cert-Chain&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, tls.certChainRFC9440);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(request, { headers }));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/ssl/client-certificates/client-certificate-variables/#workers-variables&quot;&gt;Client certificate variables&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/service-credentials/mutual-tls-authentication/&quot;&gt;Mutual TLS authentication&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Access - Code Mode for MCP server portals</title><link>https://docs.infinitegaming.org/changelog/post/2026-03-26-mcp-portal-code-mode/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-03-26-mcp-portal-code-mode/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/&quot;&gt;MCP server portals&lt;/a&gt; support &lt;a href=&quot;https://docs.infinitegaming.org/agents/model-context-protocol/codemode/&quot;&gt;Code Mode MCP server patterns&lt;/a&gt;, a technique that reduces context window usage by replacing individual tool definitions with a single code execution tool. Code Mode is turned on by default on all portals.&lt;/p&gt;
&lt;p&gt;To turn it off, edit the portal in &lt;strong&gt;Access controls&lt;/strong&gt; &amp;gt; &lt;strong&gt;AI controls&lt;/strong&gt; and turn off &lt;strong&gt;Code Mode&lt;/strong&gt; under &lt;strong&gt;Basic information&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;When Code Mode is active, the portal exposes a single &lt;code&gt;code&lt;/code&gt; tool instead of listing every tool from every upstream MCP server. The connected AI agent writes JavaScript that calls typed &lt;code&gt;codemode.*&lt;/code&gt; methods for each upstream tool. The generated code runs in an isolated &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/bindings/worker-loader/&quot;&gt;Dynamic Worker&lt;/a&gt; environment, keeping authentication credentials and environment variables out of the model context.&lt;/p&gt;
&lt;p&gt;To use Code Mode, append &lt;code&gt;?codemode=search_and_execute&lt;/code&gt; to your portal URL when connecting from an MCP client:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;txt&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;txt&quot; data-nb-lang=&quot;txt&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-wvjl67&quot;&gt;https://&amp;lt;subdomain&amp;gt;.&amp;lt;domain&amp;gt;/mcp?codemode=search_and_execute&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/#code-mode&quot;&gt;Code Mode&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Access - Context optimization for MCP server portals</title><link>https://docs.infinitegaming.org/changelog/post/2026-03-26-mcp-portal-context-optimization/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-03-26-mcp-portal-context-optimization/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/&quot;&gt;MCP server portals&lt;/a&gt; support two context optimization options that reduce how many tokens tool definitions consume in the model&apos;s context window. Both options are activated by appending the &lt;code&gt;optimize_context&lt;/code&gt; query parameter to the portal URL.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;minimize_tools&quot;&gt;&lt;code&gt;minimize_tools&lt;/code&gt;&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#minimize_tools&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Strips tool descriptions and input schemas from all upstream tools, leaving only their names. The portal exposes a special &lt;code&gt;query&lt;/code&gt; tool that agents use to retrieve full definitions on demand. This provides up to 5x savings in token usage.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;txt&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;txt&quot; data-nb-lang=&quot;txt&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-wvjl67&quot;&gt;https://&amp;lt;subdomain&amp;gt;.&amp;lt;domain&amp;gt;/mcp?optimize_context=minimize_tools&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;search_and_execute&quot;&gt;&lt;code&gt;search_and_execute&lt;/code&gt;&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#search_and_execute&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Hides all upstream tools and exposes only two tools: &lt;code&gt;query&lt;/code&gt; and &lt;code&gt;execute&lt;/code&gt;. The &lt;code&gt;query&lt;/code&gt; tool searches and retrieves tool definitions. The &lt;code&gt;execute&lt;/code&gt; tool runs the upstream tools in an isolated &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/bindings/worker-loader/&quot;&gt;Dynamic Worker&lt;/a&gt; environment. This reduces the initial token cost to a small constant, regardless of how many tools are available through the portal.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;txt&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;txt&quot; data-nb-lang=&quot;txt&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-wvjl67&quot;&gt;https://&amp;lt;subdomain&amp;gt;.&amp;lt;domain&amp;gt;/mcp?optimize_context=search_and_execute&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/#optimize-context&quot;&gt;Optimize context&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Data Loss Prevention - Streaming ZIP file scanning removes per-file size limits</title><link>https://docs.infinitegaming.org/changelog/post/2026-03-26-streaming-zip-handler/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-03-26-streaming-zip-handler/</guid><description>&lt;p&gt;DLP now processes ZIP files using a streaming handler that scans archive contents element-by-element as data arrives. This removes previous file size limitations and improves memory efficiency when scanning large archives.&lt;/p&gt;
&lt;p&gt;Microsoft Office documents (DOCX, XLSX, PPTX) also benefit from this improvement, as they use ZIP as a container format.&lt;/p&gt;
&lt;p&gt;This improvement is automatic — no configuration changes are required.&lt;/p&gt;</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate><product>Data Loss Prevention</product><category>Data Loss Prevention</category></item><item><title>Data Loss Prevention - Detect and sanitize HAR files</title><link>https://docs.infinitegaming.org/changelog/post/2026-03-25-har-file-detection-and-sanitization/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-03-25-har-file-detection-and-sanitization/</guid><description>&lt;p&gt;HTTP Archive (HAR) files are used by engineering and support teams to capture and share web traffic logs for troubleshooting. However, these files routinely contain highly sensitive data — including session cookies, authorization headers, and other credentials — that can pose a significant risk if uploaded to third-party services without being reviewed or cleaned first.&lt;/p&gt;
&lt;p&gt;Gateway now includes a predefined DLP profile called &lt;strong&gt;Unsanitized HAR&lt;/strong&gt; that detects HAR files in HTTP traffic. You can use this profile in a Gateway HTTP policy to either block HAR file uploads entirely or redirect users to a sanitization tool before allowing the upload to proceed.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;how-to-configure-a-har-file-policy&quot;&gt;How to configure a HAR file policy&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#how-to-configure-a-har-file-policy&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;In the &lt;a href=&quot;https://dash.cloudflare.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, go to  &lt;strong&gt;Zero Trust&lt;/strong&gt; &amp;gt;  &lt;strong&gt;Traffic policies&lt;/strong&gt; &amp;gt; &lt;strong&gt;Firewall Policies&lt;/strong&gt; &amp;gt; &lt;strong&gt;HTTP&lt;/strong&gt; and create a new HTTP policy using the &lt;strong&gt;DLP Profile&lt;/strong&gt; selector:&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Selector&lt;/th&gt;
&lt;th&gt;Operator&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DLP Profile&lt;/td&gt;
&lt;td&gt;in&lt;/td&gt;
&lt;td&gt;&lt;em&gt;Unsanitized HAR&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Then choose one of the following actions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Block&lt;/strong&gt;: Prevents the upload of any HAR file that has not been sanitized by Cloudflare&apos;s sanitizer. Use this for strict environments where HAR file sharing must be disallowed entirely.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Block&lt;/strong&gt; with &lt;strong&gt;Gateway Redirect&lt;/strong&gt;: Intercepts the upload and redirects the user to &lt;code&gt;https://har-sanitizer.pages.dev/&lt;/code&gt;, where they can sanitize the file. Once sanitized, the user can re-upload the clean file and proceed with their workflow.&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;sanitized-har-recognition&quot;&gt;Sanitized HAR recognition&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#sanitized-har-recognition&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;HAR files processed by the Cloudflare HAR sanitizer receive a tamper-evident sanitized marker. DLP recognizes this marker and will not re-trigger the policy on a file that has already been sanitized and has not been modified since. If a previously sanitized file is edited, it will be treated as unsanitized and flagged again.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;visibility-in-gateway-logs&quot;&gt;Visibility in Gateway logs&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#visibility-in-gateway-logs&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Gateway logs will reflect whether a detected HAR file was classified as &lt;strong&gt;Unsanitized&lt;/strong&gt; or &lt;strong&gt;Sanitized&lt;/strong&gt;, giving your security team full visibility into HAR file activity across your organization.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/dlp-profiles/predefined-profiles/&quot;&gt;predefined DLP profiles&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate><product>Data Loss Prevention</product><category>Data Loss Prevention</category></item><item><title>Workers - Declare required secrets in your Wrangler configuration</title><link>https://docs.infinitegaming.org/changelog/post/2026-03-24-secrets-config-property/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-03-24-secrets-config-property/</guid><description>
&lt;p&gt;The new &lt;code&gt;secrets&lt;/code&gt; configuration property lets you declare the secret names your Worker requires in your Wrangler configuration file. Required secrets are validated during local development and deploy, and used as the source of truth for type generation.&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;secrets&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;required&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;API_KEY&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;DB_PASSWORD&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;secrets&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;required = [ &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;API_KEY&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;DB_PASSWORD&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; ]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;local-development&quot;&gt;Local development&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#local-development&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;When &lt;code&gt;secrets&lt;/code&gt; is defined, &lt;code&gt;wrangler dev&lt;/code&gt; and &lt;code&gt;vite dev&lt;/code&gt; load only the keys listed in &lt;code&gt;secrets.required&lt;/code&gt; from &lt;code&gt;.dev.vars&lt;/code&gt; or &lt;code&gt;.env&lt;/code&gt;/&lt;code&gt;process.env&lt;/code&gt;. Additional keys in those files are excluded. If any required secrets are missing, a warning is logged listing the missing names.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;type-generation&quot;&gt;Type generation&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#type-generation&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;wrangler types&lt;/code&gt; generates typed bindings from &lt;code&gt;secrets.required&lt;/code&gt; instead of inferring names from &lt;code&gt;.dev.vars&lt;/code&gt; or &lt;code&gt;.env&lt;/code&gt;. This lets you run type generation in CI or other environments where those files are not present. Per-environment secrets are supported — the aggregated &lt;code&gt;Env&lt;/code&gt; type marks secrets that only appear in some environments as optional.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;deploy&quot;&gt;Deploy&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#deploy&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;wrangler deploy&lt;/code&gt; and &lt;code&gt;wrangler versions upload&lt;/code&gt; validate that all secrets in &lt;code&gt;secrets.required&lt;/code&gt; are configured on the Worker before the operation succeeds. If any required secrets are missing, the command fails with an error listing which secrets need to be set.&lt;/p&gt;
&lt;p&gt;For more information, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/configuration/#secrets-configuration-property&quot;&gt;&lt;code&gt;secrets&lt;/code&gt; configuration property&lt;/a&gt; reference.&lt;/p&gt;</description><pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Gateway - OIDC Claims filtering now available in Gateway Firewall, Resolver, and Egress policies</title><link>https://docs.infinitegaming.org/changelog/post/2026-03-24-oidc-claims-filtering-gateway-policies/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-03-24-oidc-claims-filtering-gateway-policies/</guid><description>&lt;p&gt;Cloudflare Gateway now supports &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/identity-selectors/#oidc-claims&quot;&gt;OIDC Claims&lt;/a&gt; as a selector in Firewall, Resolver, and Egress policies. Administrators can use custom OIDC claims from their identity provider to build fine-grained, identity-based traffic policies across all Gateway policy types.&lt;/p&gt;
&lt;p&gt;With this update, you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Filter traffic in &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/dns-policies/&quot;&gt;DNS&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/&quot;&gt;HTTP&lt;/a&gt;, and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/network-policies/&quot;&gt;Network&lt;/a&gt; firewall policies based on OIDC claim values.&lt;/li&gt;
&lt;li&gt;Apply custom &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/resolver-policies/&quot;&gt;resolver policies&lt;/a&gt; to route DNS queries to specific resolvers depending on a user&apos;s OIDC claims.&lt;/li&gt;
&lt;li&gt;Control &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/egress-policies/&quot;&gt;egress policies&lt;/a&gt; to assign dedicated egress IPs based on OIDC claim attributes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, you can create a policy that routes traffic differently for users with &lt;code&gt;department=engineering&lt;/code&gt; in their OIDC claims, or restrict access to certain destinations based on a user&apos;s role claim.&lt;/p&gt;
&lt;p&gt;To get started, configure &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/identity-providers/generic-oidc/#custom-oidc-claims&quot;&gt;custom OIDC claims&lt;/a&gt; on your identity provider and use the &lt;strong&gt;OIDC Claims&lt;/strong&gt; selector in the Gateway policy builder.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/identity-selectors/&quot;&gt;Identity-based policies&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Workers - Dynamic Workers, now in open beta</title><link>https://docs.infinitegaming.org/changelog/post/2026-03-24-dynamic-workers-open-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-03-24-dynamic-workers-open-beta/</guid><description>
&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/dynamic-workers/&quot;&gt;Dynamic Workers&lt;/a&gt; are now in &lt;a href=&quot;https://blog.cloudflare.com/dynamic-workers/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;open beta&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; for all paid Workers users. You can now have a Worker spin up other Workers, called Dynamic Workers, at runtime to execute code on-demand in a secure, sandboxed environment. Dynamic Workers start in milliseconds, making them well suited for fast, secure code execution at scale.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;use-dynamic-workers-for&quot;&gt;Use Dynamic Workers for&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#use-dynamic-workers-for&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.infinitegaming.org/agents/tools/codemode/&quot;&gt;Code Mode&lt;/a&gt;&lt;/strong&gt;: LLMs are trained to write code. Run tool-calling logic written in code instead of stepping through many tool calls, which can save up to 80% in inference tokens and cost.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI agents executing code&lt;/strong&gt;: Run code for tasks like data analysis, file transformation, API calls, and chained actions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Running AI-generated code&lt;/strong&gt;: Run generated code for prototypes, projects, and automations in a secure, isolated sandboxed environment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fast development and previews&lt;/strong&gt;: Load prototypes, previews, and playgrounds in milliseconds.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Custom automations&lt;/strong&gt;: Create custom tools on the fly that execute a task, call an integration, or automate a workflow.&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;executing-dynamic-workers&quot;&gt;Executing Dynamic Workers&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#executing-dynamic-workers&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Dynamic Workers support two loading modes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;load(code)&lt;/code&gt; — for one-time code execution (equivalent to calling &lt;code&gt;get()&lt;/code&gt; with a null ID).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;get(id, callback)&lt;/code&gt; — caches a Dynamic Worker by ID so it can stay warm across requests. Use this when the same code will receive subsequent requests.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; worker&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;LOADER&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;load&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			compatibilityDate: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;2026-01-01&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			mainModule: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;src/index.js&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			modules: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;				&quot;src/index.js&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;`&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;					export default {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;						fetch() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;							return new Response(&quot;Hello from a dynamic Worker&quot;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;						},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;					};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;				`&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;			// Block all outbound network access from the Dynamic Worker.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			globalOutbound: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; worker.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;getEntrypoint&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(request);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Promise&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; worker&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;LOADER&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;load&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			compatibilityDate: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;2026-01-01&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			mainModule: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;src/index.js&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			modules: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;				&quot;src/index.js&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;`&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;					export default {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;						fetch() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;							return new Response(&quot;Hello from a dynamic Worker&quot;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;						},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;					};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;				`&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;			// Block all outbound network access from the Dynamic Worker.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			globalOutbound: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; worker.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;getEntrypoint&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(request);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;&lt;/div&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;helper-libraries-for-dynamic-workers&quot;&gt;Helper libraries for Dynamic Workers&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#helper-libraries-for-dynamic-workers&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Here are 3 new libraries to help you build with Dynamic Workers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.npmjs.com/package/@cloudflare/codemode&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;@cloudflare/codemode&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt;: Replace individual tool calls with a single &lt;code&gt;code()&lt;/code&gt; tool, so LLMs write and execute TypeScript that orchestrates multiple API calls in one pass.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.npmjs.com/package/@cloudflare/worker-bundler&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;@cloudflare/worker-bundler&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt;: Resolve npm dependencies and bundle source files into ready-to-load modules for Dynamic Workers, all at runtime.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.npmjs.com/package/@cloudflare/shell&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;@cloudflare/shell&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt;: Give your agent a virtual filesystem inside a Dynamic Worker with persistent storage backed by SQLite and R2.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;try-it-out&quot;&gt;Try it out&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#try-it-out&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Dynamic Workers Starter&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://deploy.workers.cloudflare.com/?url=https://github.com/cloudflare/agents/tree/main/examples/dynamic-workers&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;img src=&quot;https://deploy.workers.cloudflare.com/button&quot; alt=&quot;Deploy to Workers&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Use this &lt;a href=&quot;https://github.com/cloudflare/agents/tree/main/examples/dynamic-workers&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;starter&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; to deploy a Worker that can load and execute Dynamic Workers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dynamic Workers Playground&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://deploy.workers.cloudflare.com/?url=https://github.com/cloudflare/agents/tree/main/examples/dynamic-workers-playground&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;img src=&quot;https://deploy.workers.cloudflare.com/button&quot; alt=&quot;Deploy to Workers&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Deploy the &lt;a href=&quot;https://github.com/cloudflare/agents/tree/main/examples/dynamic-workers-playground&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Dynamic Workers Playground&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; to write or import code, bundle it at runtime with &lt;code&gt;@cloudflare/worker-bundler&lt;/code&gt;, execute it through a Dynamic Worker, and see real-time responses and execution logs.&lt;/p&gt;
&lt;p&gt;For the full API reference and configuration options, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/dynamic-workers/&quot;&gt;Dynamic Workers documentation&lt;/a&gt;.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;pricing&quot;&gt;Pricing&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#pricing&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Dynamic Workers &lt;a href=&quot;https://docs.infinitegaming.org/dynamic-workers/pricing/&quot;&gt;pricing&lt;/a&gt; is based on three dimensions: Dynamic Workers created daily, requests, and CPU time.&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Included&lt;/th&gt;
&lt;th&gt;Additional usage&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dynamic Workers created daily&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1,000 unique Dynamic Workers per month&lt;/td&gt;
&lt;td&gt;+$0.002 per Dynamic Worker per day&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Requests&lt;/strong&gt; ¹&lt;/td&gt;
&lt;td&gt;10 million per month&lt;/td&gt;
&lt;td&gt;+$0.30 per million requests&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CPU time&lt;/strong&gt; ¹&lt;/td&gt;
&lt;td&gt;30 million CPU milliseconds per month&lt;/td&gt;
&lt;td&gt;+$0.02 per million CPU milliseconds&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;¹ Uses &lt;a href=&quot;https://docs.infinitegaming.org/workers/platform/pricing/#workers&quot;&gt;Workers Standard rates&lt;/a&gt; and will appear as part of your existing Workers bill, not as separate Dynamic Workers charges.&lt;/p&gt;
&lt;p&gt;Note: Dynamic Workers requests and CPU time are already billed as part of your Workers plan and will count toward your Workers requests and CPU usage. The Dynamic Workers created daily charge is not yet active — you will not be billed for the number of Dynamic Workers created at this time. Pricing information is shared in advance so you can estimate future costs.&lt;/p&gt;</description><pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Access - Managed OAuth for Cloudflare Access</title><link>https://docs.infinitegaming.org/changelog/post/2026-03-20-managed-oauth/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-03-20-managed-oauth/</guid><description>&lt;p&gt;Cloudflare Access supports managed OAuth, which allows non-browser clients — such as CLIs, AI agents, SDKs, and scripts — to authenticate with Access-protected applications using a standard OAuth 2.0 authorization code flow.&lt;/p&gt;
&lt;p&gt;Previously, non-browser clients that attempted to access a protected application received a &lt;code&gt;302&lt;/code&gt; redirect to a login page they could not complete. The established workaround was &lt;code&gt;cloudflared access curl&lt;/code&gt;, which required installing additional tooling.&lt;/p&gt;
&lt;p&gt;With managed OAuth, clients instead receive a &lt;code&gt;401&lt;/code&gt; response with a &lt;code&gt;WWW-Authenticate&lt;/code&gt; header that points to Access&apos;s OAuth discovery endpoints (&lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc8414&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;RFC 8414&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and &lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc9728&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;RFC 9728&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;). The client opens the end user&apos;s browser to the Access login page. The end user authenticates with their identity provider, and the client receives an OAuth access token for subsequent requests.&lt;/p&gt;
&lt;p&gt;Access enforces the same policies as a browser login; the OAuth layer is a new transport mechanism, not a separate authentication path.&lt;/p&gt;
&lt;p&gt;Managed OAuth can be enabled on any self-hosted Access application or &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/&quot;&gt;MCP server portal&lt;/a&gt;. It is opt-in for existing applications to avoid interfering with those that run their own OAuth servers and rely on their own &lt;code&gt;WWW-Authenticate&lt;/code&gt; headers.&lt;/p&gt;
&lt;aside role=&quot;note&quot; aria-label=&quot;Note&quot; class=&quot;aside-card flex items-start gap-3 rounded-lg px-4 py-3 my-4&quot; style=&quot;--_c: var(--nb-info); --_t: var(--nb-info-muted);&quot; data-astro-cid-znle5jil&gt;&lt;span class=&quot;flex h-[1.375em] shrink-0 items-center&quot; aria-hidden=&quot;true&quot; data-astro-cid-znle5jil&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[1em] w-[1em]&quot; data-astro-cid-znle5jil=&quot;true&quot; data-icon=&quot;ph:info&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24m0 192a88 88 0 1 1 88-88a88.1 88.1 0 0 1-88 88m16-40a8 8 0 0 1-8 8a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 8 8m-32-92a12 12 0 1 1 12 12a12 12 0 0 1-12-12&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div class=&quot;flex min-w-0 flex-1 flex-col gap-0.5&quot; data-astro-cid-znle5jil&gt;&lt;p class=&quot;m-0 text-base leading-snug font-semibold&quot; data-astro-cid-znle5jil&gt;Note&lt;/p&gt;&lt;div class=&quot;aside-card-body text-sm leading-normal&quot; data-astro-cid-znle5jil&gt;&lt;p&gt;For MCP server portals, managed OAuth is enabled by default on new portals. It remains opt-in for self-hosted applications.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;To enable managed OAuth, go to &lt;strong&gt;Zero Trust&lt;/strong&gt; &amp;gt; &lt;strong&gt;Access controls&lt;/strong&gt; &amp;gt; &lt;strong&gt;Applications&lt;/strong&gt;, edit the application, and turn on &lt;strong&gt;Managed OAuth&lt;/strong&gt; under &lt;strong&gt;Advanced settings&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;You can also enable it via the API by setting &lt;code&gt;oauth_configuration.enabled&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt; on the &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/access/subresources/applications/methods/update/&quot;&gt;Access applications endpoint&lt;/a&gt;.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2914,height=1042,format=webp/_astro/managed-oauth.BirLnBpy.png&quot; alt=&quot;Managed OAuth settings in the Cloudflare dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2914&quot; height=&quot;1042&quot;&gt;
&lt;p&gt;For setup instructions, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/http-apps/managed-oauth/&quot;&gt;Enable managed OAuth&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Access - Route MCP server portal traffic through Cloudflare Gateway</title><link>https://docs.infinitegaming.org/changelog/post/2026-03-20-mcp-portal-gateway-routing/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-03-20-mcp-portal-gateway-routing/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/&quot;&gt;MCP server portals&lt;/a&gt; can now route traffic through &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/&quot;&gt;Cloudflare Gateway&lt;/a&gt; for richer HTTP request logging and data loss prevention (DLP) scanning.&lt;/p&gt;
&lt;p&gt;When Gateway routing is turned on, portal traffic appears in your &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/logs/dashboard-logs/gateway-logs/&quot;&gt;Gateway HTTP logs&lt;/a&gt;. You can create &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/&quot;&gt;Gateway HTTP policies&lt;/a&gt; with &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/dlp-profiles/&quot;&gt;DLP profiles&lt;/a&gt; to detect and block sensitive data sent to upstream MCP servers.&lt;/p&gt;
&lt;aside role=&quot;note&quot; aria-label=&quot;Note&quot; class=&quot;aside-card flex items-start gap-3 rounded-lg px-4 py-3 my-4&quot; style=&quot;--_c: var(--nb-info); --_t: var(--nb-info-muted);&quot; data-astro-cid-znle5jil&gt;&lt;span class=&quot;flex h-[1.375em] shrink-0 items-center&quot; aria-hidden=&quot;true&quot; data-astro-cid-znle5jil&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[1em] w-[1em]&quot; data-astro-cid-znle5jil=&quot;true&quot; data-icon=&quot;ph:info&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24m0 192a88 88 0 1 1 88-88a88.1 88.1 0 0 1-88 88m16-40a8 8 0 0 1-8 8a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 8 8m-32-92a12 12 0 1 1 12 12a12 12 0 0 1-12-12&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div class=&quot;flex min-w-0 flex-1 flex-col gap-0.5&quot; data-astro-cid-znle5jil&gt;&lt;p class=&quot;m-0 text-base leading-snug font-semibold&quot; data-astro-cid-znle5jil&gt;Note&lt;/p&gt;&lt;div class=&quot;aside-card-body text-sm leading-normal&quot; data-astro-cid-znle5jil&gt;&lt;p&gt;DLP &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/dlp-profiles/predefined-profiles/#ai-prompt&quot;&gt;AI prompt profiles&lt;/a&gt; do not apply to MCP server portal traffic.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;To enable Gateway routing, go to &lt;strong&gt;Access controls&lt;/strong&gt; &amp;gt; &lt;strong&gt;AI controls&lt;/strong&gt;, edit the portal, and turn on &lt;strong&gt;Route traffic through Cloudflare Gateway&lt;/strong&gt; under &lt;strong&gt;Basic information&lt;/strong&gt;.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1568,height=158,format=webp/_astro/portal-route-through-gateway.0KMUAXBm.png&quot; alt=&quot;Route MCP server portal traffic through Cloudflare Gateway&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1568&quot; height=&quot;158&quot;&gt;
&lt;p&gt;For more details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/#route-portal-traffic-through-gateway&quot;&gt;Route traffic through Gateway&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Cloudflare Tunnel, Cloudflare Tunnel for SASE - Stream logs from multiple replicas of Cloudflare Tunnel simultaneously</title><link>https://docs.infinitegaming.org/changelog/post/2026-03-20-tunnel-replica-overview-and-multi-log-streaming/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-03-20-tunnel-replica-overview-and-multi-log-streaming/</guid><description>&lt;p&gt;In the Cloudflare One dashboard, the overview page for a specific Cloudflare Tunnel now shows all &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/configure-tunnels/tunnel-availability/&quot;&gt;replicas&lt;/a&gt; of that tunnel and supports streaming logs from multiple replicas at once.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1800,height=1040,format=webp/_astro/tunnel-multiconn.DEOEaLlu.gif&quot; alt=&quot;View replicas and stream logs from multiple connectors&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1040&quot;&gt;
&lt;p&gt;Previously, you could only stream logs from one replica at a time. With this update:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Replicas on the tunnel overview&lt;/strong&gt; — All active replicas for the selected tunnel now appear on that tunnel&apos;s overview page under &lt;strong&gt;Connectors&lt;/strong&gt;. Select any replica to stream its logs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-connector log streaming&lt;/strong&gt; — Stream logs from multiple replicas simultaneously, making it easier to correlate events across your infrastructure during debugging or incident response. To try it out, log in to &lt;a href=&quot;https://one.dash.cloudflare.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare One&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and go to &lt;strong&gt;Networks&lt;/strong&gt; &amp;gt; &lt;strong&gt;Connectors&lt;/strong&gt; &amp;gt; &lt;strong&gt;Cloudflare Tunnels&lt;/strong&gt;. Select &lt;strong&gt;View logs&lt;/strong&gt; next to the tunnel you want to monitor.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/monitor-tunnels/logs/&quot;&gt;Tunnel log streams&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/configure-tunnels/tunnel-availability/deploy-replicas/&quot;&gt;Deploy replicas&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate><product>Cloudflare Tunnel</product><category>Cloudflare Tunnel</category><category>Cloudflare Tunnel for SASE</category></item><item><title>Cloudflare Tunnel, Workers - Manage Cloudflare Tunnels with Wrangler</title><link>https://docs.infinitegaming.org/changelog/post/2026-03-19-wrangler-tunnel-commands/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-03-19-wrangler-tunnel-commands/</guid><description>&lt;p&gt;You can now manage &lt;a href=&quot;https://docs.infinitegaming.org/tunnel/&quot;&gt;Cloudflare Tunnels&lt;/a&gt; directly from &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/&quot;&gt;Wrangler&lt;/a&gt;, the CLI for the Cloudflare Developer Platform. The new &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/tunnel/&quot;&gt;&lt;code&gt;wrangler tunnel&lt;/code&gt;&lt;/a&gt; commands let you create, run, and manage tunnels without leaving your terminal.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1800,height=1094,format=webp/_astro/wrangler-tunnel.DOqrtGGg.gif&quot; alt=&quot;Wrangler tunnel commands demo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1094&quot;&gt;
&lt;p&gt;Available commands:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;wrangler tunnel create&lt;/code&gt; — Create a new remotely managed tunnel.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wrangler tunnel list&lt;/code&gt; — List all tunnels in your account.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wrangler tunnel info&lt;/code&gt; — Display details about a specific tunnel.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wrangler tunnel delete&lt;/code&gt; — Delete a tunnel.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wrangler tunnel run&lt;/code&gt; — Run a tunnel using the cloudflared daemon.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wrangler tunnel quick-start&lt;/code&gt; — Start a free, temporary tunnel without an account using &lt;a href=&quot;https://docs.infinitegaming.org/tunnel/get-started/quick-tunnels/&quot;&gt;Quick Tunnels&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Wrangler handles downloading and managing the &lt;a href=&quot;https://docs.infinitegaming.org/tunnel/downloads/&quot;&gt;cloudflared&lt;/a&gt; binary automatically. On first use, you will be prompted to download &lt;code&gt;cloudflared&lt;/code&gt; to a local cache directory.&lt;/p&gt;
&lt;p&gt;These commands are currently experimental and may change without notice.&lt;/p&gt;
&lt;p&gt;To get started, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/tunnel/&quot;&gt;Wrangler tunnel commands documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 19 Mar 2026 00:00:00 GMT</pubDate><product>Cloudflare Tunnel</product><category>Cloudflare Tunnel</category><category>Workers</category></item><item><title>Stream - Media Transformations binding for Workers</title><link>https://docs.infinitegaming.org/changelog/post/2026-03-18-media-transformations-workers-binding/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-03-18-media-transformations-workers-binding/</guid><description>
&lt;p&gt;You can now use a Workers binding to transform videos with Media Transformations. This allows you to resize, crop, extract frames, and extract audio from videos stored anywhere, even in private locations like R2 buckets.&lt;/p&gt;
&lt;p&gt;The Media Transformations binding is useful when you want to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transform videos stored in private or protected sources&lt;/li&gt;
&lt;li&gt;Optimize videos and store the output directly back to R2 for re-use&lt;/li&gt;
&lt;li&gt;Extract still frames for classification or description with Workers AI&lt;/li&gt;
&lt;li&gt;Extract audio tracks for transcription using Workers AI&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To get started, add the Media binding to your Wrangler configuration:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;$schema&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./node_modules/wrangler/config-schema.json&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;media&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;    &quot;binding&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MEDIA&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;media&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;binding = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MEDIA&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;Then use the binding in your Worker to transform videos:&lt;/p&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; video&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;R2_BUCKET&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;input.mp4&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; result&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;MEDIA&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;input&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(video.body)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({ width: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;480&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, height: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;270&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; })&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;output&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({ mode: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;video&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, duration: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;5s&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; result.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; video&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;R2_BUCKET&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;input.mp4&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; result&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;MEDIA&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;input&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(video.body)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({ width: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;480&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, height: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;270&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; })&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;output&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({ mode: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;video&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, duration: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;5s&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; result.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Output modes include &lt;code&gt;video&lt;/code&gt; for optimized MP4 clips, &lt;code&gt;frame&lt;/code&gt; for still images, &lt;code&gt;spritesheet&lt;/code&gt; for multiple frames, and &lt;code&gt;audio&lt;/code&gt; for M4A extraction.&lt;/p&gt;
&lt;p&gt;For more information, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/stream/transform-videos/bindings/&quot;&gt;Media Transformations binding documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 18 Mar 2026 00:00:00 GMT</pubDate><product>Stream</product><category>Stream</category></item><item><title>Email security - Unlimited result paging in Investigations</title><link>https://docs.infinitegaming.org/changelog/post/2026-03-15-infinite-paging-investigations/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-03-15-infinite-paging-investigations/</guid><description>&lt;p&gt;Investigations now support unlimited result paging in both the dashboard and the API, removing the previous 1,000-record cap. Security teams can page through complete result sets when searching across large mail volumes, giving SOC analysts and automated workflows deeper visibility for forensics and threat hunting.&lt;/p&gt;
&lt;p&gt;In the dashboard, infinite paging is now supported in the Investigations view. The 1,000-record ceiling has been removed, so you can navigate through the full result set directly in the UI. The &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/email_security/subresources/investigate/methods/list&quot;&gt;Investigations API&lt;/a&gt; now returns up to 10,000 records per page (up from 1,000), with no cap on total result volume across pages.&lt;/p&gt;
&lt;p&gt;For high-volume use cases, we recommend:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/logs/logpush/email-security-logs/&quot;&gt;Logpush&lt;/a&gt; to a SIEM&lt;/strong&gt; for full-fidelity datasets and long-term retention.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SOAR playbooks&lt;/strong&gt; against the async bulk action API for large-scale remediation. Bulk actions initiated from the dashboard remain capped at 1,000 messages per action.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Investigations API&lt;/strong&gt; for report exports larger than 1,000 results, which is the dashboard download cap.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This applies to all Email Security packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Advantage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise + PhishGuard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Sun, 15 Mar 2026 16:00:00 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Cloudflare One Client - WARP client for macOS (version 2026.3.566.1)</title><link>https://docs.infinitegaming.org/changelog/post/2026-03-10-warp-macos-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-03-10-warp-macos-beta/</guid><description>&lt;p&gt;A new Beta release for the macOS WARP client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/beta-releases/&quot;&gt;beta releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains minor fixes and introduces a brand new visual style for the client interface. The new Cloudflare One Client interface changes connectivity management from a toggle to a button and brings useful connectivity settings to the home screen. The redesign also introduces a collapsible navigation bar. When expanded, more client information can be accessed including connectivity, settings, and device profile information. If you have any feedback or questions, visit the &lt;a href=&quot;https://community.cloudflare.com/t/introducing-the-new-cloudflare-one-client-interface/901362&quot;&gt;Cloudflare Community forum&lt;/a&gt; and let us know.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Empty MDM files are now rejected instead of being incorrectly accepted as a single MDM config.&lt;/li&gt;
&lt;li&gt;Fixed an issue in proxy mode where the client could become unresponsive due to upstream connection timeouts.&lt;/li&gt;
&lt;li&gt;Fixed emergency disconnect state from a previous organization incorrectly persisting after switching organizations.&lt;/li&gt;
&lt;li&gt;Consumer-only CLI commands are now clearly distinguished from Zero Trust commands.&lt;/li&gt;
&lt;li&gt;Added detailed QUIC connection metrics to diagnostic logs for better troubleshooting.&lt;/li&gt;
&lt;li&gt;Added monitoring for tunnel statistics collection timeouts.&lt;/li&gt;
&lt;li&gt;Switched tunnel congestion control algorithm to Cubic for improved reliability across platforms.&lt;/li&gt;
&lt;li&gt;Fixed initiating managed network detection checks when no network is available, which caused device profile flapping.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The client may become stuck in a &lt;code&gt;Connecting&lt;/code&gt; state. To resolve this issue, reconnect the client by selecting &lt;strong&gt;Disconnect&lt;/strong&gt; and then &lt;strong&gt;Connect&lt;/strong&gt; in the client user interface. Alternatively, change the client&apos;s operation mode.&lt;/li&gt;
&lt;li&gt;The client may display an empty white screen upon the device waking from sleep. To resolve this issue, exit and then open the client to re-launch it.&lt;/li&gt;
&lt;li&gt;Canceling login during a single MDM configuration setup results in an empty page with no way to resume authentication. To work around this issue, exit and relaunch the client.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 10 Mar 2026 17:10:39 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - WARP client for Windows (version 2026.3.566.1)</title><link>https://docs.infinitegaming.org/changelog/post/2026-03-10-warp-windows-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-03-10-warp-windows-beta/</guid><description>&lt;p&gt;A new Beta release for the Windows WARP client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/beta-releases/&quot;&gt;beta releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains minor fixes and introduces a brand new visual style for the client interface. The new Cloudflare One Client interface changes connectivity management from a toggle to a button and brings useful connectivity settings to the home screen. The redesign also introduces a collapsible navigation bar. When expanded, more client information can be accessed including connectivity, settings, and device profile information. If you have any feedback or questions, visit the &lt;a href=&quot;https://community.cloudflare.com/t/introducing-the-new-cloudflare-one-client-interface/901362&quot;&gt;Cloudflare Community forum&lt;/a&gt; and let us know.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Consumer-only CLI commands are now clearly distinguished from Zero Trust commands.&lt;/li&gt;
&lt;li&gt;Added detailed QUIC connection metrics to diagnostic logs for better troubleshooting.&lt;/li&gt;
&lt;li&gt;Added monitoring for tunnel statistics collection timeouts.&lt;/li&gt;
&lt;li&gt;Switched tunnel congestion control algorithm to Cubic for improved reliability across platforms.&lt;/li&gt;
&lt;li&gt;Fixed packet capture failing on tunnel interface when the tunnel interface is renamed by SCCM VPN boundary support.&lt;/li&gt;
&lt;li&gt;Fixed unnecessary registration deletion caused by RDP connections in multi-user mode.&lt;/li&gt;
&lt;li&gt;Fixed increased tunnel interface start-up time due to a race between duplicate address detection (DAD) and disabling NetBT.&lt;/li&gt;
&lt;li&gt;Fixed tunnel failing to connect when the system DNS search list contains unexpected characters.&lt;/li&gt;
&lt;li&gt;Empty MDM files are now rejected instead of being incorrectly accepted as a single MDM config.&lt;/li&gt;
&lt;li&gt;Fixed an issue in proxy mode where the client could become unresponsive due to upstream connection timeouts.&lt;/li&gt;
&lt;li&gt;Fixed emergency disconnect state from a previous organization incorrectly persisting after switching organizations.&lt;/li&gt;
&lt;li&gt;Fixed initiating managed network detection checks when no network is available, which caused device profile flapping.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The client may unexpectedly terminate during captive portal login. To work around this issue, use a web browser to authenticate with the captive portal and then re-launch the client.&lt;/li&gt;
&lt;li&gt;An error indicating that Microsoft Edge can&apos;t read and write to its data directory may be displayed during captive portal login; this error is benign and can be dismissed.&lt;/li&gt;
&lt;li&gt;The client may become stuck in a &lt;code&gt;Connecting&lt;/code&gt; state. To resolve this issue, reconnect the client by selecting &lt;strong&gt;Disconnect&lt;/strong&gt; and then &lt;strong&gt;Connect&lt;/strong&gt; in the client user interface. Alternatively, change the client&apos;s operation mode.&lt;/li&gt;
&lt;li&gt;The client may display an empty white screen upon the device waking from sleep. To resolve this issue, exit and then open the client to re-launch it.&lt;/li&gt;
&lt;li&gt;Canceling login during a single MDM configuration setup results in an empty page with no way to resume authentication. To work around this issue, exit and relaunch the client.&lt;/li&gt;
&lt;li&gt;For Windows 11 24H2 users, Microsoft has confirmed a regression that may lead to performance issues like mouse lag, audio cracking, or other slowdowns. Cloudflare recommends users experiencing these issues upgrade to a minimum &lt;a href=&quot;https://support.microsoft.com/en-us/topic/july-8-2025-kb5062553-os-build-26100-4652-523e69cb-051b-43c6-8376-6a76d6caeefd&quot;&gt;Windows 11 24H2 version KB5062553&lt;/a&gt; or higher for resolution.&lt;/li&gt;
&lt;li&gt;Devices with KB5055523 installed may receive a warning about &lt;code&gt;Win32/ClickFix.ABA&lt;/code&gt; being present in the installer. To resolve this false positive, update Microsoft Security Intelligence to &lt;a href=&quot;https://www.microsoft.com/en-us/wdsi/definitions/antimalware-definition-release-notes?requestVersion=1.429.19.0&quot;&gt;version 1.429.19.0&lt;/a&gt; or later. This warning will be omitted from future release notes. This Microsoft Security Intelligence update was released in May 2025.&lt;/li&gt;
&lt;li&gt;DNS resolution may be broken when the following conditions are all true:
&lt;ul&gt;
&lt;li&gt;The client is in Secure Web Gateway without DNS filtering (tunnel-only) mode.&lt;/li&gt;
&lt;li&gt;A custom DNS server address is configured on the primary network adapter.&lt;/li&gt;
&lt;li&gt;The custom DNS server address on the primary network adapter is changed while the client is connected.
To work around this issue, reconnect the client by selecting &lt;strong&gt;Disconnect&lt;/strong&gt; and then &lt;strong&gt;Connect&lt;/strong&gt; in the client user interface.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 10 Mar 2026 17:10:37 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One, Access - User risk score selector in Access policies</title><link>https://docs.infinitegaming.org/changelog/post/2026-03-04-user-risk-score-access-policies/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-03-04-user-risk-score-access-policies/</guid><description>&lt;p&gt;You can now use &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/users/risk-score/&quot;&gt;user risk scores&lt;/a&gt; in your &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/policies/&quot;&gt;Access policies&lt;/a&gt;. The new &lt;strong&gt;User Risk Score&lt;/strong&gt; selector allows you to create Access policies that respond to user behavior patterns detected by Cloudflare&apos;s risk scoring system, including impossible travel, high DLP policy matches, and more.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/users/risk-score/#use-risk-scores-in-access-policies&quot;&gt;Use risk scores in Access policies&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category><category>Access</category></item><item><title>Gateway - Gateway Authorization Proxy and hosted PAC files (open beta)</title><link>https://docs.infinitegaming.org/changelog/post/2026-03-04-gateway-authorization-proxy-open-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-03-04-gateway-authorization-proxy-open-beta/</guid><description>&lt;p&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/resolvers-and-proxies/proxy-endpoints/#authorization-endpoint&quot;&gt;Gateway Authorization Proxy&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/resolvers-and-proxies/proxy-endpoints/#create-a-hosted-pac-file&quot;&gt;PAC file hosting&lt;/a&gt; are now in open beta for all plan types.&lt;/p&gt;
&lt;p&gt;Previously, &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/resolvers-and-proxies/proxy-endpoints/#source-ip-endpoint&quot;&gt;proxy endpoints&lt;/a&gt; relied on static source IP addresses to authorize traffic, providing no user-level identity in logs or policies. The new authorization proxy replaces IP-based authorization with &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/policies/&quot;&gt;Cloudflare Access&lt;/a&gt; authentication, verifying who a user is before applying Gateway filtering without installing the WARP client.&lt;/p&gt;
&lt;p&gt;This is ideal for environments where you cannot deploy a device client, such as virtual desktops (VDI), mergers and acquisitions, or compliance-restricted endpoints.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;key-capabilities&quot;&gt;Key capabilities&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#key-capabilities&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Identity-aware proxy traffic&lt;/strong&gt; — Users authenticate through your identity provider (Okta, Microsoft Entra ID, Google Workspace, and others) via Cloudflare Access. Logs now show exactly which user accessed which site, and you can write &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/identity-selectors/&quot;&gt;identity-based policies&lt;/a&gt; like &quot;only the Finance team can access this accounting tool.&quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multiple identity providers&lt;/strong&gt; — Display one or multiple login methods simultaneously, giving flexibility for organizations managing users across different identity systems.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare-hosted PAC files&lt;/strong&gt; — Create and host &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/resolvers-and-proxies/proxy-endpoints/#create-a-hosted-pac-file&quot;&gt;PAC files&lt;/a&gt; directly in Cloudflare One with pre-configured templates for Okta and Azure, hosted at &lt;code&gt;https://pac.cloudflare-gateway.com/&amp;lt;account-id&amp;gt;/&amp;lt;slug&amp;gt;&lt;/code&gt; on Cloudflare&apos;s global network.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simplified billing&lt;/strong&gt; — Each user occupies a seat, exactly like they do with the Cloudflare One Client. No new metrics to track.&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;get-started&quot;&gt;Get started&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#get-started&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;In &lt;a href=&quot;https://one.dash.cloudflare.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare One&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, go to &lt;strong&gt;Networks&lt;/strong&gt; &amp;gt; &lt;strong&gt;Resolvers &amp;amp; Proxies&lt;/strong&gt; &amp;gt; &lt;strong&gt;Proxy endpoints&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/resolvers-and-proxies/proxy-endpoints/#authorization-endpoint&quot;&gt;Create an authorization proxy endpoint&lt;/a&gt; and configure Access policies.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/resolvers-and-proxies/proxy-endpoints/#create-a-hosted-pac-file&quot;&gt;Create a hosted PAC file&lt;/a&gt; or write your own.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/resolvers-and-proxies/proxy-endpoints/#3b-configure-browser-to-use-pac-file&quot;&gt;Configure browsers&lt;/a&gt; to use the PAC file URL.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/user-side-certificates/&quot;&gt;Install the Cloudflare certificate&lt;/a&gt; for HTTPS inspection.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For more details, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/resolvers-and-proxies/proxy-endpoints/&quot;&gt;proxy endpoints documentation&lt;/a&gt; and the &lt;a href=&quot;https://blog.cloudflare.com/gateway-authorization-proxy-identity-aware-policies/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;announcement blog post&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Cloudflare One - Copy Cloudflare One resources as JSON or POST requests</title><link>https://docs.infinitegaming.org/changelog/post/2026-03-copy-resources-as-json-or-post-requests/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-03-copy-resources-as-json-or-post-requests/</guid><description>&lt;p&gt;You can now copy Cloudflare One resources as JSON or as a ready-to-use API POST request directly from the dashboard. This makes it simple to transition workflows into API calls, automation scripts, or infrastructure-as-code pipelines.&lt;/p&gt;
&lt;p&gt;To use this feature, click the overflow menu (⋮) on any supported resource and select &lt;strong&gt;Copy as JSON&lt;/strong&gt; or &lt;strong&gt;Copy as POST request&lt;/strong&gt;. The copied output includes only the fields present on your resource, giving you a clean and minimal starting point for your own API calls.&lt;/p&gt;
&lt;p&gt;Initially supported resources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Access applications&lt;/li&gt;
&lt;li&gt;Access policies&lt;/li&gt;
&lt;li&gt;Gateway policies&lt;/li&gt;
&lt;li&gt;Resolver policies&lt;/li&gt;
&lt;li&gt;Service tokens&lt;/li&gt;
&lt;li&gt;Identity providers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We will continue to add support for more resources throughout 2026.&lt;/p&gt;</description><pubDate>Mon, 02 Mar 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category></item><item><title>Access - Clipboard controls for browser-based RDP</title><link>https://docs.infinitegaming.org/changelog/post/2026-03-01-rdp-clipboard-controls/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-03-01-rdp-clipboard-controls/</guid><description>&lt;p&gt;You can now configure clipboard controls for browser-based RDP with Cloudflare Access. Clipboard controls allow administrators to restrict whether users can copy or paste text between their local machine and the remote Windows server.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2000,height=546,format=webp/_astro/rdp-clipboard-controls.B0ZmliDb.png&quot; alt=&quot;Enable users to copy and paste content from their local machine to remote RDP sessions in the Cloudflare One dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2000&quot; height=&quot;546&quot;&gt;
&lt;p&gt;This feature is useful for organizations that support bring-your-own-device (BYOD) policies or third-party contractors using unmanaged devices. By restricting clipboard access, you can prevent sensitive data from being transferred out of the remote session to a user&apos;s personal device.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;configuration-options&quot;&gt;Configuration options&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#configuration-options&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Clipboard controls are configured per policy within your Access application. For each policy, you can independently allow or deny:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Copy from local client to remote RDP session&lt;/strong&gt; — Users can copy/paste text from their local machine into the browser-based RDP session.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copy from remote RDP session to local client&lt;/strong&gt; — Users can copy/paste text from the browser-based RDP session to their local machine.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By default, both directions are denied for new policies. For existing Access applications created before this feature was available, clipboard access remains enabled to preserve backwards compatibility.&lt;/p&gt;
&lt;p&gt;When a user attempts a restricted clipboard action, the clipboard content is replaced with an error message informing them that the action is not allowed.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/use-cases/rdp/rdp-browser/#clipboard-controls&quot;&gt;Clipboard controls for browser-based RDP&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Access - Export MCP server portal logs with Logpush</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-27-mcp-portal-logpush/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-27-mcp-portal-logpush/</guid><description>&lt;aside role=&quot;note&quot; aria-label=&quot;Availability&quot; class=&quot;aside-card flex items-start gap-3 rounded-lg px-4 py-3 my-4&quot; style=&quot;--_c: var(--nb-info); --_t: var(--nb-info-muted);&quot; data-astro-cid-znle5jil&gt;&lt;span class=&quot;flex h-[1.375em] shrink-0 items-center&quot; aria-hidden=&quot;true&quot; data-astro-cid-znle5jil&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[1em] w-[1em]&quot; data-astro-cid-znle5jil=&quot;true&quot; data-icon=&quot;ph:info&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24m0 192a88 88 0 1 1 88-88a88.1 88.1 0 0 1-88 88m16-40a8 8 0 0 1-8 8a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 8 8m-32-92a12 12 0 1 1 12 12a12 12 0 0 1-12-12&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div class=&quot;flex min-w-0 flex-1 flex-col gap-0.5&quot; data-astro-cid-znle5jil&gt;&lt;p class=&quot;m-0 text-base leading-snug font-semibold&quot; data-astro-cid-znle5jil&gt;Availability&lt;/p&gt;&lt;div class=&quot;aside-card-body text-sm leading-normal&quot; data-astro-cid-znle5jil&gt;&lt;p&gt;Only available on Enterprise plans.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/&quot;&gt;MCP server portals&lt;/a&gt; now supports &lt;a href=&quot;https://docs.infinitegaming.org/logs/logpush/&quot;&gt;Logpush&lt;/a&gt; integration. You can automatically export MCP server portal activity logs to third-party storage destinations or security information and event management (SIEM) tools for analysis and auditing.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;available-log-fields&quot;&gt;Available log fields&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#available-log-fields&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The MCP server portal logs dataset includes fields such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Datetime&lt;/code&gt; — Timestamp of the request&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PortalID&lt;/code&gt; / &lt;code&gt;PortalAUD&lt;/code&gt; — Portal identifiers&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ServerID&lt;/code&gt; / &lt;code&gt;ServerURL&lt;/code&gt; — Upstream MCP server details&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Method&lt;/code&gt; — JSON-RPC method (for example, &lt;code&gt;tools/call&lt;/code&gt;, &lt;code&gt;prompts/get&lt;/code&gt;, &lt;code&gt;resources/read&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ToolCallName&lt;/code&gt; / &lt;code&gt;PromptGetName&lt;/code&gt; / &lt;code&gt;ResourceReadURI&lt;/code&gt; — Method-specific identifiers&lt;/li&gt;
&lt;li&gt;&lt;code&gt;UserID&lt;/code&gt; / &lt;code&gt;UserEmail&lt;/code&gt; — Authenticated user information&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Success&lt;/code&gt; / &lt;code&gt;Error&lt;/code&gt; — Request outcome&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ServerResponseDurationMs&lt;/code&gt; — Response time from upstream server&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For the complete field reference, refer to &lt;a href=&quot;https://docs.infinitegaming.org/logs/logpush/logpush-job/datasets/account/mcp_portal_logs/&quot;&gt;MCP portal logs&lt;/a&gt;.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;set-up-logpush&quot;&gt;Set up Logpush&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#set-up-logpush&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;To configure Logpush for MCP server portal logs, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/logs/logpush/&quot;&gt;Logpush integration&lt;/a&gt;.&lt;/p&gt;
&lt;aside role=&quot;note&quot; aria-label=&quot;Note&quot; class=&quot;aside-card flex items-start gap-3 rounded-lg px-4 py-3 my-4&quot; style=&quot;--_c: var(--nb-info); --_t: var(--nb-info-muted);&quot; data-astro-cid-znle5jil&gt;&lt;span class=&quot;flex h-[1.375em] shrink-0 items-center&quot; aria-hidden=&quot;true&quot; data-astro-cid-znle5jil&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[1em] w-[1em]&quot; data-astro-cid-znle5jil=&quot;true&quot; data-icon=&quot;ph:info&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24m0 192a88 88 0 1 1 88-88a88.1 88.1 0 0 1-88 88m16-40a8 8 0 0 1-8 8a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 8 8m-32-92a12 12 0 1 1 12 12a12 12 0 0 1-12-12&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div class=&quot;flex min-w-0 flex-1 flex-col gap-0.5&quot; data-astro-cid-znle5jil&gt;&lt;p class=&quot;m-0 text-base leading-snug font-semibold&quot; data-astro-cid-znle5jil&gt;Note&lt;/p&gt;&lt;div class=&quot;aside-card-body text-sm leading-normal&quot; data-astro-cid-znle5jil&gt;&lt;p&gt;MCP server portals is currently in beta.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/aside&gt;</description><pubDate>Fri, 27 Feb 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Gateway - New protocols added for Gateway Protocol Detection (Beta)</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-27-new-protocol-detection-protocols/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-27-new-protocol-detection-protocols/</guid><description>&lt;p&gt;Gateway &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/network-policies/protocol-detection/&quot;&gt;Protocol Detection&lt;/a&gt; now supports seven additional protocols in beta:&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Protocol&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;IMAP&lt;/td&gt;
&lt;td&gt;Internet Message Access Protocol — email retrieval&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;POP3&lt;/td&gt;
&lt;td&gt;Post Office Protocol v3 — email retrieval&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SMTP&lt;/td&gt;
&lt;td&gt;Simple Mail Transfer Protocol — email sending&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MYSQL&lt;/td&gt;
&lt;td&gt;MySQL database wire protocol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RSYNC-DAEMON&lt;/td&gt;
&lt;td&gt;rsync daemon protocol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LDAP&lt;/td&gt;
&lt;td&gt;Lightweight Directory Access Protocol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NTP&lt;/td&gt;
&lt;td&gt;Network Time Protocol&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;These protocols join the existing set of detected protocols (HTTP, HTTP2, SSH, TLS, DCERPC, MQTT, and TPKT) and can be used with the &lt;em&gt;Detected Protocol&lt;/em&gt; selector in &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/network-policies/&quot;&gt;Network policies&lt;/a&gt; to identify and filter traffic based on the application-layer protocol, without relying on port-based identification.&lt;/p&gt;
&lt;p&gt;If protocol detection is enabled on your account, these protocols will automatically be logged when detected in your Gateway network traffic.&lt;/p&gt;
&lt;p&gt;For more information on using Protocol Detection, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/network-policies/protocol-detection/&quot;&gt;Protocol detection documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 27 Feb 2026 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Workers - Better Windows support for Python Workers</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-13-pywrangler-windows-support/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-13-pywrangler-windows-support/</guid><description>&lt;p&gt;&lt;a href=&quot;https://github.com/cloudflare/workers-py?tab=readme-ov-file#pywrangler&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Pywrangler&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, the CLI tool for managing Python Workers and packages,
now supports Windows, allowing you to develop and deploy Python Workers from Windows environments.
Previously, Pywrangler was only available on macOS and Linux.&lt;/p&gt;
&lt;p&gt;You can install and use Pywrangler on Windows the same way you would on other platforms.
&lt;a href=&quot;https://docs.infinitegaming.org/workers/languages/python/packages/&quot;&gt;Specify your Worker&apos;s Python dependencies&lt;/a&gt; in your &lt;code&gt;pyproject.toml&lt;/code&gt; file,
then use the following commands to develop and deploy:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;uvx&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; workers-py&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; pywrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; dev&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;uvx&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; workers-py&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; pywrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; deploy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;All existing Pywrangler functionality, including package management, local development, and deployment, works on Windows without any additional configuration.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;requirements&quot;&gt;Requirements&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#requirements&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;This feature requires the following minimum versions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;wrangler&lt;/code&gt; &amp;gt;= 4.64.0&lt;/li&gt;
&lt;li&gt;&lt;code&gt;workers-py&lt;/code&gt; &amp;gt;= 1.72.0&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uv&lt;/code&gt; &amp;gt;= 0.9.28&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To upgrade &lt;code&gt;workers-py&lt;/code&gt; (which includes Pywrangler) in your project, run:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;uv&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; tool&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; upgrade&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; workers-py&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;To upgrade &lt;code&gt;wrangler&lt;/code&gt;, run:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;npm&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; install&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; -g&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; wrangler@latest&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;To upgrade &lt;code&gt;uv&lt;/code&gt;, run:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;uv&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; self&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; update&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;To get started with Python Workers on Windows, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/workers/languages/python/packages/&quot;&gt;Python packages documentation&lt;/a&gt; for full details on Pywrangler.&lt;/p&gt;</description><pubDate>Wed, 25 Feb 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Write structured queries to filter and search your Workers logs and traces</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-24-observability-query-language/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-24-observability-query-language/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/&quot;&gt;Workers Observability&lt;/a&gt; now includes a query language that lets you write structured queries directly in the search bar to filter your logs and traces. The search bar doubles as a free text search box — type any term to search across all metadata and attributes, or write field-level queries for precise filtering.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2630,height=1302,format=webp/_astro/2026-02-24-query-language.Ol8UX7m0.png&quot; alt=&quot;Workers Observability search bar with autocomplete suggestions and Query Builder sidebar filters&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2630&quot; height=&quot;1302&quot;&gt;
&lt;p&gt;Queries written in the search bar sync with the &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/&quot;&gt;Query Builder&lt;/a&gt; sidebar, so you can write a query by hand and then refine it visually, or build filters in the Query Builder and see the corresponding query syntax. The search bar provides autocomplete suggestions for metadata fields and operators as you type.&lt;/p&gt;
&lt;p&gt;The query language supports:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Free text search&lt;/strong&gt; — search everywhere with a keyword like &lt;code&gt;error&lt;/code&gt;, or match an exact phrase with &lt;code&gt;&quot;exact phrase&quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Field queries&lt;/strong&gt; — filter by specific fields using comparison operators (for example, &lt;code&gt;status = 500&lt;/code&gt; or &lt;code&gt;$workers.wallTimeMs &amp;gt; 100&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operators&lt;/strong&gt; — &lt;code&gt;=&lt;/code&gt;, &lt;code&gt;!=&lt;/code&gt;, &lt;code&gt;&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;gt;=&lt;/code&gt;, &lt;code&gt;&amp;lt;&lt;/code&gt;, &lt;code&gt;&amp;lt;=&lt;/code&gt;, and &lt;code&gt;:&lt;/code&gt; (contains)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Functions&lt;/strong&gt; — &lt;code&gt;contains(field, value)&lt;/code&gt;, &lt;code&gt;startsWith(field, prefix)&lt;/code&gt;, &lt;code&gt;regex(field, pattern)&lt;/code&gt;, and &lt;code&gt;exists(field)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Boolean logic&lt;/strong&gt; — add conditions with &lt;code&gt;AND&lt;/code&gt;, &lt;code&gt;OR&lt;/code&gt;, and &lt;code&gt;NOT&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Select the help icon next to the search bar to view the full syntax reference, including all supported operators, functions, and keyboard shortcuts.&lt;/p&gt;
&lt;p&gt;Go to the &lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/workers-and-pages/observability/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Workers Observability dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; to try the query language.&lt;/p&gt;</description><pubDate>Wed, 25 Feb 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - No config? No problem. Just `wrangler deploy`</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-25-wrangler-autoconfig-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-25-wrangler-autoconfig-ga/</guid><description>&lt;p&gt;You can now deploy any existing project to Cloudflare Workers — even without a Wrangler configuration file — and &lt;code&gt;wrangler deploy&lt;/code&gt; will &lt;em&gt;just work&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Starting with Wrangler &lt;strong&gt;4.68.0&lt;/strong&gt;, running &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/general/#deploy&quot;&gt;&lt;code&gt;wrangler deploy&lt;/code&gt;&lt;/a&gt; &lt;a href=&quot;https://docs.infinitegaming.org/workers/framework-guides/automatic-configuration/&quot;&gt;automatically configures your project&lt;/a&gt; by detecting your framework, installing required adapters, and deploying it to Cloudflare Workers.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;using-wrangler-locally&quot;&gt;Using Wrangler locally&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#using-wrangler-locally&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;npx&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; deploy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;When you run &lt;code&gt;wrangler deploy&lt;/code&gt; in a project without a configuration file, Wrangler:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Detects your framework from &lt;code&gt;package.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Prompts you to confirm the detected settings&lt;/li&gt;
&lt;li&gt;Installs any required adapters&lt;/li&gt;
&lt;li&gt;Generates a &lt;code&gt;wrangler.jsonc&lt;/code&gt; &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/configuration/&quot;&gt;configuration file&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Deploys your project to Cloudflare Workers&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can also use &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/general/#setup&quot;&gt;&lt;code&gt;wrangler setup&lt;/code&gt;&lt;/a&gt; to configure without deploying, or pass &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/general/#deploy&quot;&gt;&lt;code&gt;--yes&lt;/code&gt;&lt;/a&gt; to skip prompts.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;using-the-cloudflare-dashboard&quot;&gt;Using the Cloudflare dashboard&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#using-the-cloudflare-dashboard&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1918,height=1348,format=webp/_astro/automatic-pr.CwJG6Bec.png&quot; alt=&quot;Automatic configuration pull request created by Workers Builds&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1918&quot; height=&quot;1348&quot;&gt;
&lt;p&gt;When you connect a repository through the &lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/workers-and-pages/create&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Workers dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, a &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/automatic-prs/&quot;&gt;pull request is generated&lt;/a&gt; for you with all necessary files, and a &lt;a href=&quot;https://docs.infinitegaming.org/workers/versions-and-deployments/preview-urls/&quot;&gt;preview deployment&lt;/a&gt; to check before merging.&lt;/p&gt;
&lt;aside role=&quot;note&quot; aria-label=&quot;Note&quot; class=&quot;aside-card flex items-start gap-3 rounded-lg px-4 py-3 my-4&quot; style=&quot;--_c: var(--nb-info); --_t: var(--nb-info-muted);&quot; data-astro-cid-znle5jil&gt;&lt;span class=&quot;flex h-[1.375em] shrink-0 items-center&quot; aria-hidden=&quot;true&quot; data-astro-cid-znle5jil&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[1em] w-[1em]&quot; data-astro-cid-znle5jil=&quot;true&quot; data-icon=&quot;ph:info&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24m0 192a88 88 0 1 1 88-88a88.1 88.1 0 0 1-88 88m16-40a8 8 0 0 1-8 8a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 8 8m-32-92a12 12 0 1 1 12 12a12 12 0 0 1-12-12&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div class=&quot;flex min-w-0 flex-1 flex-col gap-0.5&quot; data-astro-cid-znle5jil&gt;&lt;p class=&quot;m-0 text-base leading-snug font-semibold&quot; data-astro-cid-znle5jil&gt;Note&lt;/p&gt;&lt;div class=&quot;aside-card-body text-sm leading-normal&quot; data-astro-cid-znle5jil&gt;&lt;p&gt;A pull request is only generated when your deploy command is &lt;code&gt;npx wrangler deploy&lt;/code&gt;. If you use a custom deploy command, automatic configuration still runs but a PR is not created.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;background&quot;&gt;Background&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#background&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;In December 2025, we &lt;a href=&quot;https://docs.infinitegaming.org/changelog/2025-12-16-wrangler-autoconfig/&quot;&gt;introduced automatic configuration&lt;/a&gt; as an experimental feature. It is now generally available and the default behavior.&lt;/p&gt;
&lt;p&gt;If you have questions or run into issues, join the &lt;a href=&quot;https://github.com/cloudflare/workers-sdk/discussions/11667&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub discussion&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 25 Feb 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare One Client - WARP client for Windows (version 2026.1.150.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-24-warp-windows-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-24-warp-windows-ga/</guid><description>&lt;p&gt;A new GA release for the Windows WARP client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains minor fixes, improvements, and new features.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improvements to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/windows-multiuser/&quot;&gt;multi-user mode&lt;/a&gt;. Fixed an issue where when switching from a pre-login registration to a user registration, Mobile Device Management (MDM) configuration association could be lost.&lt;/li&gt;
&lt;li&gt;Added a new feature to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/#netbios-over-tcpip&quot;&gt;manage NetBIOS over TCP/IP&lt;/a&gt; functionality on the Windows client. NetBIOS over TCP/IP on the Windows client is now disabled by default and can be enabled in &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/device-profiles/&quot;&gt;device profile settings&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Fixed an issue causing failure of the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/#allow-users-to-enable-local-network-exclusion&quot;&gt;local network exclusion&lt;/a&gt; feature when configured with a timeout of &lt;code&gt;0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Improvement for the Windows &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/reusable-components/posture-checks/warp-client-checks/client-certificate/&quot;&gt;client certificate posture check&lt;/a&gt; to ensure logged results are from checks that run once users log in.&lt;/li&gt;
&lt;li&gt;Improvement for more accurate reporting of device colocation information in the Cloudflare One dashboard.&lt;/li&gt;
&lt;li&gt;Fixed an issue where misconfigured DEX HTTP tests prevented new registrations.&lt;/li&gt;
&lt;li&gt;Fixed an issue causing DNS requests to fail with clients in Traffic and DNS mode.&lt;/li&gt;
&lt;li&gt;Improved service shutdown behavior in cases where the daemon is unresponsive.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;For Windows 11 24H2 users, Microsoft has confirmed a regression that may lead to performance issues like mouse lag, audio cracking, or other slowdowns. Cloudflare recommends users experiencing these issues upgrade to a minimum &lt;a href=&quot;https://support.microsoft.com/en-us/topic/july-8-2025-kb5062553-os-build-26100-4652-523e69cb-051b-43c6-8376-6a76d6caeefd&quot;&gt;Windows 11 24H2 KB5062553&lt;/a&gt; or higher for resolution.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Devices with KB5055523 installed may receive a warning about &lt;code&gt;Win32/ClickFix.ABA&lt;/code&gt; being present in the installer. To resolve this false positive, update Microsoft Security Intelligence to &lt;a href=&quot;https://www.microsoft.com/en-us/wdsi/definitions/antimalware-definition-release-notes?requestVersion=1.429.19.0&quot;&gt;version 1.429.19.0&lt;/a&gt; or later.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DNS resolution may be broken when the following conditions are all true:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WARP is in Secure Web Gateway without DNS filtering (tunnel-only) mode.&lt;/li&gt;
&lt;li&gt;A custom DNS server address is configured on the primary network adapter.&lt;/li&gt;
&lt;li&gt;The custom DNS server address on the primary network adapter is changed while WARP is connected.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To work around this issue, reconnect the WARP client by toggling off and back on.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 24 Feb 2026 01:15:23 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - WARP client for macOS (version 2026.1.150.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-24-warp-macos-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-24-warp-macos-ga/</guid><description>&lt;p&gt;A new GA release for the macOS WARP client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains minor fixes and improvements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an issue causing failure of the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/#allow-users-to-enable-local-network-exclusion&quot;&gt;local network exclusion&lt;/a&gt; feature when configured with a timeout of &lt;code&gt;0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Improvement for more accurate reporting of device colocation information in the Cloudflare One dashboard.&lt;/li&gt;
&lt;li&gt;Fixed an issue with DNS server configuration failures that caused tunnel connection delays.&lt;/li&gt;
&lt;li&gt;Fixed an issue where misconfigured DEX HTTP tests prevented new registrations.&lt;/li&gt;
&lt;li&gt;Fixed an issue causing DNS requests to fail with clients in Traffic and DNS mode.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 24 Feb 2026 01:15:22 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - WARP client for Linux (version 2026.1.150.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-24-warp-linux-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-24-warp-linux-ga/</guid><description>&lt;p&gt;A new GA release for the Linux WARP client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains minor fixes and improvements.&lt;/p&gt;
&lt;p&gt;WARP client version 2025.8.779.0 introduced an updated public key for Linux packages. The public key must be updated if it was installed before September 12, 2025 to ensure the repository remains functional after December 4, 2025. Instructions to make this update are available at &lt;a href=&quot;https://pkg.cloudflareclient.com&quot;&gt;pkg.cloudflareclient.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an issue causing failure of the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/#allow-users-to-enable-local-network-exclusion&quot;&gt;local network exclusion&lt;/a&gt; feature when configured with a timeout of &lt;code&gt;0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Improvement for more accurate reporting of device colocation information in the Cloudflare One dashboard.&lt;/li&gt;
&lt;li&gt;Fixed an issue where misconfigured DEX HTTP tests prevented new registrations.&lt;/li&gt;
&lt;li&gt;Fixed issues causing DNS requests to fail with clients in Traffic and DNS mode or DNS only mode.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 24 Feb 2026 00:14:20 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Stream - Stream live inputs can now be disabled and enabled</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-24-disable-live-inputs/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-24-disable-live-inputs/</guid><description>&lt;p&gt;You can now disable a live input to reject incoming RTMPS and SRT
connections. When a live input is disabled, any broadcast attempts will fail to
connect.&lt;/p&gt;
&lt;p&gt;This gives you more control over your live inputs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Temporarily pause an input without deleting it&lt;/li&gt;
&lt;li&gt;Programmatically end creator broadcasts&lt;/li&gt;
&lt;li&gt;Prevent new broadcasts from starting on a specific input&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To disable a live input via the API, set the &lt;code&gt;enabled&lt;/code&gt; property to &lt;code&gt;false&lt;/code&gt;:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --request&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; PUT&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;https://api.cloudflare.com/client/v4/accounts/{&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;account_id}/stream/live_inputs/&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;{input_id}&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;--header &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Authorization: Bearer &amp;lt;API_TOKEN&amp;gt;&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;--data &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;{&quot;enabled&quot;: false}&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You can also disable or enable a live input from the &lt;strong&gt;Live inputs&lt;/strong&gt; list page
or the live input detail page in the Dashboard.&lt;/p&gt;
&lt;p&gt;All existing live inputs remain enabled by default. For more information, refer
to &lt;a href=&quot;https://docs.infinitegaming.org/stream/stream-live/start-stream-live/&quot;&gt;Start a live stream&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 24 Feb 2026 00:00:00 GMT</pubDate><product>Stream</product><category>Stream</category></item><item><title>CASB - Understand CASB findings instantly with Cloudy Summaries</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-20-cloudy-in-casb/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-20-cloudy-in-casb/</guid><description>&lt;p&gt;You can now easily understand your SaaS security posture findings and why they were detected with &lt;strong&gt;Cloudy Summaries in CASB&lt;/strong&gt;. This feature integrates Cloudflare&apos;s Cloudy AI directly into your CASB Posture Findings to automatically generate clear, plain-language summaries of complex security misconfigurations, third-party app risks, and data exposures.&lt;/p&gt;
&lt;p&gt;This allows security teams and IT administrators to drastically reduce triage time by immediately understanding the context, potential impact, and necessary remediation steps for any given finding—without needing to be an expert in every connected SaaS application.&lt;/p&gt;
&lt;p&gt;To view a summary, simply navigate to your Posture Findings in the Cloudflare One dashboard (under &lt;strong&gt;Cloud and SaaS findings&lt;/strong&gt;) and open the finding details of a specific instance of a Finding.&lt;/p&gt;
&lt;p&gt;Cloudy Summaries are supported on all available integrations, including Microsoft 365, Google Workspace, Salesforce, GitHub, AWS, Slack, and Dropbox. See the full list of supported integrations &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/cloud-and-saas/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;key-capabilities&quot;&gt;Key capabilities&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#key-capabilities&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Contextual explanations&lt;/strong&gt; — Quickly understand the specifics of a finding with plain-language summaries detailing exactly what was detected, from publicly shared sensitive files to risky third-party app scopes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clear risk assessment&lt;/strong&gt; — Instantly grasp the potential security impact of the finding, such as data breach risks, unauthorized account access, or email spoofing vulnerabilities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actionable guidance&lt;/strong&gt; — Get clear recommendations and next steps on how to effectively remediate the issue and secure your environment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built-in feedback&lt;/strong&gt; — Help improve future AI summarization accuracy by submitting feedback directly using the thumbs-up and thumbs-down buttons.&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;learn-more&quot;&gt;Learn more&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#learn-more&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Learn more about managing &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/cloud-and-saas-findings/&quot;&gt;CASB Posture Findings&lt;/a&gt; in Cloudflare.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cloudy Summaries in CASB are available to all Cloudflare CASB users today.&lt;/p&gt;</description><pubDate>Fri, 20 Feb 2026 00:00:00 GMT</pubDate><product>CASB</product><category>CASB</category></item><item><title>Cloudflare Tunnel, Cloudflare Tunnel for SASE - Manage Cloudflare Tunnel directly from the main Cloudflare Dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-20-tunnel-core-dashboard/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-20-tunnel-core-dashboard/</guid><description>
&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/&quot;&gt;Cloudflare Tunnel&lt;/a&gt; is now available in the main Cloudflare Dashboard at &lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/tunnels&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Networking &amp;gt; Tunnels&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, bringing first-class Tunnel management to developers using Tunnel for securing origin servers.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1800,height=894,format=webp/_astro/tunnel-core-dashboard.BGPqaHfo.gif&quot; alt=&quot;Manage Tunnels in the Core Dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;894&quot;&gt;
&lt;p&gt;This new experience provides everything you need to manage Tunnels for &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/routing-to-tunnel/&quot;&gt;public applications&lt;/a&gt;, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Full Tunnel lifecycle management&lt;/strong&gt;: Create, configure, delete, and monitor all your Tunnels in one place.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Native integrations&lt;/strong&gt;: View Tunnels by name when configuring &lt;a href=&quot;https://docs.infinitegaming.org/dns/manage-dns-records/how-to/create-dns-records/&quot;&gt;DNS records&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/workers-vpc/&quot;&gt;Workers VPC&lt;/a&gt; — no more copy-pasting UUIDs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Real-time visibility&lt;/strong&gt;: Monitor &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/configure-tunnels/tunnel-availability/&quot;&gt;replicas&lt;/a&gt; and Tunnel &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/troubleshoot-tunnels/common-errors/#tunnel-status&quot;&gt;health status&lt;/a&gt; directly in the dashboard.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Routing map&lt;/strong&gt;: Manage all ingress routes for your Tunnel, including &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/routing-to-tunnel/&quot;&gt;public applications&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/cloudflared/connect-private-hostname/&quot;&gt;private hostnames&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/cloudflared/connect-cidr/&quot;&gt;private CIDRs&lt;/a&gt;, and &lt;a href=&quot;https://docs.infinitegaming.org/workers-vpc/&quot;&gt;Workers VPC services&lt;/a&gt;, from a single interactive interface.&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;choose-the-right-dashboard-for-your-use-case&quot;&gt;Choose the right dashboard for your use case&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#choose-the-right-dashboard-for-your-use-case&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Core Dashboard&lt;/strong&gt;: Navigate to &lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/tunnels&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Networking &amp;gt; Tunnels&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; to manage Tunnels for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Securing origin servers and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/routing-to-tunnel/&quot;&gt;public applications&lt;/a&gt; with CDN, WAF, Load Balancing, and DDoS protection&lt;/li&gt;
&lt;li&gt;Connecting &lt;a href=&quot;https://docs.infinitegaming.org/workers-vpc/&quot;&gt;Workers to private services&lt;/a&gt; via Workers VPC&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Cloudflare One Dashboard&lt;/strong&gt;: Navigate to &lt;a href=&quot;https://one.dash.cloudflare.com/?to=/:account/networks/connectors&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Zero Trust &amp;gt; Networks &amp;gt; Connectors&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; to manage Tunnels for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Securing your public applications with &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/http-apps/self-hosted-public-app/&quot;&gt;Zero Trust access policies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Connecting users to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/non-http/self-hosted-private-app/&quot;&gt;private applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Building a &lt;a href=&quot;https://docs.infinitegaming.org/reference-architecture/architectures/sase/#connecting-networks&quot;&gt;private mesh network&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both dashboards provide complete Tunnel management capabilities — choose based on your primary workflow.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;get-started&quot;&gt;Get started&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#get-started&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;New to Tunnel? Learn how to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/get-started/create-remote-tunnel/&quot;&gt;get started with Cloudflare Tunnel&lt;/a&gt; or explore advanced use cases like &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/use-cases/ssh/&quot;&gt;securing SSH servers&lt;/a&gt; or &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/deployment-guides/kubernetes/&quot;&gt;running Tunnels in Kubernetes&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 20 Feb 2026 00:00:00 GMT</pubDate><product>Cloudflare Tunnel</product><category>Cloudflare Tunnel</category><category>Cloudflare Tunnel for SASE</category></item><item><title>Digital Experience Monitoring - DEX Supports EU Customer Metadata Boundary</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-19-dex-supports-cmb-eu/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-19-dex-supports-cmb-eu/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/dex/&quot;&gt;Digital Experience Monitoring (DEX)&lt;/a&gt; provides visibility into &lt;a href=&quot;https://docs.infinitegaming.org/warp-client/&quot;&gt;WARP&lt;/a&gt; device connectivity and performance to any internal or external application.&lt;/p&gt;
&lt;p&gt;Now, all DEX logs are fully compatible with Cloudflare&apos;s &lt;a href=&quot;https://docs.infinitegaming.org/data-localization/metadata-boundary/&quot;&gt;Customer Metadata Boundary&lt;/a&gt; (CMB) setting for the &apos;EU&apos; (European Union), which ensures that DEX logs will not be stored outside the &apos;EU&apos; when the option is configured.&lt;/p&gt;
&lt;p&gt;If a Cloudflare One customer using DEX enables CMB &apos;EU&apos;, they will not see any DEX data in the Cloudflare One dashboard. Customers can ingest DEX data via &lt;a href=&quot;https://docs.infinitegaming.org/logs/logpush/&quot;&gt;LogPush&lt;/a&gt;, and build their own analytics and dashboards.&lt;/p&gt;
&lt;p&gt;If a customer enables CMB in their account, they will see the following message in the Digital Experience dashboard: &quot;DEX data is unavailable because Customer Metadata Boundary configuration is on. Use Cloudflare LogPush to export DEX datasets.&quot;&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2143,height=1221,format=webp/_astro/dex_supports_cmb.6YOLXjHN.png&quot; alt=&quot;Digital Experience Monitoring message when Customer Metadata Boundary for the EU is enabled&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2143&quot; height=&quot;1221&quot;&gt;</description><pubDate>Thu, 19 Feb 2026 00:00:00 GMT</pubDate><product>Digital Experience Monitoring</product><category>Digital Experience Monitoring</category></item><item><title>Access - Streamlined clientless browser isolation for private applications</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-17-clientless-access-for-private-apps/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-17-clientless-access-for-private-apps/</guid><description>&lt;p&gt;A new &lt;strong&gt;Allow clientless access&lt;/strong&gt; setting makes it easier to connect users without a device client to internal applications, without using public DNS.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1117,height=206,format=webp/_astro/allow-clientless-access.BHKwQuVt.png&quot; alt=&quot;Allow clientless access setting in the Cloudflare One dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1117&quot; height=&quot;206&quot;&gt;
&lt;p&gt;Previously, to provide clientless access to a private hostname or IP without a &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/routes/add-routes/#add-a-published-application-route&quot;&gt;published application&lt;/a&gt;, you had to create a separate &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/bookmarks/&quot;&gt;bookmark application&lt;/a&gt; pointing to a prefixed &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/remote-browser-isolation/setup/clientless-browser-isolation/&quot;&gt;Clientless Web Isolation&lt;/a&gt; URL (for example, &lt;code&gt;https://&amp;lt;your-teamname&amp;gt;.cloudflareaccess.com/browser/https://10.0.0.1/&lt;/code&gt;). This bookmark was visible to all users in the App Launcher, regardless of whether they had access to the underlying application.&lt;/p&gt;
&lt;p&gt;Now, you can manage clientless access directly within your &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/non-http/self-hosted-private-app/&quot;&gt;private self-hosted application&lt;/a&gt;. When  &lt;strong&gt;Allow clientless access&lt;/strong&gt; is turned on, users who pass your Access application policies will see a tile in their App Launcher pointing to the prefixed URL. Users must have &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/remote-browser-isolation/setup/clientless-browser-isolation/&quot;&gt;remote browser permissions&lt;/a&gt; to open the link.&lt;/p&gt;</description><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Access - Policies for bookmark applications</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-17-policies-for-bookmarks/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-17-policies-for-bookmarks/</guid><description>&lt;p&gt;You can now assign &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/policies/&quot;&gt;Access policies&lt;/a&gt; to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/bookmarks/&quot;&gt;bookmark applications&lt;/a&gt;. This lets you control which users see a bookmark in the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/access-settings/app-launcher/&quot;&gt;App Launcher&lt;/a&gt; based on identity, device posture, and other policy rules.&lt;/p&gt;
&lt;p&gt;Previously, bookmark applications were visible to all users in your organization. With policy support, you can now:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tailor the App Launcher to each user&lt;/strong&gt; — Users only see the applications they have access to, reducing clutter and preventing accidental clicks on irrelevant resources.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restrict visibility of sensitive bookmarks&lt;/strong&gt; — Limit who can view bookmarks to internal tools or partner resources based on group membership, identity provider, or device posture.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bookmarks support all &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/policies/&quot;&gt;Access policy configurations&lt;/a&gt; except purpose justification, temporary authentication, and application isolation. If no policy is assigned, the bookmark remains visible to all users (maintaining backwards compatibility).&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/bookmarks/&quot;&gt;Add bookmarks&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Cloudflare One, Cloudflare WAN, Cloudflare Network Firewall, Network Flow - Cloudflare One Product Name Updates</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-17-product-name-updates/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-17-product-name-updates/</guid><description>&lt;p&gt;We are updating naming related to some of our Networking products to better clarify their place in the Zero Trust and Secure Access Service Edge (SASE) journey.&lt;/p&gt;
&lt;p&gt;We are retiring some older brand names in favor of names that describe exactly what the products do within your network. We are doing this to help customers build better, clearer mental models for comprehensive SASE architecture delivered on Cloudflare.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;whats-changing&quot;&gt;What&apos;s changing&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#whats-changing&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Magic WAN&lt;/strong&gt; → &lt;strong&gt;Cloudflare WAN&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Magic WAN IPsec&lt;/strong&gt; → &lt;strong&gt;Cloudflare IPsec&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Magic WAN GRE&lt;/strong&gt; → &lt;strong&gt;Cloudflare GRE&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Magic WAN Connector&lt;/strong&gt; → &lt;strong&gt;Cloudflare One Appliance&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Magic Firewall&lt;/strong&gt; → &lt;strong&gt;Cloudflare Network Firewall&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Magic Network Monitoring&lt;/strong&gt; → &lt;strong&gt;Network Flow&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Magic Cloud Networking&lt;/strong&gt; → &lt;strong&gt;Cloudflare One Multi-cloud Networking&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;No action is required by you&lt;/strong&gt; — all functionality, existing configurations, and billing will remain exactly the same.&lt;/p&gt;
&lt;p&gt;For more information, visit the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/&quot;&gt;Cloudflare One documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category><category>Cloudflare WAN</category><category>Cloudflare Network Firewall</category><category>Network Flow</category></item><item><title>Workers - Quick Editor devtools replaced with log viewer</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-12-quick-editor-dev-tools-deprecation/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-12-quick-editor-dev-tools-deprecation/</guid><description>&lt;p&gt;Cloudflare has deprecated the Workers Quick Editor dev tools inspector and replaced it with a lightweight log viewer.&lt;/p&gt;
&lt;p&gt;This aligns our logging with &lt;code&gt;wrangler tail&lt;/code&gt; and gives us the opportunity to focus our efforts on bringing benefits from the work we have invested in observability, which would not be possible otherwise.&lt;/p&gt;
&lt;p&gt;We have made improvements to this logging viewer based on your feedback such that you can log object and array types, and easily clear the list of logs. This does not include class instances. Limitations are documented in the &lt;a href=&quot;https://docs.infinitegaming.org/workers/playground/&quot;&gt;Workers Playground docs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you do need to develop your Worker with a remote inspector, you can still do this using Wrangler locally. Cloning a project from your quick editor to your computer for local development can be done with the &lt;code&gt;wrangler init --from-dash&lt;/code&gt; command. For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/general/#init&quot;&gt;Wrangler commands&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 16 Feb 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - New Best Practices guide for Workers</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-15-workers-best-practices/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-15-workers-best-practices/</guid><description>
&lt;p&gt;A new &lt;a href=&quot;https://docs.infinitegaming.org/workers/best-practices/workers-best-practices/&quot;&gt;Workers Best Practices&lt;/a&gt; guide provides opinionated recommendations for building fast, reliable, observable, and secure Workers. The guide draws on production patterns, Cloudflare internal usage, and best practices observed from developers building on Workers.&lt;/p&gt;
&lt;p&gt;Key guidance includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Keep your compatibility date current and enable &lt;code&gt;nodejs_compat&lt;/code&gt;&lt;/strong&gt; — Ensure you have access to the latest runtime features and Node.js built-in modules.&lt;/li&gt;
&lt;/ul&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my-worker&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;main&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;src/index.ts&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;	// Set this to today&apos;s date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;compatibility_date&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;2026-10-11&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;compatibility_flags&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;nodejs_compat&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;name = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my-worker&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;main = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;src/index.ts&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Set this to today&apos;s date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;compatibility_date = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;2026-10-11&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;compatibility_flags = [ &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;nodejs_compat&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; ]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Generate binding types with &lt;code&gt;wrangler types&lt;/code&gt;&lt;/strong&gt; — Never hand-write your &lt;code&gt;Env&lt;/code&gt; interface. Let Wrangler generate it from your actual configuration to catch mismatches at compile time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stream request and response bodies&lt;/strong&gt; — Avoid buffering large payloads in memory. Use &lt;code&gt;TransformStream&lt;/code&gt; and &lt;code&gt;pipeTo&lt;/code&gt; to stay within the 128 MB memory limit and improve time-to-first-byte.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use bindings, not REST APIs&lt;/strong&gt; — Bindings to KV, R2, D1, Queues, and other Cloudflare services are direct, in-process references with no network hop and no authentication overhead.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use Queues and Workflows for background work&lt;/strong&gt; — Move long-running or retriable tasks out of the critical request path. Use Queues for simple fan-out and buffering, and Workflows for multi-step durable processes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enable Workers Logs and Traces&lt;/strong&gt; — Configure observability before deploying to production so you have data when you need to debug.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Avoid global mutable state&lt;/strong&gt; — Workers reuse isolates across requests. Storing request-scoped data in module-level variables causes cross-request data leaks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Always &lt;code&gt;await&lt;/code&gt; or &lt;code&gt;waitUntil&lt;/code&gt; your Promises&lt;/strong&gt; — Floating promises cause silent bugs and dropped work.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use Web Crypto for secure token generation&lt;/strong&gt; — Never use &lt;code&gt;Math.random()&lt;/code&gt; for security-sensitive operations.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To learn more, refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/best-practices/workers-best-practices/&quot;&gt;Workers Best Practices&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Sun, 15 Feb 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare Fundamentals, Access - Fine-grained permissions for Access policies and service tokens</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-13-access-policy-service-token-permissions/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-13-access-policy-service-token-permissions/</guid><description>&lt;p&gt;Fine-grained permissions for &lt;strong&gt;Access policies&lt;/strong&gt; and &lt;strong&gt;Access service tokens&lt;/strong&gt; are available. These new resource-scoped roles expand the existing RBAC model, enabling administrators to grant permissions scoped to individual resources.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;new-roles&quot;&gt;New roles&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#new-roles&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare Access policy admin&lt;/strong&gt;: Can edit a specific &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/policies/&quot;&gt;Access policy&lt;/a&gt; in an account.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare Access service token admin&lt;/strong&gt;: Can edit a specific &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/service-credentials/service-tokens/&quot;&gt;Access service token&lt;/a&gt; in an account.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These roles complement the existing resource-scoped roles for Access applications, identity providers, and infrastructure targets.&lt;/p&gt;
&lt;p&gt;For more information:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/manage-members/roles/#resource-scoped-roles&quot;&gt;Resource-scoped roles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/manage-members/scope/&quot;&gt;Role scopes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;aside role=&quot;note&quot; aria-label=&quot;Note&quot; class=&quot;aside-card flex items-start gap-3 rounded-lg px-4 py-3 my-4&quot; style=&quot;--_c: var(--nb-info); --_t: var(--nb-info-muted);&quot; data-astro-cid-znle5jil&gt;&lt;span class=&quot;flex h-[1.375em] shrink-0 items-center&quot; aria-hidden=&quot;true&quot; data-astro-cid-znle5jil&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[1em] w-[1em]&quot; data-astro-cid-znle5jil=&quot;true&quot; data-icon=&quot;ph:info&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24m0 192a88 88 0 1 1 88-88a88.1 88.1 0 0 1-88 88m16-40a8 8 0 0 1-8 8a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 8 8m-32-92a12 12 0 1 1 12 12a12 12 0 0 1-12-12&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div class=&quot;flex min-w-0 flex-1 flex-col gap-0.5&quot; data-astro-cid-znle5jil&gt;&lt;p class=&quot;m-0 text-base leading-snug font-semibold&quot; data-astro-cid-znle5jil&gt;Note&lt;/p&gt;&lt;div class=&quot;aside-card-body text-sm leading-normal&quot; data-astro-cid-znle5jil&gt;&lt;p&gt;Resource-scoped roles is currently in beta.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/aside&gt;</description><pubDate>Fri, 13 Feb 2026 00:00:00 GMT</pubDate><product>Cloudflare Fundamentals</product><category>Cloudflare Fundamentals</category><category>Access</category></item><item><title>Cloudflare WAN - Anycast IPs displayed on the dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-12-anycast-ips-on-dashboard/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-12-anycast-ips-on-dashboard/</guid><description>&lt;p&gt;Cloudflare WAN now displays your Anycast IP addresses directly in the dashboard when you configure IPsec or GRE tunnels.&lt;/p&gt;
&lt;p&gt;Previously, customers received their Anycast IPs during onboarding or had to retrieve them with an API call. The dashboard now pre-loads these addresses, reducing setup friction and preventing configuration errors.&lt;/p&gt;
&lt;p&gt;No action is required. All Cloudflare WAN customers can see their Anycast IPs in the tunnel configuration form automatically.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/how-to/configure-tunnel-endpoints/&quot;&gt;Configure tunnel endpoints&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 12 Feb 2026 00:00:00 GMT</pubDate><product>Cloudflare WAN</product><category>Cloudflare WAN</category></item><item><title>Cloudflare One Appliance, Cloudflare One, Cloudflare WAN - Post-quantum encryption support for Cloudflare One Appliance</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-11-appliance-post-quantum-encryption/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-11-appliance-post-quantum-encryption/</guid><description>&lt;p&gt;Cloudflare One Appliance version 2026.2.0 adds &lt;a href=&quot;https://docs.infinitegaming.org/ssl/post-quantum-cryptography/&quot;&gt;post-quantum encryption&lt;/a&gt; support using hybrid ML-KEM (Module-Lattice-Based Key-Encapsulation Mechanism).&lt;/p&gt;
&lt;p&gt;The appliance now uses TLS 1.3 with hybrid ML-KEM for its connection to the Cloudflare edge. During the TLS handshake, the appliance and the edge share a symmetric secret over the TLS connection and inject it into the ESP layer of IPsec. This protects IPsec data plane traffic against harvest-now, decrypt-later attacks.&lt;/p&gt;
&lt;p&gt;This upgrade deploys automatically to all appliances during their configured interrupt windows with no manual action required.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/&quot;&gt;Cloudflare One Appliance&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 11 Feb 2026 00:00:00 GMT</pubDate><product>Cloudflare One Appliance</product><category>Cloudflare One Appliance</category><category>Cloudflare One</category><category>Cloudflare WAN</category></item><item><title>Workers - Workers are no longer limited to 1000 subrequests</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-11-subrequests-limit/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-11-subrequests-limit/</guid><description>
&lt;p&gt;Workers no longer have a limit of 1000 subrequests per invocation, allowing you to make more &lt;code&gt;fetch()&lt;/code&gt; calls or requests
to Cloudflare services on every incoming request. This is especially important for long-running Workers requests, such as
open websockets on &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects&quot;&gt;Durable Objects&lt;/a&gt; or long-running &lt;a href=&quot;https://docs.infinitegaming.org/workflows&quot;&gt;Workflows&lt;/a&gt;, as these could often exceed this limit and error.&lt;/p&gt;
&lt;p&gt;By default, Workers on paid plans are now limited to 10,000 subrequests per invocation, but this
limit can be increased up to 10 million by setting the new &lt;code&gt;subrequests&lt;/code&gt; limit in your Wrangler configuration file.&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;limits&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;subrequests&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;50000&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;limits&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;subrequests = &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;50_000&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;Workers on the free plan remain limited to 50 external subrequests and 1000 subrequests to Cloudflare services per invocation.&lt;/p&gt;
&lt;p&gt;To protect against runaway code or unexpected costs, you can also set a lower limit for both subrequests and CPU usage.&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;limits&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;subrequests&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;cpu_ms&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;limits&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;subrequests = &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;10&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;cpu_ms = &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;1_000&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;For more information, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/configuration/#limits&quot;&gt;Wrangler configuration documentation for limits&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/workers/platform/limits/#subrequests&quot;&gt;subrequest limits&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 11 Feb 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Improved React Server Components support in the Cloudflare Vite plugin</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-11-vite-plugin-child-environments/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-11-vite-plugin-child-environments/</guid><description>&lt;p&gt;The Cloudflare Vite plugin now integrates seamlessly &lt;a href=&quot;https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-rsc&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@vitejs/plugin-rsc&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, the official Vite plugin for &lt;a href=&quot;https://react.dev/reference/rsc/server-components&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;React Server Components&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A &lt;code&gt;childEnvironments&lt;/code&gt; option has been added to the plugin config to enable using multiple environments within a single Worker.
The parent environment can then import modules from a child environment in order to access a separate module graph.
For a typical RSC use case, the plugin might be configured as in the following example:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;vite.config.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; defineConfig&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	plugins: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;		cloudflare&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			viteEnvironment: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				name: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;rsc&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				childEnvironments: [&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;ssr&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;&lt;code&gt;@vitejs/plugin-rsc&lt;/code&gt; provides the lower level functionality that frameworks, such as &lt;a href=&quot;https://reactrouter.com/how-to/react-server-components&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;React Router&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, build upon.
The GitHub repository includes a &lt;a href=&quot;https://github.com/vitejs/vite-plugin-react/tree/f066114c3e6bf18f5209ff3d3ef6bf1ab46d3866/packages/plugin-rsc/examples/starter-cf-single&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;basic Cloudflare example&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 11 Feb 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Visualize data, share links, and create exports with the new Workers Observability dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-06-observability-ui-refresh/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-06-observability-ui-refresh/</guid><description>&lt;p&gt;The &lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/workers-and-pages/observability/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Workers Observability dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; has some major updates to make it easier to debug your application&apos;s issues and share findings with your team.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2540,height=1170,format=webp/_astro/2026-01-22-events_share_obs_wobs.BvzY4TNV.png&quot; alt=&quot;Workers Observability dashboard showing events view with event details and share options&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2540&quot; height=&quot;1170&quot;&gt;
&lt;p&gt;You can now:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Create visualizations&lt;/strong&gt; — Build charts from your Worker data directly in a Worker&apos;s Observability tab&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Export data as JSON or CSV&lt;/strong&gt; — Download logs and traces for offline analysis or to share with teammates&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Share events and traces&lt;/strong&gt; — Generate direct URLs to specific events, invocations, and traces that open standalone pages with full context&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Customize table columns&lt;/strong&gt; — Improved field picker to add, remove, and reorder columns in the events table&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Expandable event details&lt;/strong&gt; — Expand events inline to view full details without leaving the table&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keyboard shortcuts&lt;/strong&gt; — Navigate the dashboard with hotkey support&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2596,height=1314,format=webp/_astro/2026-01-22-vis_qb_wobs.Bb5eVQNT.png&quot; alt=&quot;Workers Observability dashboard showing a P99 CPU time visualization grouped by outcome&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2596&quot; height=&quot;1314&quot;&gt;
&lt;p&gt;These updates are now live in the Cloudflare dashboard, both in a Worker&apos;s Observability tab and in the account-level Observability dashboard for a unified experience. To get started, go to &lt;strong&gt;Workers &amp;amp; Pages&lt;/strong&gt; &amp;gt; select your Worker &amp;gt; &lt;strong&gt;Observability&lt;/strong&gt;.&lt;/p&gt;</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Email security - Improved Accessibility and Search for Monitoring</title><link>https://docs.infinitegaming.org/changelog/post/2026-02-02-improved-accessibility-search-for-monitoring/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-02-02-improved-accessibility-search-for-monitoring/</guid><description>&lt;p&gt;We have updated the Monitoring page to provide a more streamlined and insightful experience for administrators, improving both data visualization and dashboard accessibility.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enhanced Visual Layout&lt;/strong&gt;: Optimized contrast and the introduction of stacked bar charts for clearer data visualization and trend analysis.
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=3212,height=2344,format=webp/_astro/monitoring-bar-charts.Bi-4BuXC.png&quot; alt=&quot;visual-example&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;3212&quot; height=&quot;2344&quot;&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Improved Accessibility &amp;amp; Usability&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Widget Search&lt;/strong&gt;: Added search functionality to multiple widgets, including Policies, Submitters, and Impersonation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actionable UI&lt;/strong&gt;: All available actions are now accessible via dedicated buttons.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;State Indicators&lt;/strong&gt;: Improved UI states to clearly communicate loading, empty datasets, and error conditions.
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=3178,height=664,format=webp/_astro/monitoring-buttons.DORPJvP_.png&quot; alt=&quot;buttons-example&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;3178&quot; height=&quot;664&quot;&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Granular Data Breakdowns&lt;/strong&gt;: New views for dispositions by month, malicious email details, link actions, and impersonations.
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=3202,height=1486,format=webp/_astro/monitoring-monthly-dispositions.CYuI5d9y.png&quot; alt=&quot;monthly-example&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;3202&quot; height=&quot;1486&quot;&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This applies to all Email Security packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Advantage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise + PhishGuard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Mon, 02 Feb 2026 11:05:33 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Cloudflare WAN, Magic Transit, Cloudflare One - BGP over GRE and IPsec tunnels</title><link>https://docs.infinitegaming.org/changelog/post/2026-01-30-bgp-over-tunnels/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-01-30-bgp-over-tunnels/</guid><description>&lt;p&gt;Magic WAN and Magic Transit customers can use the Cloudflare dashboard to configure and manage BGP peering between their networks and their Magic routing table when using IPsec and GRE tunnel on-ramps (beta).&lt;/p&gt;
&lt;p&gt;Using BGP peering allows customers to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automate the process of adding or removing networks and subnets.&lt;/li&gt;
&lt;li&gt;Take advantage of failure detection and session recovery features.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With this functionality, customers can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Establish an eBGP session between their devices and the Magic WAN / Magic Transit service when connected via IPsec and GRE tunnel on-ramps.&lt;/li&gt;
&lt;li&gt;Secure the session by MD5 authentication to prevent misconfigurations.&lt;/li&gt;
&lt;li&gt;Exchange routes dynamically between their devices and their Magic routing table.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For configuration details, refer to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/how-to/configure-routes/#configure-bgp-routes&quot;&gt;Configure BGP routes for Magic WAN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/magic-transit/how-to/configure-routes/#configure-bgp-routes&quot;&gt;Configure BGP routes for Magic Transit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Fri, 30 Jan 2026 00:00:00 GMT</pubDate><product>Cloudflare WAN</product><category>Cloudflare WAN</category><category>Magic Transit</category><category>Cloudflare One</category></item><item><title>Cloudflare One Client - WARP client for Windows (version 2026.1.89.1)</title><link>https://docs.infinitegaming.org/changelog/post/2026-01-27-warp-windows-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-01-27-warp-windows-beta/</guid><description>&lt;p&gt;A new Beta release for the Windows WARP client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/beta-releases/&quot;&gt;beta releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains minor fixes, improvements, and new features.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improvements to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/windows-multiuser/&quot;&gt;multi-user mode&lt;/a&gt;. Fixed an issue where when switching from a pre-login registration to a user registration, Mobile Device Management (MDM) configuration association could be lost.&lt;/li&gt;
&lt;li&gt;Added a new feature to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/#netbios-over-tcpip&quot;&gt;manage NetBIOS over TCP/IP&lt;/a&gt; functionality on the Windows client. NetBIOS over TCP/IP on the Windows client is now disabled by default and can be enabled in &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/device-profiles/&quot;&gt;device profile settings&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Fixed an issue causing failure of the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/#allow-users-to-enable-local-network-exclusion&quot;&gt;local network exclusion&lt;/a&gt; feature when configured with a timeout of &lt;code&gt;0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Improvement for the Windows &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/reusable-components/posture-checks/warp-client-checks/client-certificate/&quot;&gt;client certificate posture check&lt;/a&gt; to ensure logged results are from checks that run once users log in.&lt;/li&gt;
&lt;li&gt;Improvement for more accurate reporting of device colocation information in the Cloudflare One dashboard.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;For Windows 11 24H2 users, Microsoft has confirmed a regression that may lead to performance issues like mouse lag, audio cracking, or other slowdowns. Cloudflare recommends users experiencing these issues upgrade to a minimum &lt;a href=&quot;https://support.microsoft.com/en-us/topic/july-8-2025-kb5062553-os-build-26100-4652-523e69cb-051b-43c6-8376-6a76d6caeefd&quot;&gt;Windows 11 24H2 KB5062553&lt;/a&gt; or higher for resolution.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Devices with KB5055523 installed may receive a warning about &lt;code&gt;Win32/ClickFix.ABA&lt;/code&gt; being present in the installer. To resolve this false positive, update Microsoft Security Intelligence to &lt;a href=&quot;https://www.microsoft.com/en-us/wdsi/definitions/antimalware-definition-release-notes?requestVersion=1.429.19.0&quot;&gt;version 1.429.19.0&lt;/a&gt; or later.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DNS resolution may be broken when the following conditions are all true:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WARP is in Secure Web Gateway without DNS filtering (tunnel-only) mode.&lt;/li&gt;
&lt;li&gt;A custom DNS server address is configured on the primary network adapter.&lt;/li&gt;
&lt;li&gt;The custom DNS server address on the primary network adapter is changed while WARP is connected.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To work around this issue, reconnect the WARP client by toggling off and back on.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 27 Jan 2026 18:47:00 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - WARP client for macOS (version 2026.1.89.1)</title><link>https://docs.infinitegaming.org/changelog/post/2026-01-27-warp-macos-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-01-27-warp-macos-beta/</guid><description>&lt;p&gt;A new Beta release for the macOS WARP client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/beta-releases/&quot;&gt;beta releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains minor fixes and improvements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an issue causing failure of the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/#allow-users-to-enable-local-network-exclusion&quot;&gt;local network exclusion&lt;/a&gt; feature when configured with a timeout of &lt;code&gt;0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Improvement for more accurate reporting of device colocation information in the Cloudflare One dashboard.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 27 Jan 2026 18:46:59 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One, Cloudflare WAN - Configure Cloudflare source IPs (beta)</title><link>https://docs.infinitegaming.org/changelog/post/2026-01-27-configure-cloudflare-source-ips/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-01-27-configure-cloudflare-source-ips/</guid><description>&lt;p&gt;Cloudflare source IPs are the IP addresses used by Cloudflare services (such as Load Balancing, Gateway, and Browser Isolation) when sending traffic to your private networks.&lt;/p&gt;
&lt;p&gt;For customers using legacy mode routing, traffic to private networks is sourced from public Cloudflare IPs, which may cause IP conflicts. For customers using Unified Routing mode (beta), traffic to private networks is sourced from dedicated, non-Internet-routable private IPv4 range to ensure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Symmetric routing over private network connections&lt;/li&gt;
&lt;li&gt;Proper firewall state preservation&lt;/li&gt;
&lt;li&gt;Private traffic stays on secure paths&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Key details:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IPv4&lt;/strong&gt;: Sourced from &lt;code&gt;100.64.0.0/12&lt;/code&gt; by default, configurable to any &lt;code&gt;/12&lt;/code&gt; CIDR&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IPv6&lt;/strong&gt;: Sourced from &lt;code&gt;2606:4700:cf1:5000::/64&lt;/code&gt; (not configurable)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Affected connectors&lt;/strong&gt;: GRE, IPsec, CNI, WARP Connector, and WARP Client (Cloudflare Tunnel is not affected)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Configuring Cloudflare source IPs requires Unified Routing (beta) and the &lt;code&gt;Cloudflare One Networks Write&lt;/code&gt; permission.&lt;/p&gt;
&lt;p&gt;For configuration details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/how-to/configure-cloudflare-source-ips/&quot;&gt;Configure Cloudflare source IPs&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 27 Jan 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category><category>Cloudflare WAN</category></item><item><title>Cloudflare One, Access - Require Access protection for zones</title><link>https://docs.infinitegaming.org/changelog/post/2026-01-22-deny-by-default-for-zones/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-01-22-deny-by-default-for-zones/</guid><description>&lt;p&gt;You can now require Cloudflare Access protection for all hostnames in your account. When enabled, traffic to any hostname that does not have a matching Access application is automatically blocked.&lt;/p&gt;
&lt;p&gt;This deny-by-default approach prevents accidental exposure of internal resources to the public Internet. If a developer deploys a new application or creates a DNS record without configuring an Access application, the traffic is blocked rather than exposed.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2160,height=738,format=webp/_astro/require-cloudflare-access-protection.BAUmTYOs.png&quot; alt=&quot;Require Cloudflare Access protection in the dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2160&quot; height=&quot;738&quot;&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;how-it-works&quot;&gt;How it works&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#how-it-works&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Blocked by default&lt;/strong&gt;: Traffic to all hostnames in the account is blocked unless an Access application exists for that hostname.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Explicit access required&lt;/strong&gt;: To allow traffic, create an Access application with an Allow or Bypass policy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hostname exemptions&lt;/strong&gt;: You can exempt specific hostnames from this requirement.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To turn on this feature, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/access-settings/require-access-protection/&quot;&gt;Require Access protection&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 22 Jan 2026 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category><category>Access</category></item><item><title>Access - New granular API token permissions for Cloudflare Access</title><link>https://docs.infinitegaming.org/changelog/post/2026-01-22-granular-api-token-permissions/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-01-22-granular-api-token-permissions/</guid><description>&lt;p&gt;Three new API token permissions are available for Cloudflare Access, giving you finer-grained control when building automations and integrations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Access: Organizations Revoke&lt;/strong&gt; — Grants the ability to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/access-settings/session-management/#revoke-user-sessions&quot;&gt;revoke user sessions&lt;/a&gt; in a Zero Trust organization. Use this permission when you need a token that can terminate active sessions without broader write access to organization settings.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Access: Population Read&lt;/strong&gt; — Grants read access to the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/users/scim/&quot;&gt;SCIM users and groups&lt;/a&gt; synced from an identity provider to Cloudflare Access. Use this permission for tokens that only need to read synced user and group data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Access: Population Write&lt;/strong&gt; — Grants write access to the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/users/scim/&quot;&gt;SCIM users and groups&lt;/a&gt; synced from an identity provider to Cloudflare Access. Use this permission for tokens that need to create or modify synced user and group data.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These permissions are scoped at the account level and can be combined with existing Access permissions.&lt;/p&gt;
&lt;p&gt;For a full list of available permissions, refer to &lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/api/reference/permissions/&quot;&gt;API token permissions&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 22 Jan 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Workers - New Placement Hints for Workers</title><link>https://docs.infinitegaming.org/changelog/post/2026-01-22-explicit-placement-hints/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-01-22-explicit-placement-hints/</guid><description>
&lt;p&gt;You can now configure Workers to run close to infrastructure in legacy cloud regions to minimize latency to existing services and databases. This is most useful when your Worker makes multiple round trips.&lt;/p&gt;
&lt;p&gt;To &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/placement/#configure-explicit-placement-hints&quot;&gt;set a placement hint&lt;/a&gt;, set the &lt;code&gt;placement.region&lt;/code&gt; property in your Wrangler configuration file:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;placement&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;region&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;aws:us-east-1&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;placement&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;region = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;aws:us-east-1&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;Placement hints support Amazon Web Services (AWS), Google Cloud Platform (GCP), and Microsoft Azure region identifiers. Workers run in the &lt;a href=&quot;https://www.cloudflare.com/network/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare data center&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; with the lowest latency to the specified cloud region.&lt;/p&gt;
&lt;p&gt;If your existing infrastructure is not in these cloud providers, expose it to placement probes with &lt;code&gt;placement.host&lt;/code&gt; for layer 4 checks or &lt;code&gt;placement.hostname&lt;/code&gt; for layer 7 checks. These probes are designed to locate single-homed infrastructure and are not suitable for anycasted or multicasted resources.&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;placement&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;host&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my_database_host.com:5432&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;placement&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;host = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my_database_host.com:5432&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;placement&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;hostname&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my_api_server.com&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;placement&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;hostname = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my_api_server.com&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This is an extension of &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/placement/#enable-smart-placement&quot;&gt;Smart Placement&lt;/a&gt;, which automatically places your Workers closer to back-end APIs based on measured latency. When you do not know the location of your back-end APIs or have multiple back-end APIs, set &lt;code&gt;mode: &quot;smart&quot;&lt;/code&gt;:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;placement&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;mode&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;smart&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;placement&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;mode = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;smart&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description><pubDate>Thu, 22 Jan 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Use auxiliary Workers alongside full-stack frameworks</title><link>https://docs.infinitegaming.org/changelog/post/2026-01-20-auxiliary-workers/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-01-20-auxiliary-workers/</guid><description>&lt;p&gt;Auxiliary Workers are now fully supported when using full-stack frameworks, such as &lt;a href=&quot;https://docs.infinitegaming.org/workers/framework-guides/web-apps/react-router/&quot;&gt;React Router&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/workers/framework-guides/web-apps/tanstack-start/&quot;&gt;TanStack Start&lt;/a&gt;, that integrate with the &lt;a href=&quot;https://docs.infinitegaming.org/workers/vite-plugin/reference/api/&quot;&gt;Cloudflare Vite plugin&lt;/a&gt;.
They are included alongside the framework&apos;s build output in the build output directory.
Note that this feature requires Vite 7 or above.&lt;/p&gt;
&lt;p&gt;Auxiliary Workers are additional Workers that can be called via &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/bindings/service-bindings/&quot;&gt;service bindings&lt;/a&gt; from your main (entry) Worker.
They are defined in the plugin config, as in the example below:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;vite.config.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { defineConfig } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;vite&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { tanstackStart } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;@tanstack/react-start/plugin/vite&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { cloudflare } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;@cloudflare/vite-plugin&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; defineConfig&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	plugins: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;		tanstackStart&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;		cloudflare&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			viteEnvironment: { name: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;ssr&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			auxiliaryWorkers: [{ configPath: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./wrangler.aux.jsonc&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; }],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;See the Vite plugin &lt;a href=&quot;https://docs.infinitegaming.org/workers/vite-plugin/reference/api/&quot;&gt;API docs&lt;/a&gt; for more info.&lt;/p&gt;</description><pubDate>Tue, 20 Jan 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Import SQL files as additional modules by default</title><link>https://docs.infinitegaming.org/changelog/post/2026-01-20-sql-module-rule/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-01-20-sql-module-rule/</guid><description>&lt;p&gt;The &lt;code&gt;.sql&lt;/code&gt; file extension is now automatically configured to be importable in your Worker code when using &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/bundling/#including-non-javascript-modules&quot;&gt;Wrangler&lt;/a&gt; or the &lt;a href=&quot;https://docs.infinitegaming.org/workers/vite-plugin/reference/non-javascript-modules/&quot;&gt;Cloudflare Vite plugin&lt;/a&gt;.
This is particular useful for importing migrations in Durable Objects and means you no longer need to configure custom rules when using &lt;a href=&quot;https://orm.drizzle.team/docs/connect-cloudflare-do&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Drizzle&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;SQL files are imported as JavaScript strings:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// `example` will be a JavaScript string&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; example &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;./example.sql&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;</description><pubDate>Tue, 20 Jan 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Magic Transit, Cloudflare Network Firewall, Cloudflare WAN, Network Flow - Network Services navigation update</title><link>https://docs.infinitegaming.org/changelog/post/2026-01-15-networking-navigation-update/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-01-15-networking-navigation-update/</guid><description>&lt;p&gt;The Network Services menu structure in Cloudflare&apos;s dashboard has been updated to reflect solutions and capabilities instead of product names. This will make it easier for you to find what you need and better reflects how our services work together.&lt;/p&gt;
&lt;p&gt;Your existing configurations will remain the same, and you will have access to all of the same features and functionality.&lt;/p&gt;
&lt;p&gt;The changes visible in your dashboard may vary based on the products you use. Overall, changes relate to &lt;a href=&quot;https://developers.cloudflare.com/magic-transit/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Magic Transit&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, &lt;a href=&quot;https://developers.cloudflare.com/magic-wan/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Magic WAN&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, and &lt;a href=&quot;https://developers.cloudflare.com/cloudflare-network-firewall/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Magic Firewall&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Summary of changes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A new &lt;strong&gt;Overview&lt;/strong&gt; page provides access to the most common tasks across Magic Transit and Magic WAN.&lt;/li&gt;
&lt;li&gt;Product names have been removed from top-level navigation.&lt;/li&gt;
&lt;li&gt;Magic Transit and Magic WAN configuration is now organized under &lt;strong&gt;Routes&lt;/strong&gt; and &lt;strong&gt;Connectors&lt;/strong&gt;. For example, you will find IP Prefixes under &lt;strong&gt;Routes&lt;/strong&gt;, and your GRE/IPsec Tunnels under &lt;strong&gt;Connectors.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Magic Firewall policies are now called &lt;strong&gt;Firewall Policies.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Magic WAN Connectors and Connector On-Ramps are now referenced in the dashboard as &lt;strong&gt;Appliances&lt;/strong&gt; and &lt;strong&gt;Appliance profiles.&lt;/strong&gt; They can be found under &lt;strong&gt;Connectors &amp;gt; Appliances.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Network analytics, network health, and real-time analytics are now available under &lt;strong&gt;Insights.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Packet Captures are found under &lt;strong&gt;Insights &amp;gt; Diagnostics.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;You can manage your Sites from &lt;strong&gt;Insights &amp;gt; Network health.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;You can find Magic Network Monitoring under &lt;strong&gt;Insights &amp;gt; Network flow&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you would like to provide feedback, complete &lt;a href=&quot;https://forms.gle/htWyjRsTjw1usdis5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;this form&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. You can also find these details in the January 7, 2026 email titled &lt;strong&gt;[FYI] Upcoming Network Services Dashboard Navigation Update&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Preview:
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=3000,height=1052,format=webp/_astro/networking-overview-and-navigation.CeMgEFaZ.png&quot; alt=&quot;Networking Navigation&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;3000&quot; height=&quot;1052&quot;&gt;&lt;/p&gt;</description><pubDate>Thu, 15 Jan 2026 00:00:00 GMT</pubDate><product>Magic Transit</product><category>Magic Transit</category><category>Cloudflare Network Firewall</category><category>Cloudflare WAN</category><category>Network Flow</category></item><item><title>Risk Score - Support for CrowdStrike device scores in User Risk Scoring</title><link>https://docs.infinitegaming.org/changelog/post/2026-1-15-crowdstrike-score/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-1-15-crowdstrike-score/</guid><description>&lt;p&gt;Cloudflare One has expanded its [User Risk Scoring] (/cloudflare-one/insights/risk-score/) capabilities by introducing two new behaviors for organizations using the [CrowdStrike integration] (/cloudflare-one/integrations/service-providers/crowdstrike/).&lt;/p&gt;
&lt;p&gt;Administrators can now automatically escalate the risk score of a user if their device matches specific CrowdStrike Zero Trust Assessment (ZTA) score ranges. This allows for more granular security policies that respond dynamically to the health of the endpoint.&lt;/p&gt;
&lt;p&gt;New risk behaviors
The following risk scoring behaviors are now available:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CrowdStrike low device score: Automatically increases a user&apos;s risk score when the connected device reports a &quot;Low&quot; score from CrowdStrike.&lt;/li&gt;
&lt;li&gt;CrowdStrike medium device score: Automatically increases a user&apos;s risk score when the connected device reports a &quot;Medium&quot; score from CrowdStrike.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These scores are derived from [CrowdStrike device posture attributes] (/cloudflare-one/integrations/service-providers/crowdstrike/#device-posture-attributes), including OS signals and sensor configurations.&lt;/p&gt;</description><pubDate>Thu, 15 Jan 2026 00:00:00 GMT</pubDate><product>Risk Score</product><category>Risk Score</category></item><item><title>Cloudflare Tunnel, Cloudflare Tunnel for SASE - Verify WARP Connector connectivity with a simple ping</title><link>https://docs.infinitegaming.org/changelog/post/2026-01-15-warp-connector-ping-support/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-01-15-warp-connector-ping-support/</guid><description>&lt;p&gt;We have made it easier to validate connectivity when deploying &lt;a href=&quot;https://docs.infinitegaming.org/mesh/&quot;&gt;WARP Connector&lt;/a&gt; as part of your &lt;a href=&quot;https://docs.infinitegaming.org/reference-architecture/architectures/sase/#connecting-networks&quot;&gt;software-defined private network&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can now &lt;code&gt;ping&lt;/code&gt; the WARP Connector host directly on its LAN IP address immediately after installation. This provides a fast, familiar way to confirm that the Connector is online and reachable within your network before testing access to downstream services.&lt;/p&gt;
&lt;p&gt;Starting with &lt;a href=&quot;https://docs.infinitegaming.org/changelog/2026-01-13-warp-linux-ga/&quot;&gt;version 2025.10.186.0&lt;/a&gt;, WARP Connector responds to traffic addressed to its own LAN IP, giving you immediate visibility into Connector reachability.&lt;/p&gt;
&lt;p&gt;Learn more about deploying &lt;a href=&quot;https://docs.infinitegaming.org/mesh/&quot;&gt;WARP Connector&lt;/a&gt; and building private network connectivity with &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/&quot;&gt;Cloudflare One&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 15 Jan 2026 00:00:00 GMT</pubDate><product>Cloudflare Tunnel</product><category>Cloudflare Tunnel</category><category>Cloudflare Tunnel for SASE</category></item><item><title>Cloudflare One Client - WARP client for Windows (version 2025.10.186.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-01-13-warp-windows-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-01-13-warp-windows-ga/</guid><description>&lt;p&gt;A new GA release for the Windows WARP client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains minor fixes, improvements, and new features. New features include the ability to manage WARP client connectivity for all devices in your fleet using an &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/emergency-disconnect/#set-up-external-emergency-disconnect&quot;&gt;external signal&lt;/a&gt;, and a new WARP client device posture check for &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/reusable-components/posture-checks/warp-client-checks/antivirus/&quot;&gt;Antivirus&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added a new feature to manage WARP client connectivity for all devices using an &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/emergency-disconnect/#set-up-external-emergency-disconnect&quot;&gt;external signal&lt;/a&gt;. This feature allows administrators to send a global signal from an on-premises HTTPS endpoint that force disconnects or reconnects all WARP clients in an account based on configuration set on the endpoint.&lt;/li&gt;
&lt;li&gt;Fixed an issue that caused occasional audio degradation and increased CPU usage on Windows by optimizing route configurations for large &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/route-traffic/split-tunnels/#domain-based-split-tunnels&quot;&gt;domain-based split tunnel rules&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/route-traffic/local-domains/&quot;&gt;Local Domain Fallback&lt;/a&gt; feature has been fixed for devices running WARP client version 2025.4.929.0 and newer. Previously, these devices could experience failures with Local Domain Fallback unless a fallback server was explicitly configured. This configuration is no longer a requirement for the feature to function correctly.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/modes/#local-proxy-mode&quot;&gt;Proxy mode&lt;/a&gt; now supports transparent HTTP proxying in addition to CONNECT-based proxying.&lt;/li&gt;
&lt;li&gt;Fixed an issue where sending large messages to the daemon by Inter-Process Communication (IPC) could cause the daemon to fail and result in service interruptions.&lt;/li&gt;
&lt;li&gt;Added support for a new WARP client device posture check for &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/reusable-components/posture-checks/warp-client-checks/antivirus/&quot;&gt;Antivirus&lt;/a&gt;. The check confirms the presence of an antivirus program on a Windows device with the option to check if the antivirus is up to date.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;For Windows 11 24H2 users, Microsoft has confirmed a regression that may lead to performance issues like mouse lag, audio cracking, or other slowdowns. Cloudflare recommends users experiencing these issues upgrade to a minimum &lt;a href=&quot;https://support.microsoft.com/en-us/topic/july-8-2025-kb5062553-os-build-26100-4652-523e69cb-051b-43c6-8376-6a76d6caeefd&quot;&gt;Windows 11 24H2 KB5062553&lt;/a&gt; or higher for resolution.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Devices with KB5055523 installed may receive a warning about &lt;code&gt;Win32/ClickFix.ABA&lt;/code&gt; being present in the installer. To resolve this false positive, update Microsoft Security Intelligence to &lt;a href=&quot;https://www.microsoft.com/en-us/wdsi/definitions/antimalware-definition-release-notes?requestVersion=1.429.19.0&quot;&gt;version 1.429.19.0&lt;/a&gt; or later.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DNS resolution may be broken when the following conditions are all true:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WARP is in Secure Web Gateway without DNS filtering (tunnel-only) mode.&lt;/li&gt;
&lt;li&gt;A custom DNS server address is configured on the primary network adapter.&lt;/li&gt;
&lt;li&gt;The custom DNS server address on the primary network adapter is changed while WARP is connected.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To work around this issue, reconnect the WARP client by toggling off and back on.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 13 Jan 2026 15:48:19 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - WARP client for macOS (version 2025.10.186.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-01-13-warp-macos-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-01-13-warp-macos-ga/</guid><description>&lt;p&gt;A new GA release for the macOS WARP client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains minor fixes, improvements, and new features, including the ability to manage WARP client connectivity for all devices in your fleet using an &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/emergency-disconnect/#set-up-external-emergency-disconnect&quot;&gt;external signal&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/route-traffic/local-domains/&quot;&gt;Local Domain Fallback&lt;/a&gt; feature has been fixed for devices running WARP client version 2025.4.929.0 and newer. Previously, these devices could experience failures with Local Domain Fallback unless a fallback server was explicitly configured. This configuration is no longer a requirement for the feature to function correctly.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/modes/#local-proxy-mode&quot;&gt;Proxy mode&lt;/a&gt; now supports transparent HTTP proxying in addition to CONNECT-based proxying.&lt;/li&gt;
&lt;li&gt;Added a new feature to manage WARP client connectivity for all devices using an &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/emergency-disconnect/#set-up-external-emergency-disconnect&quot;&gt;external signal&lt;/a&gt;. This feature allows administrators to send a global signal from an on-premises HTTPS endpoint that force disconnects or reconnects all WARP clients in an account based on configuration set on the endpoint.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 13 Jan 2026 15:48:17 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - WARP client for Linux (version 2025.10.186.0)</title><link>https://docs.infinitegaming.org/changelog/post/2026-01-13-warp-linux-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-01-13-warp-linux-ga/</guid><description>&lt;p&gt;A new GA release for the Linux WARP client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains minor fixes, improvements, and new features, including the ability to manage WARP client connectivity for all devices in your fleet using an &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/emergency-disconnect/#set-up-external-emergency-disconnect&quot;&gt;external signal&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;WARP client version 2025.8.779.0 introduced an updated public key for Linux packages. The public key must be updated if it was installed before September 12, 2025 to ensure the repository remains functional after December 4, 2025. Instructions to make this update are available at &lt;a href=&quot;https://pkg.cloudflareclient.com&quot;&gt;pkg.cloudflareclient.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/route-traffic/local-domains/&quot;&gt;Local Domain Fallback&lt;/a&gt; feature has been fixed for devices running WARP client version 2025.4.929.0 and newer. Previously, these devices could experience failures with Local Domain Fallback unless a fallback server was explicitly configured. This configuration is no longer a requirement for the feature to function correctly.&lt;/li&gt;
&lt;li&gt;Linux &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/reusable-components/posture-checks/warp-client-checks/disk-encryption/&quot;&gt;disk encryption posture check&lt;/a&gt; now supports non-filesystem encryption types like &lt;code&gt;dm-crypt&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/modes/#local-proxy-mode&quot;&gt;Proxy mode&lt;/a&gt; now supports transparent HTTP proxying in addition to CONNECT-based proxying.&lt;/li&gt;
&lt;li&gt;Fixed an issue where the GUI becomes unresponsive when the &lt;strong&gt;Re-Authenticate in browser&lt;/strong&gt; button is clicked.&lt;/li&gt;
&lt;li&gt;Added a new feature to manage WARP client connectivity for all devices using an &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/emergency-disconnect/#set-up-external-emergency-disconnect&quot;&gt;external signal&lt;/a&gt;. This feature allows administrators to send a global signal from an on-premises HTTPS endpoint that force disconnects or reconnects all WARP clients in an account based on configuration set on the endpoint.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 13 Jan 2026 01:53:14 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Workers - `wrangler types` now generates types for all environments</title><link>https://docs.infinitegaming.org/changelog/post/2026-01-13-wrangler-types-multi-environment/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-01-13-wrangler-types-multi-environment/</guid><description>&lt;p&gt;The &lt;code&gt;wrangler types&lt;/code&gt; command now generates TypeScript types for bindings from &lt;strong&gt;all environments&lt;/strong&gt; defined in your Wrangler configuration file by default.&lt;/p&gt;
&lt;p&gt;Previously, &lt;code&gt;wrangler types&lt;/code&gt; only generated types for bindings in the top-level configuration (or a single environment when using the &lt;code&gt;--env&lt;/code&gt; flag). This meant that if you had environment-specific bindings — for example, a KV namespace only in production or an R2 bucket only in staging — those bindings would be missing from your generated types, causing TypeScript errors when accessing them.&lt;/p&gt;
&lt;p&gt;Now, running &lt;code&gt;wrangler types&lt;/code&gt; collects bindings from all environments and includes them in the generated &lt;code&gt;Env&lt;/code&gt; type. This ensures your types are complete regardless of which environment you deploy to.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;generating-types-for-a-specific-environment&quot;&gt;Generating types for a specific environment&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#generating-types-for-a-specific-environment&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;If you want the previous behavior of generating types for only a specific environment, you can use the &lt;code&gt;--env&lt;/code&gt; flag:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; types&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --env&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; production&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Learn more about &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/general/#types&quot;&gt;generating types for your Worker&lt;/a&gt; in the Wrangler documentation.&lt;/p&gt;</description><pubDate>Tue, 13 Jan 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Email security - Enhanced visibility for post-delivery actions</title><link>https://docs.infinitegaming.org/changelog/post/2026-01-12-enhanced-visibility-post-delivery-actions/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-01-12-enhanced-visibility-post-delivery-actions/</guid><description>&lt;p&gt;The Action Log now provides enriched data for post-delivery actions to improve troubleshooting. In addition to success confirmations, failed actions now display the targeted Destination folder and a specific failure reason within the Activity field.&lt;/p&gt;
&lt;aside role=&quot;note&quot; aria-label=&quot;Note&quot; class=&quot;aside-card flex items-start gap-3 rounded-lg px-4 py-3 my-4&quot; style=&quot;--_c: var(--nb-info); --_t: var(--nb-info-muted);&quot; data-astro-cid-znle5jil&gt;&lt;span class=&quot;flex h-[1.375em] shrink-0 items-center&quot; aria-hidden=&quot;true&quot; data-astro-cid-znle5jil&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[1em] w-[1em]&quot; data-astro-cid-znle5jil=&quot;true&quot; data-icon=&quot;ph:info&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24m0 192a88 88 0 1 1 88-88a88.1 88.1 0 0 1-88 88m16-40a8 8 0 0 1-8 8a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 8 8m-32-92a12 12 0 1 1 12 12a12 12 0 0 1-12-12&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div class=&quot;flex min-w-0 flex-1 flex-col gap-0.5&quot; data-astro-cid-znle5jil&gt;&lt;p class=&quot;m-0 text-base leading-snug font-semibold&quot; data-astro-cid-znle5jil&gt;Note&lt;/p&gt;&lt;div class=&quot;aside-card-body text-sm leading-normal&quot; data-astro-cid-znle5jil&gt;&lt;p&gt;Error messages will vary depending on whether you are using Google Workspace or Microsoft 365.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2348,height=1692,format=webp/_astro/enhanced-visibility-post-delivery-actions.BNiyPtJU.png&quot; alt=&quot;failure-log-example&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2348&quot; height=&quot;1692&quot;&gt;
&lt;p&gt;This update allows you to see the full lifecycle of a failed action. For instance, if an administrator tries to move an email that has already been deleted or moved manually, the log will now show the multiple retry attempts and the specific destination error.&lt;/p&gt;
&lt;p&gt;This applies to all Email Security packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise + PhishGuard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Mon, 12 Jan 2026 11:15:33 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Workers - Validate your generated types with `wrangler types --check`</title><link>https://docs.infinitegaming.org/changelog/post/2026-01-11-wrangler-types-check/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-01-11-wrangler-types-check/</guid><description>&lt;p&gt;Wrangler now supports a &lt;code&gt;--check&lt;/code&gt; flag for the &lt;code&gt;wrangler types&lt;/code&gt; command. This flag validates that your generated types are up to date without writing any changes to disk.&lt;/p&gt;
&lt;p&gt;This is useful in CI/CD pipelines where you want to ensure that developers have regenerated their types after making changes to their Wrangler configuration. If the types are out of date, the command will exit with a non-zero status code.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;npx&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; types&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --check&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;If your types are up to date, the command will succeed silently. If they are out of date, you&apos;ll see an error message indicating which files need to be regenerated.&lt;/p&gt;
&lt;p&gt;For more information, see the &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/general/#types&quot;&gt;Wrangler types documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 12 Jan 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers, Queues - Get notified when your Workers builds succeed or fail</title><link>https://docs.infinitegaming.org/changelog/post/2025-12-11-builds-event-subscriptions/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-12-11-builds-event-subscriptions/</guid><description>&lt;p&gt;You can now receive notifications when your Workers&apos; builds start, succeed, fail, or get cancelled using &lt;a href=&quot;https://docs.infinitegaming.org/queues/event-subscriptions/&quot;&gt;Event Subscriptions&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/&quot;&gt;Workers Builds&lt;/a&gt; publishes events to a &lt;a href=&quot;https://docs.infinitegaming.org/queues/&quot;&gt;Queue&lt;/a&gt; that your Worker can read messages from, and then send notifications wherever you need — Slack, Discord, email, or any webhook endpoint.&lt;/p&gt;
&lt;p&gt;You can deploy &lt;a href=&quot;https://github.com/cloudflare/templates/tree/main/workers-builds-notifications-template&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;this Worker&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; to your own Cloudflare account to send build notifications to Slack:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://deploy.workers.cloudflare.com/?url=https://github.com/cloudflare/templates/tree/main/workers-builds-notifications-template&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;img src=&quot;https://deploy.workers.cloudflare.com/button&quot; alt=&quot;Deploy to Cloudflare&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The template includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Build status with Preview/Live URLs for successful deployments&lt;/li&gt;
&lt;li&gt;Inline error messages for failed builds&lt;/li&gt;
&lt;li&gt;Branch, commit hash, and author name&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1700,height=1088,format=webp/_astro/builds-notifications-slack.rcRiU95L.png&quot; alt=&quot;Slack notifications showing build events&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1700&quot; height=&quot;1088&quot;&gt;
&lt;p&gt;For setup instructions, refer to the &lt;a href=&quot;https://github.com/cloudflare/templates/tree/main/workers-builds-notifications-template#readme&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;template README&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; or the &lt;a href=&quot;https://docs.infinitegaming.org/queues/event-subscriptions/manage-event-subscriptions/&quot;&gt;Event Subscriptions documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 09 Jan 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category><category>Queues</category></item><item><title>Workers - Shell tab completions for Wrangler CLI</title><link>https://docs.infinitegaming.org/changelog/post/2026-01-09-wrangler-tab-completion/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-01-09-wrangler-tab-completion/</guid><description>&lt;p&gt;Wrangler now includes built-in shell tab completion support, making it faster and easier to navigate commands without memorizing every option. Press Tab as you type to autocomplete commands, subcommands, flags, and even option values like log levels.&lt;/p&gt;
&lt;p&gt;Tab completions are supported for Bash, Zsh, Fish, and PowerShell.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;setup&quot;&gt;Setup&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#setup&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Generate the completion script for your shell and add it to your configuration file:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Bash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; complete&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; bash&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; &amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; ~/.bashrc&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Zsh&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; complete&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; zsh&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; &amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; ~/.zshrc&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Fish&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; complete&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; fish&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; &amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; ~/.config/fish/config.fish&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# PowerShell&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; complete&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; powershell&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; &amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; $PROFILE&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;After adding the script, restart your terminal or source your configuration file for the changes to take effect. Then you can simply press Tab to see available completions:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; d&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;TA&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;B&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;          # completes to &apos;deploy&apos;, &apos;dev&apos;, &apos;d1&apos;, etc.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; kv&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;TA&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;B&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;        # shows subcommands: namespace, key, bulk&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Tab completions are dynamically generated from Wrangler&apos;s command registry, so they stay up-to-date as new commands and options are added. This feature is powered by &lt;a href=&quot;https://github.com/bombshell-dev/tab/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;@bomb.sh/tab&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;See the &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/general/#complete&quot;&gt;&lt;code&gt;wrangler complete&lt;/code&gt; documentation&lt;/a&gt; for more details.&lt;/p&gt;</description><pubDate>Fri, 09 Jan 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Access - Cloudflare admin activity logs capture creation of DNS over HTTP (DoH) users</title><link>https://docs.infinitegaming.org/changelog/post/2026-01-08-Access-audit-log-for-DoH-users/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-01-08-Access-audit-log-for-DoH-users/</guid><description>&lt;p&gt;Cloudflare &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/logs/&quot;&gt;admin activity logs&lt;/a&gt; now capture each time a &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/resolvers-and-proxies/dns/dns-over-https/&quot;&gt;DNS over HTTP (DoH) user&lt;/a&gt; is created.&lt;/p&gt;
&lt;p&gt;These logs can be viewed from the &lt;a href=&quot;https://one.dash.cloudflare.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare One dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, pulled via the &lt;a href=&quot;https://docs.infinitegaming.org/api/&quot;&gt;Cloudflare API&lt;/a&gt;, and exported through &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/logs/logpush/&quot;&gt;Logpush&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 08 Jan 2026 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Workers Analytics Engine, Workers - Workers Analytics Engine SQL now supports filtering using HAVING and LIKE</title><link>https://docs.infinitegaming.org/changelog/post/2026-01-07-analytics-engine-support-for-like-and-having/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-01-07-analytics-engine-support-for-like-and-having/</guid><description>&lt;p&gt;You can now use the &lt;code&gt;HAVING&lt;/code&gt; clause and &lt;code&gt;LIKE&lt;/code&gt; pattern matching operators in &lt;a href=&quot;https://developers.cloudflare.com/analytics/analytics-engine/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Workers Analytics Engine&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Workers Analytics Engine allows you to ingest and store high-cardinality data at scale and query your data through a simple SQL API.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;filtering-using-having&quot;&gt;Filtering using &lt;code&gt;HAVING&lt;/code&gt;&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#filtering-using-having&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;HAVING&lt;/code&gt; clause complements the &lt;code&gt;WHERE&lt;/code&gt; clause by enabling you to filter groups based on aggregate values. While &lt;code&gt;WHERE&lt;/code&gt; filters rows before aggregation, &lt;code&gt;HAVING&lt;/code&gt; filters groups after aggregation is complete.&lt;/p&gt;
&lt;p&gt;You can use &lt;code&gt;HAVING&lt;/code&gt; to filter groups where the average exceeds a threshold:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sql&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot; data-nb-lang=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;SELECT&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    blob1 &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;AS&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; probe_name,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;    avg&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(double1) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;AS&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; average_temp&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;FROM&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; temperature_readings&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;GROUP BY&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; probe_name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;HAVING&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; average_temp &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; 10&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You can also filter groups based on aggregates such as the number of items in the group:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sql&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot; data-nb-lang=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;SELECT&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    blob1 &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;AS&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; probe_name,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;    count&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;() &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;AS&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; num_readings&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;FROM&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; temperature_readings&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;GROUP BY&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; probe_name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;HAVING&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; num_readings &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; 100&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;pattern-matching-using-like&quot;&gt;Pattern matching using &lt;code&gt;LIKE&lt;/code&gt;&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#pattern-matching-using-like&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The new pattern matching operators enable you to search for strings that match specific patterns using wildcard characters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;LIKE&lt;/code&gt; - case-sensitive pattern matching&lt;/li&gt;
&lt;li&gt;&lt;code&gt;NOT LIKE&lt;/code&gt; - case-sensitive pattern exclusion&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ILIKE&lt;/code&gt; - case-insensitive pattern matching&lt;/li&gt;
&lt;li&gt;&lt;code&gt;NOT ILIKE&lt;/code&gt; - case-insensitive pattern exclusion&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pattern matching supports two wildcard characters: &lt;code&gt;%&lt;/code&gt; (matches zero or more characters) and &lt;code&gt;_&lt;/code&gt; (matches exactly one character).&lt;/p&gt;
&lt;p&gt;You can match strings starting with a prefix:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sql&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot; data-nb-lang=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;SELECT&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; *&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;FROM&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; logs&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;WHERE&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; blob1 &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;LIKE&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &apos;error%&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You can also match file extensions (case-insensitive):&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sql&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot; data-nb-lang=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;SELECT&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; *&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;FROM&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; requests&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;WHERE&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; blob2 ILIKE &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;%.jpg&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Another example is excluding strings containing specific text:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sql&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot; data-nb-lang=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;SELECT&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; *&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;FROM&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; events&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;WHERE&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; blob3 &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;NOT&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; ILIKE &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;%debug%&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;ready-to-get-started&quot;&gt;Ready to get started?&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#ready-to-get-started&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Learn more about the &lt;a href=&quot;https://docs.infinitegaming.org/analytics/analytics-engine/sql-reference/statements/#having-clause&quot;&gt;&lt;code&gt;HAVING&lt;/code&gt; clause&lt;/a&gt; or &lt;a href=&quot;https://docs.infinitegaming.org/analytics/analytics-engine/sql-reference/operators/#pattern-matching-operators&quot;&gt;pattern matching operators&lt;/a&gt; in the Workers Analytics Engine SQL reference documentation.&lt;/p&gt;</description><pubDate>Wed, 07 Jan 2026 00:00:00 GMT</pubDate><product>Workers Analytics Engine</product><category>Workers Analytics Engine</category><category>Workers</category></item><item><title>Workers - Build microfrontend applications on Workers</title><link>https://docs.infinitegaming.org/changelog/post/2026-01-01-microfrontends/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2026-01-01-microfrontends/</guid><description>
&lt;p&gt;You can now deploy microfrontends to Cloudflare, splitting a single application into smaller, independently deployable units that render as one cohesive application. This lets different teams using different frameworks develop, test, and deploy each microfrontend without coordinating releases.&lt;/p&gt;
&lt;p&gt;Microfrontends solve several challenges for large-scale applications:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Independent deployments&lt;/strong&gt;: Teams deploy updates on their own schedule without redeploying the entire application&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Framework flexibility&lt;/strong&gt;: Build multi-framework applications (for example, Astro, Remix, and Next.js in one app)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gradual migration&lt;/strong&gt;: Migrate from a monolith to a distributed architecture incrementally&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Create a microfrontend project:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/workers-and-pages/create?type=vmfe&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;img src=&quot;https://deploy.workers.cloudflare.com/button&quot; alt=&quot;Deploy to Cloudflare&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This template automatically creates a router worker with pre-configured routing logic, and lets you configure &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/bindings/service-bindings/&quot;&gt;Service bindings&lt;/a&gt; to Workers you have already deployed to your Cloudflare account. The router Worker analyzes incoming requests, matches them against configured routes, and forwards requests to the appropriate microfrontend via service bindings. The router automatically rewrites HTML, CSS, and headers to ensure assets load correctly from each microfrontend&apos;s mount path. The router includes advanced features like preloading for faster navigation between microfrontends, smooth page transitions using the View Transitions API, and automatic path rewriting for assets, redirects, and cookies.&lt;/p&gt;
&lt;p&gt;Each microfrontend can be a full-framework application, a static site with Workers Static Assets, or any other Worker-based application.&lt;/p&gt;
&lt;p&gt;Get started with the &lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/workers-and-pages/create?type=vmfe&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;microfrontends template&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, or read the &lt;a href=&quot;https://docs.infinitegaming.org/workers/framework-guides/web-apps/microfrontends/&quot;&gt;microfrontends documentation&lt;/a&gt; for implementation details.&lt;/p&gt;</description><pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare One Appliance, Cloudflare One, Cloudflare WAN - Breakout traffic visibility via NetFlow</title><link>https://docs.infinitegaming.org/changelog/post/2025-12-31-connector-breakout-traffic-netflow/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-12-31-connector-breakout-traffic-netflow/</guid><description>&lt;p&gt;Magic WAN Connector now exports NetFlow data for breakout traffic to Magic Network Monitoring (MNM), providing visibility into traffic that bypasses Cloudflare&apos;s security filtering.&lt;/p&gt;
&lt;p&gt;This feature allows you to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Monitor breakout traffic statistics in the Cloudflare dashboard.&lt;/li&gt;
&lt;li&gt;View traffic patterns for applications configured to bypass Cloudflare.&lt;/li&gt;
&lt;li&gt;Maintain visibility across all traffic passing through your Magic WAN Connector.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/analytics/netflow-analytics/&quot;&gt;NetFlow statistics&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 31 Dec 2025 00:00:00 GMT</pubDate><product>Cloudflare One Appliance</product><category>Cloudflare One Appliance</category><category>Cloudflare One</category><category>Cloudflare WAN</category></item><item><title>Workers - Static prerendering support for TanStack Start</title><link>https://docs.infinitegaming.org/changelog/post/2025-12-19-tanstack-start-prerendering/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-12-19-tanstack-start-prerendering/</guid><description>&lt;p&gt;&lt;a href=&quot;https://tanstack.com/start/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;TanStack Start&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; apps can now prerender routes to static HTML at build time with access to build time environment variables
and bindings,  and serve them as &lt;a href=&quot;https://docs.infinitegaming.org/workers/static-assets/&quot;&gt;static assets&lt;/a&gt;. To enable prerendering, configure the &lt;code&gt;prerender&lt;/code&gt; option of the TanStack Start plugin in your Vite config:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;vite.config.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { defineConfig } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;vite&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { cloudflare } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;@cloudflare/vite-plugin&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { tanstackStart } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;@tanstack/react-start/plugin/vite&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; defineConfig&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  plugins: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;    cloudflare&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({ viteEnvironment: { name: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;ssr&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; } }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;    tanstackStart&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;      prerender: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;        enabled: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;This feature requires &lt;code&gt;@tanstack/react-start&lt;/code&gt; v1.138.0 or later. See the &lt;a href=&quot;https://docs.infinitegaming.org/workers/framework-guides/web-apps/tanstack-start/#static-prerendering&quot;&gt;TanStack Start framework guide&lt;/a&gt; for more details.&lt;/p&gt;</description><pubDate>Fri, 19 Dec 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Build image policies for Workers Builds and Cloudflare Pages</title><link>https://docs.infinitegaming.org/changelog/post/2025-12-01-build-image-policies-dev-plat/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-12-01-build-image-policies-dev-plat/</guid><description>&lt;p&gt;We&apos;ve published build image policies for &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/build-image/#build-image-policy&quot;&gt;Workers Builds&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/pages/configuration/build-image/#build-image-policy&quot;&gt;Cloudflare Pages&lt;/a&gt;, which establish:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Minor version updates&lt;/strong&gt;: We typically update preinstalled software to the latest available minor version without notice. For tools that don&apos;t follow semantic versioning (e.g., Bun or Hugo), we provide 3 months’ notice.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Major version updates&lt;/strong&gt;: Before preinstalled software reaches end-of-life, we update to the next stable LTS version with 3 months’ notice.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build image version deprecation (Pages only)&lt;/strong&gt;: We provide 6 months’ notice before deprecation. Projects on v1 or v2 will be automatically moved to v3 on their specified deprecation dates.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To prepare for updates, monitor the &lt;a href=&quot;https://developers.cloudflare.com/changelog/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Changelog&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, dashboard notifications, and email. You can also &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/build-image/#overriding-default-versions&quot;&gt;override default versions&lt;/a&gt; to maintain specific versions.&lt;/p&gt;</description><pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Retrieve your authentication token with `wrangler auth token`</title><link>https://docs.infinitegaming.org/changelog/post/2025-12-18-wrangler-auth-token/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-12-18-wrangler-auth-token/</guid><description>&lt;p&gt;Wrangler now includes a new &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/general/#auth-token&quot;&gt;&lt;code&gt;wrangler auth token&lt;/code&gt;&lt;/a&gt; command that retrieves your current authentication token or credentials for use with other tools and scripts.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; auth&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; token&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The command returns whichever authentication method is currently configured, in priority order: API token from &lt;code&gt;CLOUDFLARE_API_TOKEN&lt;/code&gt;, or OAuth token from &lt;code&gt;wrangler login&lt;/code&gt; (automatically refreshed if expired).&lt;/p&gt;
&lt;p&gt;Use the &lt;code&gt;--json&lt;/code&gt; flag to get structured output including the token type:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; auth&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; token&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --json&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The JSON output includes the authentication type:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// API token&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{ &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;&quot;type&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;api_token&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;&quot;token&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;...&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// OAuth token&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{ &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;&quot;type&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;oauth&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;&quot;token&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;...&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// API key/email (only available with --json)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{ &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;&quot;type&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;api_key&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;&quot;key&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;...&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;&quot;email&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;...&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;API key/email credentials from &lt;code&gt;CLOUDFLARE_API_KEY&lt;/code&gt; and &lt;code&gt;CLOUDFLARE_EMAIL&lt;/code&gt; require the &lt;code&gt;--json&lt;/code&gt; flag since this method uses two values instead of a single token.&lt;/p&gt;</description><pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Gateway, Cloudflare One - Shadow IT - domain level SaaS analytics</title><link>https://docs.infinitegaming.org/changelog/post/2025-12-17-shadow-it-domain-analytics/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-12-17-shadow-it-domain-analytics/</guid><description>&lt;p&gt;Zero Trust has again upgraded its &lt;strong&gt;Shadow IT analytics&lt;/strong&gt;, providing you with unprecedented visibility into your organizations use of SaaS tools. With this dashboard, you can review who is using an application and volumes of data transfer to the application.&lt;/p&gt;
&lt;p&gt;With this update, you can review data transfer metrics at the domain level, rather than just the application level, providing more granular insight into your data transfer patterns.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1800,height=452,format=webp/_astro/shadow-it-domain.DoZnGAtf.png&quot; alt=&quot;New Domain Level Metrics&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;452&quot;&gt;
&lt;p&gt;These metrics can be filtered by all available filters on the dashboard, including user, application, or content category.&lt;/p&gt;
&lt;p&gt;Both the analytics and policies are accessible in the Cloudflare &lt;a href=&quot;https://one.dash.cloudflare.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Zero Trust dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, empowering organizations with better visibility and control.&lt;/p&gt;</description><pubDate>Wed, 17 Dec 2025 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category><category>Cloudflare One</category></item><item><title>Cloudflare One - New duplicate action for supported Cloudflare One resources</title><link>https://docs.infinitegaming.org/changelog/post/2025-12-16-new-duplicate-action-for-supported-cloudflare-one-resources/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-12-16-new-duplicate-action-for-supported-cloudflare-one-resources/</guid><description>&lt;p&gt;You can now duplicate specific Cloudflare One resources with a single click from the dashboard.&lt;/p&gt;
&lt;p&gt;Initially supported resources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Access Applications&lt;/li&gt;
&lt;li&gt;Access Policies&lt;/li&gt;
&lt;li&gt;Gateway Policies&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To try this out, simply click on the overflow menu (⋮) from the resource table and click &lt;i&gt;Duplicate&lt;/i&gt;. We will continue to add the Duplicate action for resources throughout 2026.&lt;/p&gt;</description><pubDate>Tue, 16 Dec 2025 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category></item><item><title>Workers - Support for ctx.exports in @cloudflare/vitest-pool-workers</title><link>https://docs.infinitegaming.org/changelog/post/2025-12-16-vitest-ctx-exports-support/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-12-16-vitest-ctx-exports-support/</guid><description>&lt;p&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/workers/testing/vitest-integration/&quot;&gt;&lt;code&gt;@cloudflare/vitest-pool-workers&lt;/code&gt;&lt;/a&gt; package now supports the &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/context/#exports&quot;&gt;&lt;code&gt;ctx.exports&lt;/code&gt; API&lt;/a&gt;, allowing you to access your Worker&apos;s top-level exports during tests.&lt;/p&gt;
&lt;p&gt;You can access &lt;code&gt;ctx.exports&lt;/code&gt; in unit tests by calling &lt;code&gt;createExecutionContext()&lt;/code&gt;:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { createExecutionContext } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;cloudflare:test&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { it, expect } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;vitest&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;it&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;can access ctx.exports&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;async&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; () &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; ctx&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; createExecutionContext&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; result&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; ctx.exports.MyEntryPoint.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;myMethod&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  expect&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(result).&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;toBe&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;expected value&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Alternatively, you can import &lt;code&gt;exports&lt;/code&gt; directly from &lt;code&gt;cloudflare:workers&lt;/code&gt;:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { exports } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;cloudflare:workers&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { it, expect } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;vitest&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;it&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;can access imported exports&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;async&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; () &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; result&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; exports&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.MyEntryPoint.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;myMethod&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  expect&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(result).&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;toBe&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;expected value&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;See the &lt;a href=&quot;https://github.com/cloudflare/workers-sdk/tree/main/fixtures/vitest-plugin-examples/context-exports&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;context-exports fixture&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; for a complete example.&lt;/p&gt;</description><pubDate>Tue, 16 Dec 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Configure your framework for Cloudflare automatically</title><link>https://docs.infinitegaming.org/changelog/post/2025-12-16-wrangler-autoconfig/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-12-16-wrangler-autoconfig/</guid><description>&lt;p&gt;Wrangler now supports automatic configuration for popular web frameworks in experimental mode, making it even easier to deploy to Cloudflare Workers.&lt;/p&gt;
&lt;p&gt;Previously, if you wanted to deploy an application using a popular web framework like Next.js or Astro, you had to follow tutorials to set up your application for deployment to Cloudflare Workers. This usually involved creating a Wrangler file, installing adapters, or changing configuration options.&lt;/p&gt;
&lt;p&gt;Now &lt;code&gt;wrangler deploy&lt;/code&gt; does this for you. Starting with Wrangler 4.55, you can use &lt;code&gt;npx wrangler deploy --x-autoconfig&lt;/code&gt; in the directory of any web application using one of the supported frameworks. Wrangler will then proceed to configure and deploy it to your Cloudflare account.&lt;/p&gt;
&lt;p&gt;You can also configure your application without deploying it by using the new &lt;code&gt;npx wrangler setup&lt;/code&gt; command. This enables you to easily review what changes we are making so your application is ready for Cloudflare Workers.&lt;/p&gt;
&lt;p&gt;The following application frameworks are supported starting today:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Next.js&lt;/li&gt;
&lt;li&gt;Astro&lt;/li&gt;
&lt;li&gt;Nuxt&lt;/li&gt;
&lt;li&gt;TanStack Start&lt;/li&gt;
&lt;li&gt;SolidStart&lt;/li&gt;
&lt;li&gt;React Router&lt;/li&gt;
&lt;li&gt;SvelteKit&lt;/li&gt;
&lt;li&gt;Docusaurus&lt;/li&gt;
&lt;li&gt;Qwik&lt;/li&gt;
&lt;li&gt;Analog&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Automatic configuration also supports static sites by detecting the assets directory and build command. From a single index.html file to the output of a generator like Jekyll or Hugo, you can just run &lt;code&gt;npx wrangler deploy --x-autoconfig&lt;/code&gt; to upload to Cloudflare.&lt;/p&gt;
&lt;p&gt;We&apos;re really excited to bring you automatic configuration so you can do more with Workers. Please let us know if you run into challenges using this experimentally. We’ve opened a &lt;a href=&quot;https://github.com/cloudflare/workers-sdk/discussions/11667&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub discussion&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and would love to hear your feedback.&lt;/p&gt;</description><pubDate>Tue, 16 Dec 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare One Client - WARP client for Windows (version 2025.10.118.1)</title><link>https://docs.infinitegaming.org/changelog/post/2025-12-09-warp-windows-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-12-09-warp-windows-beta/</guid><description>&lt;p&gt;A new Beta release for the Windows WARP client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/beta-releases/&quot;&gt;beta releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains minor fixes and improvements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/route-traffic/local-domains/&quot;&gt;Local Domain Fallback&lt;/a&gt; feature has been fixed for devices running WARP client version 2025.4.929.0 and newer. Previously, these devices could experience failures with Local Domain Fallback unless a fallback server was explicitly configured. This configuration is no longer a requirement for the feature to function correctly.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/modes/#local-proxy-mode&quot;&gt;Proxy mode&lt;/a&gt; now supports transparent HTTP proxying in addition to CONNECT-based proxying.&lt;/li&gt;
&lt;li&gt;Fixed an issue where sending large messages to the WARP daemon by Inter-Process Communication (IPC) could cause WARP to crash and result in service interruptions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;For Windows 11 24H2 users, Microsoft has confirmed a regression that may lead to performance issues like mouse lag, audio cracking, or other slowdowns. Cloudflare recommends users experiencing these issues upgrade to a minimum &lt;a href=&quot;https://support.microsoft.com/en-us/topic/july-8-2025-kb5062553-os-build-26100-4652-523e69cb-051b-43c6-8376-6a76d6caeefd&quot;&gt;Windows 11 24H2 KB5062553&lt;/a&gt; or higher for resolution.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Devices with KB5055523 installed may receive a warning about &lt;code&gt;Win32/ClickFix.ABA&lt;/code&gt; being present in the installer. To resolve this false positive, update Microsoft Security Intelligence to &lt;a href=&quot;https://www.microsoft.com/en-us/wdsi/definitions/antimalware-definition-release-notes?requestVersion=1.429.19.0&quot;&gt;version 1.429.19.0&lt;/a&gt; or later.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DNS resolution may be broken when the following conditions are all true:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WARP is in Secure Web Gateway without DNS filtering (tunnel-only) mode.&lt;/li&gt;
&lt;li&gt;A custom DNS server address is configured on the primary network adapter.&lt;/li&gt;
&lt;li&gt;The custom DNS server address on the primary network adapter is changed while WARP is connected.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To work around this issue, reconnect the WARP client by toggling off and back on.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 09 Dec 2025 23:03:10 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - WARP client for macOS (version 2025.10.118.1)</title><link>https://docs.infinitegaming.org/changelog/post/2025-12-09-warp-macos-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-12-09-warp-macos-beta/</guid><description>&lt;p&gt;A new Beta release for the macOS WARP client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/beta-releases/&quot;&gt;beta releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains minor fixes and improvements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/route-traffic/local-domains/&quot;&gt;Local Domain Fallback&lt;/a&gt; feature has been fixed for devices running WARP client version 2025.4.929.0 and newer. Previously, these devices could experience failures with Local Domain Fallback unless a fallback server was explicitly configured. This configuration is no longer a requirement for the feature to function correctly.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/modes/#local-proxy-mode&quot;&gt;Proxy mode&lt;/a&gt; now supports transparent HTTP proxying in addition to CONNECT-based proxying.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 09 Dec 2025 23:02:28 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Workers - Python cold start improvements</title><link>https://docs.infinitegaming.org/changelog/post/2025-12-08-python-cold-start-improvements/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-12-08-python-cold-start-improvements/</guid><description>&lt;p&gt;Python Workers now feature improved cold start performance, reducing initialization time for new Worker instances.
This improvement is particularly noticeable for Workers with larger dependency sets or complex initialization logic.&lt;/p&gt;
&lt;p&gt;Every time you deploy a Python Worker, a memory snapshot is captured after the top level of the Worker is executed.
This snapshot captures all imports, including package imports that are often costly to load. The memory snapshot is loaded
when the Worker is first started, avoiding the need to reload the Python runtime and all dependencies on each cold start.&lt;/p&gt;
&lt;p&gt;We set up a benchmark that imports common packages (&lt;a href=&quot;https://www.python-httpx.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;httpx&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;,
&lt;a href=&quot;https://fastapi.tiangolo.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;fastapi&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and &lt;a href=&quot;https://docs.pydantic.dev/latest/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;pydantic&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;)
to see how Python Workers stack up against other platforms:&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Mean Cold Start (ms)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Cloudflare Python Workers&lt;/td&gt;
&lt;td&gt;1027&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AWS Lambda&lt;/td&gt;
&lt;td&gt;2502&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Google Cloud Run&lt;/td&gt;
&lt;td&gt;3069&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;These benchmarks run continuously. You can view the results and the methodology on our &lt;a href=&quot;https://cold.edgeworker.net&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;benchmark page&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In additional testing, we have found that without any memory snapshot, the cold start for this benchmark takes around 10 seconds, so this change improves cold start performance by roughly a factor of 10.&lt;/p&gt;
&lt;p&gt;To get started with Python Workers, check out our &lt;a href=&quot;https://docs.infinitegaming.org/workers/languages/python/&quot;&gt;Python Workers overview&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 08 Dec 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Easy Python package management with Pywrangler</title><link>https://docs.infinitegaming.org/changelog/post/2025-12-08-python-pywrangler/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-12-08-python-pywrangler/</guid><description>&lt;p&gt;We are introducing a brand new tool called Pywrangler, which simplifies package management in Python Workers by
automatically installing Workers-compatible Python packages into your project.&lt;/p&gt;
&lt;p&gt;With Pywrangler, you specify your Worker&apos;s Python dependencies in your &lt;code&gt;pyproject.toml&lt;/code&gt; file:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;project&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;name = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;python-beautifulsoup-worker&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;version = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;0.1.0&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;description = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;A simple Worker using beautifulsoup4&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;requires-python = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&amp;gt;=3.12&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;dependencies = [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;    &quot;beautifulsoup4&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;dependency-groups&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;dev = [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;  &quot;workers-py&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;  &quot;workers-runtime-sdk&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You can then develop and deploy your Worker using the following commands:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;uv&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; run&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; pywrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; dev&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;uv&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; run&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; pywrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; deploy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Pywrangler automatically downloads and vendors the necessary packages for your Worker, and these packages are bundled with the Worker when you deploy.&lt;/p&gt;
&lt;p&gt;Consult the &lt;a href=&quot;https://docs.infinitegaming.org/workers/languages/python/packages/&quot;&gt;Python packages documentation&lt;/a&gt; for full details on Pywrangler and Python package management in Workers.&lt;/p&gt;</description><pubDate>Mon, 08 Dec 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Wrangler config is optional when using Vite plugin</title><link>https://docs.infinitegaming.org/changelog/post/2025-12-08-vite-optional-config/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-12-08-vite-optional-config/</guid><description>&lt;p&gt;When using the &lt;a href=&quot;https://docs.infinitegaming.org/workers/vite-plugin/&quot;&gt;Cloudflare Vite plugin&lt;/a&gt; to build and deploy Workers, a Wrangler configuration file is now optional for assets-only (static) sites. If no &lt;code&gt;wrangler.toml&lt;/code&gt;, &lt;code&gt;wrangler.json&lt;/code&gt;, or &lt;code&gt;wrangler.jsonc&lt;/code&gt; file is found, the plugin generates sensible defaults for an assets-only site. The &lt;code&gt;name&lt;/code&gt; is based on the &lt;code&gt;package.json&lt;/code&gt; or the project directory name, and the &lt;code&gt;compatibility_date&lt;/code&gt; uses the latest date supported by your installed Miniflare version.&lt;/p&gt;
&lt;p&gt;This allows easier setup for static sites using Vite. Note that SPAs will still need to &lt;a href=&quot;https://developers.cloudflare.com/workers/static-assets/routing/single-page-application/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;set &lt;code&gt;assets.not_found_handling&lt;/code&gt; to &lt;code&gt;single-page-application&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; in order to function correctly.&lt;/p&gt;</description><pubDate>Mon, 08 Dec 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Configure Workers programmatically using the Vite plugin</title><link>https://docs.infinitegaming.org/changelog/post/2025-12-08-vite-programmatic-config/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-12-08-vite-programmatic-config/</guid><description>&lt;p&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/workers/vite-plugin/&quot;&gt;Cloudflare Vite plugin&lt;/a&gt; now supports programmatic configuration of Workers without a Wrangler configuration file. You can use the &lt;code&gt;config&lt;/code&gt; option to define Worker settings directly in your Vite configuration, or to modify existing configuration loaded from a Wrangler config file. This is particularly useful when integrating with other build tools or frameworks, as it allows them to control Worker configuration without needing users to manage a separate config file.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;the-config-option&quot;&gt;The &lt;code&gt;config&lt;/code&gt; option&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#the-config-option&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The Vite plugin&apos;s new &lt;code&gt;config&lt;/code&gt; option accepts either a partial configuration object or a function that receives the current configuration and returns overrides. This option is applied after any config file is loaded, allowing the plugin to override specific values or define Worker configuration entirely in code.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;example-usage&quot;&gt;Example usage&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#example-usage&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Setting &lt;code&gt;config&lt;/code&gt; to an object to provide configuration values that merge with defaults and config file settings:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;vite.config.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { defineConfig } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;vite&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { cloudflare } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;@cloudflare/vite-plugin&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; defineConfig&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	plugins: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;		cloudflare&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			config: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				name: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my-worker&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				compatibility_flags: [&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;nodejs_compat&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				send_email: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;					{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;						name: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;EMAIL&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;					},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Use a function to modify the existing configuration:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;vite.config.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { defineConfig } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;vite&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { cloudflare } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;@cloudflare/vite-plugin&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; defineConfig&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	plugins: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;		cloudflare&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;			config&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: (&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;userConfig&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;				delete&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; userConfig.compatibility_flags;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Return an object with values to merge:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;vite.config.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { defineConfig } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;vite&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { cloudflare } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;@cloudflare/vite-plugin&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; defineConfig&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	plugins: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;		cloudflare&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;			config&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: (&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;userConfig&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;				if&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;userConfig.compatibility_flags.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;includes&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;no_nodejs_compat&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;					return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { compatibility_flags: [&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;nodejs_compat&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;] };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;auxiliary-workers&quot;&gt;Auxiliary Workers&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#auxiliary-workers&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Auxiliary Workers also support the &lt;code&gt;config&lt;/code&gt; option, enabling multi-Worker architectures without config files.&lt;/p&gt;
&lt;p&gt;Define auxiliary Workers without config files using &lt;code&gt;config&lt;/code&gt; inside the &lt;code&gt;auxiliaryWorkers&lt;/code&gt; array:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;vite.config.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { defineConfig } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;vite&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { cloudflare } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;@cloudflare/vite-plugin&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; defineConfig&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	plugins: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;		cloudflare&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			config: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				name: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;entry-worker&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				main: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./src/entry.ts&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				services: [{ binding: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;API&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, service: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;api-worker&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; }],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			auxiliaryWorkers: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;					config: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;						name: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;api-worker&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;						main: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./src/api.ts&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;					},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;For more details and examples, see &lt;a href=&quot;https://docs.infinitegaming.org/workers/vite-plugin/reference/programmatic-configuration/&quot;&gt;Programmatic configuration&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 08 Dec 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - One-click Access protection for Workers now creates reusable Cloudflare Access policies</title><link>https://docs.infinitegaming.org/changelog/post/2025-12-03-reusable-access-policies/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-12-03-reusable-access-policies/</guid><description>&lt;p&gt;Workers applications now use reusable &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/policies/&quot;&gt;Cloudflare Access policies&lt;/a&gt; to reduce duplication and simplify access management across multiple Workers.&lt;/p&gt;
&lt;p&gt;Previously, enabling Cloudflare Access on a Worker created per-application policies, unique to each application. Now, we create reusable policies that can be shared across applications:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Preview URLs&lt;/strong&gt;: All Workers preview URLs share a single &quot;Cloudflare Workers Preview URLs&quot; policy across your account. This policy is automatically created the first time you enable Access on any preview URL. By sharing a single policy across all preview URLs, you can configure access rules once and have them apply company-wide to all Workers which protect preview URLs. This makes it much easier to manage who can access preview environments without having to update individual policies for each Worker.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Production workers.dev URLs&lt;/strong&gt;: When enabled, each Worker gets its own reusable policy (named &lt;code&gt;&amp;lt;worker-name&amp;gt; - Production&lt;/code&gt;) by default. We recognize production services often have different access requirements and having individual policies here makes it easier to configure service-to-service authentication or protect internal dashboards or applications with specific user groups. Keeping these policies separate gives you the flexibility to configure exactly the right access rules for each production service. When you disable Access on a production Worker, the associated policy is automatically cleaned up if it&apos;s not being used by other applications.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This change reduces policy duplication, simplifies cross-company access management for preview environments, and provides the flexibility needed for production services. You can still customize access rules by editing the reusable policies in the Zero Trust dashboard.&lt;/p&gt;
&lt;p&gt;To enable Cloudflare Access on your Worker:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the Cloudflare dashboard, go to &lt;strong&gt;Workers &amp;amp; Pages&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select your Worker.&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;Settings&lt;/strong&gt; &amp;gt; &lt;strong&gt;Domains &amp;amp; Routes&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;For &lt;code&gt;workers.dev&lt;/code&gt; or Preview URLs, click &lt;strong&gt;Enable Cloudflare Access&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Optionally, click &lt;strong&gt;Manage Cloudflare Access&lt;/strong&gt; to customize the policy.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For more information on configuring Cloudflare Access for Workers, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/routing/workers-dev/#manage-access-to-workersdev&quot;&gt;Workers Access documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 04 Dec 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Email security - Reclassifications to Submissions</title><link>https://docs.infinitegaming.org/changelog/post/2025-12-03-submission-terminology-update/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-12-03-submission-terminology-update/</guid><description>&lt;p&gt;We have updated the terminology “Reclassify” and “Reclassifications” to “Submit” and “Submissions” respectively. This update more accurately reflects the outcome of providing these items to Cloudflare.&lt;/p&gt;
&lt;p&gt;Submissions are leveraged to tune future variants of campaigns. To respect data sanctity, providing a submission does not change the original disposition of the emails submitted.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=756,height=628,format=webp/_astro/reclassification-submission.B6nL5Hw7.png&quot; alt=&quot;nav_example&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;756&quot; height=&quot;628&quot;&gt;
&lt;p&gt;This applies to all Email Security packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Advantage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise + PhishGuard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Wed, 03 Dec 2025 21:11:33 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Workers - Environment variable limits increase for Workers Builds</title><link>https://docs.infinitegaming.org/changelog/post/2025-11-21-builds-env-var-increase/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-11-21-builds-env-var-increase/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/&quot;&gt;Workers Builds&lt;/a&gt; now supports up to 64 environment variables, and each environment variable can be up to 5 KB in size. The previous limit was 5 KB total across all environment variables.&lt;/p&gt;
&lt;p&gt;This change enables better support for complex build configurations, larger application settings, and more flexible CI/CD workflows.&lt;/p&gt;
&lt;p&gt;For more details, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/limits-and-pricing/#definitions&quot;&gt;build limits documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 21 Nov 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Better local deployment flow for Cloudflare Workers</title><link>https://docs.infinitegaming.org/changelog/post/2025-11-21-wrangler-deploy-remote-config-management/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-11-21-wrangler-deploy-remote-config-management/</guid><description>
&lt;p&gt;Until now, if a Worker had been previously deployed via the &lt;a href=&quot;https://dash.cloudflare.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, a subsequent deployment done via the Cloudflare Workers CLI, &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/&quot;&gt;&lt;strong&gt;Wrangler&lt;/strong&gt;&lt;/a&gt;
(through the &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/general/#deploy&quot;&gt;&lt;code&gt;deploy&lt;/code&gt; command&lt;/a&gt;), would allow the user to override the Worker&apos;s dashboard settings without providing details on
what dashboard settings would be lost.&lt;/p&gt;
&lt;p&gt;Now instead, &lt;code&gt;wrangler deploy&lt;/code&gt; presents a helpful representation of the differences between the &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/configuration/&quot;&gt;local configuration&lt;/a&gt;
and the remote dashboard settings, and offers to update your local configuration file for you.&lt;/p&gt;
&lt;p&gt;See example below showing a before and after for &lt;code&gt;wrangler deploy&lt;/code&gt; when a local configuration is expected to override a Worker&apos;s dashboard settings:&lt;/p&gt;
&lt;article class=&quot;bg-card ring-border my-4 rounded-lg p-5 shadow-sm ring&quot;&gt;&lt;h3 class=&quot;text-foreground m-0 mb-1.5 text-base leading-snug font-semibold&quot;&gt;Before&lt;/h3&gt;&lt;div class=&quot;text-sm leading-normal text-muted-foreground&quot;&gt;&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=785,height=257,format=webp/_astro/before.Bz-MOePT.png&quot; alt=&quot;wrangler deploy run before the improved workflow&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;785&quot; height=&quot;257&quot;&gt;&lt;/div&gt;&lt;/article&gt;
&lt;article class=&quot;bg-card ring-border my-4 rounded-lg p-5 shadow-sm ring&quot;&gt;&lt;h3 class=&quot;text-foreground m-0 mb-1.5 text-base leading-snug font-semibold&quot;&gt;After&lt;/h3&gt;&lt;div class=&quot;text-sm leading-normal text-muted-foreground&quot;&gt;&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=788,height=492,format=webp/_astro/after.BrkkBaRL.png&quot; alt=&quot;wrangler deploy run after the improved workflow&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;788&quot; height=&quot;492&quot;&gt;&lt;/div&gt;&lt;/article&gt;
&lt;p&gt;Also, if instead Wrangler detects that a deployment would override remote dashboard settings but in an additive way, without modifying or removing any of them, it will simply proceed with the deployment without requesting any user interaction.&lt;/p&gt;
&lt;p&gt;Update to &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/&quot;&gt;Wrangler&lt;/a&gt; v4.50.0 or greater to take advantage of this improved deploy flow.&lt;/p&gt;</description><pubDate>Fri, 21 Nov 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Email security - Adjustment to Final Disposition Column</title><link>https://docs.infinitegaming.org/changelog/post/2025-11-18-temporary-adjustment-to-final-disposition-column/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-11-18-temporary-adjustment-to-final-disposition-column/</guid><description>&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;adjustment-to-final-disposition-column&quot;&gt;Adjustment to Final Disposition column&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#adjustment-to-final-disposition-column&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;the-final-disposition-column-in-submissions--team-submissions-tab-is-changing-for-non-phishguard-customers&quot;&gt;The &lt;strong&gt;Final Disposition&lt;/strong&gt; column in &lt;strong&gt;Submissions&lt;/strong&gt; &amp;gt; &lt;strong&gt;Team Submissions&lt;/strong&gt; tab is changing for non-Phishguard customers.&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#the-final-disposition-column-in-submissions--team-submissions-tab-is-changing-for-non-phishguard-customers&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;whats-changing&quot;&gt;What&apos;s Changing&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#whats-changing&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Column will be called &lt;strong&gt;Status&lt;/strong&gt; instead of &lt;strong&gt;Final Disposition&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Column status values will now be: &lt;strong&gt;Submitted&lt;/strong&gt;, &lt;strong&gt;Accepted&lt;/strong&gt; or &lt;strong&gt;Rejected&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;next-steps&quot;&gt;Next Steps&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#next-steps&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;We will listen carefully to your feedback and continue to find comprehensive ways to communicate updates on your submissions. Your submissions will continue to be addressed at an even greater rate than before, fuelling faster and more accurate email security improvement.&lt;/p&gt;</description><pubDate>Tue, 18 Nov 2025 00:00:00 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Cloudflare One - New Cloudflare One Navigation and Product Experience</title><link>https://docs.infinitegaming.org/changelog/post/new-cloudflare-one-navigation-and-product-experience/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/new-cloudflare-one-navigation-and-product-experience/</guid><description>&lt;p&gt;The Zero Trust dashboard and navigation is receiving significant and exciting updates. The dashboard is being restructured to better support common tasks and workflows, and various pages have been moved and consolidated.&lt;/p&gt;
&lt;p&gt;There is a new guided experience on login detailing the changes, and you can use the Zero Trust dashboard search to find product pages by both their new and old names, as well as your created resources. To replay the guided experience, you can find it in Overview &amp;gt; Get Started.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1388,height=1546,format=webp/_astro/cf1-dash-changes.Uk_Y-2V-.png&quot; alt=&quot;Cloudflare One Dash Changes&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1388&quot; height=&quot;1546&quot;&gt;
&lt;p&gt;Notable changes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Product names have been removed from many top-level navigation items to help bring clarity to what they help you accomplish. For example, you can find Gateway policies under ‘Traffic policies&apos; and CASB findings under ‘Cloud &amp;amp; SaaS findings.&apos;&lt;/li&gt;
&lt;li&gt;You can view all analytics, logs, and real-time monitoring tools from ‘Insights.&apos;&lt;/li&gt;
&lt;li&gt;‘Networks&apos; better maps the ways that your corporate network interacts with Cloudflare. Some pages like Tunnels, are now a tab rather than a full page as part of these changes. You can find them at Networks &amp;gt; Connectors.&lt;/li&gt;
&lt;li&gt;Settings are now located closer to the tools and resources they impact. For example, this means you&apos;ll find your WARP configurations at Team &amp;amp; Resources &amp;gt; Devices.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=514,height=1112,format=webp/_astro/new-cf1-navigation.B7-E-9CV.png&quot; alt=&quot;New Cloudflare One Navigation&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;514&quot; height=&quot;1112&quot;&gt;
&lt;p&gt;No changes to our API endpoint structure or to any backend services have been made as part of this effort.&lt;/p&gt;</description><pubDate>Mon, 17 Nov 2025 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category></item><item><title>Access - Generate Cloudflare Access SSH certificate authority (CA) directly from the Cloudflare dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2025-11-14-SSH-CA-enhancements/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-11-14-SSH-CA-enhancements/</guid><description>&lt;p&gt;SSH with &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/use-cases/ssh/ssh-infrastructure-access/&quot;&gt;Cloudflare Access for Infrastructure&lt;/a&gt; allows you to use short-lived SSH certificates to eliminate SSH key management and reduce security risks associated with lost or stolen keys.&lt;/p&gt;
&lt;p&gt;Previously, users had to generate this certificate by using the &lt;a href=&quot;https://developers.cloudflare.com/api/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare API&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; directly. With this update, you can now create and manage this certificate in the &lt;a href=&quot;https://one.dash.cloudflare.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare One dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; from the &lt;strong&gt;Access controls&lt;/strong&gt; &amp;gt; &lt;strong&gt;Service credentials&lt;/strong&gt; page.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2710,height=1180,format=webp/_astro/SSH-CA-generation.DYa9RnX1.png&quot; alt=&quot;Navigate to Access controls and then Service credentials to see where you can generate an SSH CA&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2710&quot; height=&quot;1180&quot;&gt;
&lt;p&gt;For more details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/use-cases/ssh/ssh-infrastructure-access/#generate-a-cloudflare-ssh-ca&quot;&gt;Generate a Cloudflare SSH CA&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 14 Nov 2025 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>CASB - New SaaS Security weekly digests with API CASB</title><link>https://docs.infinitegaming.org/changelog/post/2025-11-14-casb-digest/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-11-14-casb-digest/</guid><description>&lt;p&gt;You can now stay on top of your SaaS security posture with the new &lt;strong&gt;CASB Weekly Digest&lt;/strong&gt; notification. This opt-in email digest is delivered to your inbox every Monday morning and provides a high-level summary of your organization&apos;s Cloudflare API CASB findings from the previous week.&lt;/p&gt;
&lt;p&gt;This allows security teams and IT administrators to get proactive, at-a-glance visibility into new risks and integration health without having to log in to the dashboard.&lt;/p&gt;
&lt;p&gt;To opt in, navigate to &lt;strong&gt;Manage Account&lt;/strong&gt; &amp;gt; &lt;strong&gt;Notifications&lt;/strong&gt; in the Cloudflare dashboard to configure the &lt;strong&gt;CASB Weekly Digest&lt;/strong&gt; alert type.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;key-capabilities&quot;&gt;Key capabilities&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#key-capabilities&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;At-a-glance summary&lt;/strong&gt; — Review new high/critical findings, most frequent finding types, and new content exposures from the past 7 days.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integration health&lt;/strong&gt; — Instantly see the status of all your connected SaaS integrations (Healthy, Unhealthy, or Paused) to spot API connection issues.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proactive alerting&lt;/strong&gt; — The digest is sent automatically to all subscribed users every Monday morning.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Easy to configure&lt;/strong&gt; — Users can opt in by enabling the notification in the Cloudflare dashboard under &lt;strong&gt;Manage Account&lt;/strong&gt; &amp;gt; &lt;strong&gt;Notifications&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;learn-more&quot;&gt;Learn more&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#learn-more&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Configure &lt;a href=&quot;https://docs.infinitegaming.org/notifications/&quot;&gt;notification preferences&lt;/a&gt; in Cloudflare.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The CASB Weekly Digest notification is available to all Cloudflare users today.&lt;/p&gt;</description><pubDate>Fri, 14 Nov 2025 00:00:00 GMT</pubDate><product>CASB</product><category>CASB</category></item><item><title>Digital Experience Monitoring - DEX Logpush jobs</title><link>https://docs.infinitegaming.org/changelog/post/2025-11-12-dex-logpush-jobs/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-11-12-dex-logpush-jobs/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/dex/&quot;&gt;Digital Experience Monitoring (DEX)&lt;/a&gt; provides visibility into WARP device metrics, connectivity, and network performance across your Cloudflare SASE deployment.&lt;/p&gt;
&lt;p&gt;We&apos;ve released four new WARP and DEX device data sets that can be exported via &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/logs/logpush/&quot;&gt;Cloudflare Logpush&lt;/a&gt;. These Logpush data sets can be exported to R2, a cloud bucket, or a SIEM to build a customized logging and analytics experience.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/logs/logpush/logpush-job/datasets/account/dex_application_tests/&quot;&gt;DEX Application Tests&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/logs/logpush/logpush-job/datasets/account/dex_device_state_events/&quot;&gt;DEX Device State Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/logs/logpush/logpush-job/datasets/account/warp_config_changes/&quot;&gt;WARP Config Changes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/logs/logpush/logpush-job/datasets/account/warp_toggle_changes/&quot;&gt;WARP Toggle Changes&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To create a new DEX or WARP Logpush job, customers can go to the account level of the Cloudflare dashboard &amp;gt; Analytics &amp;amp; Logs &amp;gt; Logpush to get started.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2549,height=1283,format=webp/_astro/dex_logpush_datasets.CtCk36pX.png&quot; alt=&quot;DEX logpush job creation dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2549&quot; height=&quot;1283&quot;&gt;</description><pubDate>Wed, 12 Nov 2025 00:00:00 GMT</pubDate><product>Digital Experience Monitoring</product><category>Digital Experience Monitoring</category></item><item><title>Workers Analytics Engine, Workers - More SQL aggregate, date and time functions available in Workers Analytics Engine</title><link>https://docs.infinitegaming.org/changelog/post/2025-11-12-analytics-engine-further-sql-enhancements/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-11-12-analytics-engine-further-sql-enhancements/</guid><description>&lt;p&gt;You can now perform more powerful queries directly in &lt;a href=&quot;https://developers.cloudflare.com/analytics/analytics-engine/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Workers Analytics Engine&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; with a major expansion of our SQL function library.&lt;/p&gt;
&lt;p&gt;Workers Analytics Engine allows you to ingest and store high-cardinality data at scale (such as custom analytics) and query your data through a simple SQL API.&lt;/p&gt;
&lt;p&gt;Today, we&apos;ve expanded Workers Analytics Engine&apos;s SQL capabilities with several new functions:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://developers.cloudflare.com/analytics/analytics-engine/sql-reference/aggregate-functions/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;strong&gt;New aggregate functions:&lt;/strong&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;countIf()&lt;/code&gt; - count the number of rows which satisfy a provided condition&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sumIf()&lt;/code&gt; - calculate a sum from rows which satisfy a provided condition&lt;/li&gt;
&lt;li&gt;&lt;code&gt;avgIf()&lt;/code&gt; - calculate an average from rows which satisfy a provided condition&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://developers.cloudflare.com/analytics/analytics-engine/sql-reference/date-time-functions/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;strong&gt;New date and time functions:&lt;/strong&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;toYear()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;toMonth()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;toDayOfMonth()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;toDayOfWeek()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;toHour()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;toMinute()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;toSecond()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;toStartOfYear()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;toStartOfMonth()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;toStartOfWeek()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;toStartOfDay()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;toStartOfHour()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;toStartOfFifteenMinutes()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;toStartOfTenMinutes()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;toStartOfFiveMinutes()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;toStartOfMinute()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;today()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;toYYYYMM()&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;ready-to-get-started&quot;&gt;Ready to get started?&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#ready-to-get-started&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Whether you&apos;re building usage-based billing systems, customer analytics dashboards, or other custom analytics, these functions let you get the most out of your data. &lt;a href=&quot;https://docs.infinitegaming.org/analytics/analytics-engine/get-started/&quot;&gt;Get started &lt;/a&gt; with Workers Analytics Engine and explore all available functions in our &lt;a href=&quot;https://docs.infinitegaming.org/analytics/analytics-engine/sql-reference/&quot;&gt;SQL reference documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 12 Nov 2025 00:00:00 GMT</pubDate><product>Workers Analytics Engine</product><category>Workers Analytics Engine</category><category>Workers</category></item><item><title>Cloudflare One Client - WARP client for Windows (version 2025.9.558.0)</title><link>https://docs.infinitegaming.org/changelog/post/2025-11-11-warp-windows-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-11-11-warp-windows-ga/</guid><description>&lt;p&gt;A new GA release for the Windows WARP client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains minor fixes, improvements, and new features including &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/path-mtu-discovery/#enable-path-mtu-discovery&quot;&gt;Path Maximum Transmission Unit Discovery (PMTUD)&lt;/a&gt;. When PMTUD is enabled, the client will dynamically adjust packet sizing to optimize connection performance. There is also a new connection status message in the GUI to inform users that the local network connection may be unstable. This will make it easier to diagnose connectivity issues.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an inconsistency with &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/#disconnect-warp-on-all-devices&quot;&gt;Global WARP override&lt;/a&gt; settings in multi-user environments when switching between users.&lt;/li&gt;
&lt;li&gt;The GUI now displays the health of the tunnel and DNS connections by showing a connection status message when the network may be unstable. This will make it easier to diagnose connectivity issues.&lt;/li&gt;
&lt;li&gt;Fixed an issue where deleting a registration was erroneously reported as having failed.&lt;/li&gt;
&lt;li&gt;Path Maximum Transmission Unit Discovery (PMTUD) may now be used to discover the effective MTU of the connection. This allows the WARP client to improve connectivity optimized for each network. PMTUD is disabled by default. To enable it, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/path-mtu-discovery/#enable-path-mtu-discovery&quot;&gt;PMTUD documentation&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Improvements for the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/reusable-components/posture-checks/warp-client-checks/os-version/&quot;&gt;OS version&lt;/a&gt; WARP client check. Windows Updated Build Revision (UBR) numbers can now be checked by the client to ensure devices have required security patches and features installed.&lt;/li&gt;
&lt;li&gt;The WARP client now supports Windows 11 ARM-based machines. For information on known limitations, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/troubleshooting/known-limitations/#cloudflare-one-client-disconnected-on-windows-arm&quot;&gt;Known limitations page&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;For Windows 11 24H2 users, Microsoft has confirmed a regression that may lead to performance issues like mouse lag, audio cracking, or other slowdowns. Cloudflare recommends users experiencing these issues upgrade to a minimum &lt;a href=&quot;https://support.microsoft.com/en-us/topic/july-8-2025-kb5062553-os-build-26100-4652-523e69cb-051b-43c6-8376-6a76d6caeefd&quot;&gt;Windows 11 24H2 KB5062553&lt;/a&gt; or higher for resolution.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Devices using WARP client 2025.4.929.0 and up may experience Local Domain Fallback failures if a fallback server has not been configured. To configure a fallback server, refer to &lt;a href=&quot;https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/cloudflare-one-client/configure/route-traffic/local-domains/#route-traffic-to-fallback-server&quot;&gt;Route traffic to fallback server&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Devices with KB5055523 installed may receive a warning about &lt;code&gt;Win32/ClickFix.ABA&lt;/code&gt; being present in the installer. To resolve this false positive, update Microsoft Security Intelligence to &lt;a href=&quot;https://www.microsoft.com/en-us/wdsi/definitions/antimalware-definition-release-notes?requestVersion=1.429.19.0&quot;&gt;version 1.429.19.0&lt;/a&gt; or later.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DNS resolution may be broken when the following conditions are all true:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WARP is in Secure Web Gateway without DNS filtering (tunnel-only) mode.&lt;/li&gt;
&lt;li&gt;A custom DNS server address is configured on the primary network adapter.&lt;/li&gt;
&lt;li&gt;The custom DNS server address on the primary network adapter is changed while WARP is connected.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To work around this issue, reconnect the WARP client by toggling off and back on.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 11 Nov 2025 17:28:35 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - WARP client for macOS (version 2025.9.558.0)</title><link>https://docs.infinitegaming.org/changelog/post/2025-11-11-warp-macos-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-11-11-warp-macos-ga/</guid><description>&lt;p&gt;A new GA release for the macOS WARP client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains minor fixes, improvements, and new features including &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/path-mtu-discovery/#enable-path-mtu-discovery&quot;&gt;Path Maximum Transmission Unit Discovery (PMTUD)&lt;/a&gt;. When PMTUD is enabled, the client will dynamically adjust packet sizing to optimize connection performance. There is also a new connection status message in the GUI to inform users that the local network connection may be unstable. This will make it easier to diagnose connectivity issues.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The GUI now displays the health of the tunnel and DNS connections by showing a connection status message when the network may be unstable. This will make it easier to diagnose connectivity issues.&lt;/li&gt;
&lt;li&gt;Fixed an issue where deleting a registration was erroneously reported as having failed.&lt;/li&gt;
&lt;li&gt;Path Maximum Transmission Unit Discovery (PMTUD) may now be used to discover the effective MTU of the connection. This allows the WARP client to improve connectivity optimized for each network. PMTUD is disabled by default. To enable it, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/path-mtu-discovery/#enable-path-mtu-discovery&quot;&gt;PMTUD documentation&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Devices using WARP client 2025.4.929.0 and up may experience Local Domain Fallback failures if a fallback server has not been configured. To configure a fallback server, refer to &lt;a href=&quot;https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/cloudflare-one-client/configure/route-traffic/local-domains/#route-traffic-to-fallback-server&quot;&gt;Route traffic to fallback server&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 11 Nov 2025 17:28:35 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - WARP client for Linux (version 2025.9.558.0)</title><link>https://docs.infinitegaming.org/changelog/post/2025-11-11-warp-linux-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-11-11-warp-linux-ga/</guid><description>&lt;p&gt;A new GA release for the Linux WARP client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/&quot;&gt;stable releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains minor fixes, improvements, and new features including &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/path-mtu-discovery/#enable-path-mtu-discovery&quot;&gt;Path Maximum Transmission Unit Discovery (PMTUD)&lt;/a&gt;. When PMTUD is enabled, the client will dynamically adjust packet sizing to optimize connection performance. There is also a new connection status message in the GUI to inform users that the local network connection may be unstable. This will make it easier to diagnose connectivity issues.&lt;/p&gt;
&lt;p&gt;WARP client version 2025.8.779.0 introduced an updated public key for Linux packages. The public key must be updated if it was installed before September 12, 2025 to ensure the repository remains functional after December 4, 2025. Instructions to make this update are available at &lt;a href=&quot;https://pkg.cloudflareclient.com/&quot;&gt;pkg.cloudflareclient.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The GUI now displays the health of the tunnel and DNS connections by showing a connection status message when the network may be unstable. This will make it easier to diagnose connectivity issues.&lt;/li&gt;
&lt;li&gt;Fixed an issue where deleting a registration was erroneously reported as having failed.&lt;/li&gt;
&lt;li&gt;Path Maximum Transmission Unit Discovery (PMTUD) may now be used to discover the effective MTU of the connection. This allows the WARP client to improve connectivity optimized for each network. PMTUD is disabled by default. To enable it, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/path-mtu-discovery/#enable-path-mtu-discovery&quot;&gt;PMTUD documentation&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 11 Nov 2025 15:06:09 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare Tunnel, Cloudflare Tunnel for SASE - cloudflared proxy-dns command will be removed starting February 2, 2026</title><link>https://docs.infinitegaming.org/changelog/post/2025-11-11-cloudflared-proxy-dns/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-11-11-cloudflared-proxy-dns/</guid><description>&lt;p&gt;Starting February 2, 2026, the &lt;code&gt;cloudflared proxy-dns&lt;/code&gt; command will be removed from all new &lt;code&gt;cloudflared&lt;/code&gt; &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/downloads/&quot;&gt;releases&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This change is being made to enhance security and address a potential vulnerability in an underlying DNS library. This vulnerability is specific to the &lt;code&gt;proxy-dns&lt;/code&gt; command and does not affect any other &lt;code&gt;cloudflared&lt;/code&gt; features, such as the core &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/&quot;&gt;Cloudflare Tunnel&lt;/a&gt; service.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;proxy-dns&lt;/code&gt; command, which runs a client-side &lt;a href=&quot;https://docs.infinitegaming.org/1.1.1.1/encryption/dns-over-https/&quot;&gt;DNS-over-HTTPS (DoH)&lt;/a&gt; proxy, has been an officially undocumented feature for several years. This functionality is fully and securely supported by our actively developed products.&lt;/p&gt;
&lt;p&gt;Versions of &lt;code&gt;cloudflared&lt;/code&gt; released before this date will not be affected and will continue to operate. However, note that our &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/downloads/#deprecated-releases&quot;&gt;official support policy&lt;/a&gt; for any &lt;code&gt;cloudflared&lt;/code&gt; release is one year from its release date.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;migration-paths&quot;&gt;Migration paths&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#migration-paths&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;We strongly advise users of this undocumented feature to migrate to one of the following officially supported solutions before February 2, 2026, to continue benefiting from secure &lt;a href=&quot;https://docs.infinitegaming.org/1.1.1.1/encryption/dns-over-https/&quot;&gt;DNS-over-HTTPS&lt;/a&gt;.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;end-user-devices&quot;&gt;End-user devices&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#end-user-devices&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The preferred method for enabling DNS-over-HTTPS on user devices is the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/&quot;&gt;Cloudflare WARP client&lt;/a&gt;. The WARP client automatically secures and proxies all DNS traffic from your device, integrating it with your organization&apos;s &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/&quot;&gt;Zero Trust policies&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/reusable-components/posture-checks/&quot;&gt;posture checks&lt;/a&gt;.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;servers-routers-and-iot-devices&quot;&gt;Servers, routers, and IoT devices&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#servers-routers-and-iot-devices&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;For scenarios where installing a client on every device is not possible (such as servers, routers, or IoT devices), we recommend using the &lt;a href=&quot;https://docs.infinitegaming.org/mesh/&quot;&gt;WARP Connector&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Instead of running &lt;code&gt;cloudflared proxy-dns&lt;/code&gt; on a machine, you can install the WARP Connector on a single Linux host within your private network. This connector will act as a gateway, securely routing all DNS and network traffic from your &lt;a href=&quot;https://docs.infinitegaming.org/mesh/features/routes/&quot;&gt;entire subnet&lt;/a&gt; to Cloudflare for &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/&quot;&gt;filtering and logging&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 11 Nov 2025 00:00:00 GMT</pubDate><product>Cloudflare Tunnel</product><category>Cloudflare Tunnel</category><category>Cloudflare Tunnel for SASE</category></item><item><title>Workers - Select Wrangler environments using the CLOUDFLARE_ENV environment variable</title><link>https://docs.infinitegaming.org/changelog/post/2025-11-09-cloudflare-env-variable/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-11-09-cloudflare-env-variable/</guid><description>&lt;p&gt;Wrangler now supports using the &lt;code&gt;CLOUDFLARE_ENV&lt;/code&gt; &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/system-environment-variables/#supported-environment-variables&quot;&gt;environment variable&lt;/a&gt; to select the active &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/environments/&quot;&gt;environment&lt;/a&gt; for your Worker commands. This provides a more flexible way to manage environments, especially when working with build tools and CI/CD pipelines.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;whats-new&quot;&gt;What&apos;s new&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#whats-new&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Environment selection via environment variable:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Set &lt;code&gt;CLOUDFLARE_ENV&lt;/code&gt; to specify which environment to use for Wrangler commands&lt;/li&gt;
&lt;li&gt;Works with all Wrangler commands that support the &lt;code&gt;--env&lt;/code&gt; flag&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;--env&lt;/code&gt; command line argument takes precedence over the &lt;code&gt;CLOUDFLARE_ENV&lt;/code&gt; environment variable&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;example-usage&quot;&gt;Example usage&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#example-usage&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Deploy to the production environment using CLOUDFLARE_ENV&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;CLOUDFLARE_ENV&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;production&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; deploy&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Upload a version to the staging environment&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;CLOUDFLARE_ENV&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;staging&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; versions&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; upload&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# The --env flag takes precedence over CLOUDFLARE_ENV&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;CLOUDFLARE_ENV&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;dev&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; deploy&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --env&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; production&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# This will deploy to production, not dev&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;use-with-build-tools&quot;&gt;Use with build tools&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#use-with-build-tools&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;CLOUDFLARE_ENV&lt;/code&gt; environment variable is particularly useful when working with build tools like Vite. You can set the environment once during the build process, and it will be used for both building and deploying your Worker:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Set the environment for both build and deploy&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;CLOUDFLARE_ENV&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;production&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; npm&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; run&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; build&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; &amp;amp; &lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; deploy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;When using &lt;code&gt;@cloudflare/vite-plugin&lt;/code&gt;, the build process generates a &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/configuration/#generated-wrangler-configuration&quot;&gt;&quot;redirected deploy config&quot;&lt;/a&gt; that is flattened to only contain the active environment. Wrangler will validate that the environment specified matches the environment used during the build to prevent accidentally deploying a Worker built for one environment to a different environment.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;learn-more&quot;&gt;Learn more&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#learn-more&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/system-environment-variables/&quot;&gt;System environment variables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/environments/&quot;&gt;Environments&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Sun, 09 Nov 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Workers automatic tracing, now in open beta</title><link>https://docs.infinitegaming.org/changelog/post/2025-11-07-automatic-tracing/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-11-07-automatic-tracing/</guid><description>
&lt;p&gt;Enable automatic tracing on your Workers, giving you detailed metadata and timing information for every operation your Worker performs.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1920,height=1080,format=webp/_astro/R2_Screenshot.DAnOidMq.png&quot; alt=&quot;Tracing example&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1920&quot; height=&quot;1080&quot;&gt;
&lt;p&gt;Tracing helps you identify performance bottlenecks, resolve errors, and understand how your Worker interacts with other services on the Workers platform. You can now answer questions like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which calls are slowing down my application?&lt;/li&gt;
&lt;li&gt;Which queries to my database take the longest?&lt;/li&gt;
&lt;li&gt;What happened within a request that resulted in an error?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;You can now:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;View traces alongside your logs in the Workers Observability dashboard&lt;/li&gt;
&lt;li&gt;Export traces (and correlated logs) to any &lt;a href=&quot;https://opentelemetry.io/docs/specs/otel/protocol/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OTLP-compatible destination&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, such as &lt;a href=&quot;https://docs.infinitegaming.org/observability/export/opentelemetry/honeycomb/&quot;&gt;Honeycomb&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/observability/export/opentelemetry/sentry/&quot;&gt;Sentry&lt;/a&gt;, or &lt;a href=&quot;https://docs.infinitegaming.org/observability/export/opentelemetry/grafana-cloud/&quot;&gt;Grafana&lt;/a&gt;, by configuring a tracing destination in the &lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/workers-and-pages/observability/destinations&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Analyze and query across span attributes (operation type, status, duration, errors)&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;to-get-started-set&quot;&gt;To get started, set:&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#to-get-started-set&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;observability&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;traces&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;enabled&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;aside role=&quot;note&quot; aria-label=&quot;Note&quot; class=&quot;aside-card flex items-start gap-3 rounded-lg px-4 py-3 my-4&quot; style=&quot;--_c: var(--nb-info); --_t: var(--nb-info-muted);&quot; data-astro-cid-znle5jil&gt;&lt;span class=&quot;flex h-[1.375em] shrink-0 items-center&quot; aria-hidden=&quot;true&quot; data-astro-cid-znle5jil&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[1em] w-[1em]&quot; data-astro-cid-znle5jil=&quot;true&quot; data-icon=&quot;ph:info&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24m0 192a88 88 0 1 1 88-88a88.1 88.1 0 0 1-88 88m16-40a8 8 0 0 1-8 8a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 8 8m-32-92a12 12 0 1 1 12 12a12 12 0 0 1-12-12&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div class=&quot;flex min-w-0 flex-1 flex-col gap-0.5&quot; data-astro-cid-znle5jil&gt;&lt;p class=&quot;m-0 text-base leading-snug font-semibold&quot; data-astro-cid-znle5jil&gt;Note&lt;/p&gt;&lt;div class=&quot;aside-card-body text-sm leading-normal&quot; data-astro-cid-znle5jil&gt;&lt;p&gt;In the future, Cloudflare plans to enable automatic tracing in addition to logs
when you set &lt;code&gt;observability.enabled = true&lt;/code&gt; in your Wrangler configuration.&lt;/p&gt;&lt;p&gt;While automatic tracing is in early beta, this setting will not enable tracing by default,
and will only enable logs.&lt;/p&gt;&lt;p&gt;An updated &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/compatibility-dates/&quot;&gt;&lt;code&gt;compatibility_date&lt;/code&gt;&lt;/a&gt; will be required for this change to take effect.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;want-to-learn-more&quot;&gt;Want to learn more?&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#want-to-learn-more&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.cloudflare.com/workers-tracing-now-in-open-beta/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Read the announcement&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/traces/&quot;&gt;Check out the documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Fri, 07 Nov 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare One, Cloudflare WAN - Automatic Return Routing (Beta)</title><link>https://docs.infinitegaming.org/changelog/post/2025-11-06-automatic-return-routing-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-11-06-automatic-return-routing-beta/</guid><description>&lt;p&gt;Magic WAN now supports Automatic Return Routing (ARR), allowing customers to configure Magic on-ramps (IPsec/GRE/CNI) to learn the return path for traffic flows without requiring static routes.&lt;/p&gt;
&lt;p&gt;Key benefits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Route-less mode&lt;/strong&gt;: Static or dynamic routes are optional when using ARR.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Overlapping IP space support&lt;/strong&gt;: Traffic originating from customer sites can use overlapping private IP ranges.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Symmetric routing&lt;/strong&gt;: Return traffic is guaranteed to use the same connection as the original on-ramp.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This feature is currently in beta and requires the new Unified Routing mode (beta).&lt;/p&gt;
&lt;p&gt;For configuration details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/how-to/configure-routes/#configure-automatic-return-routing&quot;&gt;Configure Automatic Return Routing&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 06 Nov 2025 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category><category>Cloudflare WAN</category></item><item><title>Cloudflare One Appliance, Cloudflare One, Cloudflare WAN - Designate WAN link for breakout traffic</title><link>https://docs.infinitegaming.org/changelog/post/2025-11-06-connector-designate-wan-link-breakout/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-11-06-connector-designate-wan-link-breakout/</guid><description>&lt;p&gt;Magic WAN Connector now allows you to designate a specific WAN port for breakout traffic, giving you deterministic control over the egress path for latency-sensitive applications.&lt;/p&gt;
&lt;p&gt;With this feature, you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pin breakout traffic for specific applications to a preferred WAN port.&lt;/li&gt;
&lt;li&gt;Ensure critical traffic (such as Zoom or Teams) always uses your fastest or most reliable connection.&lt;/li&gt;
&lt;li&gt;Benefit from automatic failover to standard WAN port priority if the preferred port goes down.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is useful for organizations with multiple ISP uplinks who need predictable egress behavior for performance-sensitive traffic.&lt;/p&gt;
&lt;p&gt;For configuration details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/network-options/application-based-policies/breakout-traffic/#designate-wan-ports-for-breakout-apps&quot;&gt;Designate WAN ports for breakout apps&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 06 Nov 2025 00:00:00 GMT</pubDate><product>Cloudflare One Appliance</product><category>Cloudflare One Appliance</category><category>Cloudflare One</category><category>Cloudflare WAN</category></item><item><title>Gateway - Applications to be remapped to the new categories</title><link>https://docs.infinitegaming.org/changelog/post/2025-11-06-Applications-recategorised-plan/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-11-06-Applications-recategorised-plan/</guid><description>&lt;p&gt;We have previously added new application categories to better reflect their content and improve HTTP traffic management: refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/changelog/gateway/#2025-10-28&quot;&gt;Changelog&lt;/a&gt;.
While the new categories are live now, we want to ensure you have ample time to review and adjust any existing rules you have configured against old categories.
The remapping of existing applications into these new categories will be completed by January 30, 2026.
This timeline allows you a dedicated period to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Review the new category structure.&lt;/li&gt;
&lt;li&gt;Identify any policies you have that target the older categories.&lt;/li&gt;
&lt;li&gt;Adjust your rules to reference the new, more precise categories before the old mappings change.
Once the applications have been fully remapped by January 30, 2026, you might observe some changes in the traffic being mitigated or allowed by your existing policies. We encourage you to use the intervening time to prepare for a smooth transition.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Applications being remappedd&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Application Name&lt;/th&gt;
&lt;th&gt;Existing Category&lt;/th&gt;
&lt;th&gt;New Category&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Google Photos&lt;/td&gt;
&lt;td&gt;File Sharing&lt;/td&gt;
&lt;td&gt;Photography &amp;amp; Graphic Design&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flickr&lt;/td&gt;
&lt;td&gt;File Sharing&lt;/td&gt;
&lt;td&gt;Photography &amp;amp; Graphic Design&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ADP&lt;/td&gt;
&lt;td&gt;Human Resources&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Greenhouse&lt;/td&gt;
&lt;td&gt;Human Resources&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;myCigna&lt;/td&gt;
&lt;td&gt;Human Resources&lt;/td&gt;
&lt;td&gt;Health &amp;amp; Fitness&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UnitedHealthcare&lt;/td&gt;
&lt;td&gt;Human Resources&lt;/td&gt;
&lt;td&gt;Health &amp;amp; Fitness&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ZipRecruiter&lt;/td&gt;
&lt;td&gt;Human Resources&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Amazon Business&lt;/td&gt;
&lt;td&gt;Human Resources&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jobcenter&lt;/td&gt;
&lt;td&gt;Human Resources&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jobsuche&lt;/td&gt;
&lt;td&gt;Human Resources&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zenjob&lt;/td&gt;
&lt;td&gt;Human Resources&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DocuSign&lt;/td&gt;
&lt;td&gt;Legal&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Postident&lt;/td&gt;
&lt;td&gt;Legal&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adobe Creative Cloud&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Photography &amp;amp; Graphic Design&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Airtable&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Autodesk Fusion360&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;IT Management&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coursera&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Education&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft Power BI&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tableau&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Duolingo&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Education&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adobe Reader&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AnpiReport&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Travel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ビズリーチ&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;doda (デューダ)&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;求人ボックス&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;マイナビ2026&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Power Apps&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RECRUIT AGENT&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;シフトボード&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;スタンバイ&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Doctolib&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Health &amp;amp; Fitness&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Miro&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Photography &amp;amp; Graphic Design&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MyFitnessPal&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Health &amp;amp; Fitness&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sentry Mobile&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Travel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Slido&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Photography &amp;amp; Graphic Design&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Arista Networks&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;IT Management&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Atlassian&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CoderPad&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;eAgreements&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vmware&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;IT Management&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vmware Vcenter&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;IT Management&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AWS Skill Builder&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Education&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft Office 365 (GCC)&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft Exchange Online (GCC)&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Canva&lt;/td&gt;
&lt;td&gt;Sales &amp;amp; Marketing&lt;/td&gt;
&lt;td&gt;Photography &amp;amp; Graphic Design&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Instacart&lt;/td&gt;
&lt;td&gt;Shopping&lt;/td&gt;
&lt;td&gt;Food &amp;amp; Drink&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wawa&lt;/td&gt;
&lt;td&gt;Shopping&lt;/td&gt;
&lt;td&gt;Food &amp;amp; Drink&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;McDonald&apos;s&lt;/td&gt;
&lt;td&gt;Shopping&lt;/td&gt;
&lt;td&gt;Food &amp;amp; Drink&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vrbo&lt;/td&gt;
&lt;td&gt;Shopping&lt;/td&gt;
&lt;td&gt;Travel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;American Airlines&lt;/td&gt;
&lt;td&gt;Shopping&lt;/td&gt;
&lt;td&gt;Travel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Booking.com&lt;/td&gt;
&lt;td&gt;Shopping&lt;/td&gt;
&lt;td&gt;Travel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ticketmaster&lt;/td&gt;
&lt;td&gt;Shopping&lt;/td&gt;
&lt;td&gt;Entertainment &amp;amp; Events&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Airbnb&lt;/td&gt;
&lt;td&gt;Shopping&lt;/td&gt;
&lt;td&gt;Travel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DoorDash&lt;/td&gt;
&lt;td&gt;Shopping&lt;/td&gt;
&lt;td&gt;Food &amp;amp; Drink&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Expedia&lt;/td&gt;
&lt;td&gt;Shopping&lt;/td&gt;
&lt;td&gt;Travel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EasyPark&lt;/td&gt;
&lt;td&gt;Shopping&lt;/td&gt;
&lt;td&gt;Travel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UEFA Tickets&lt;/td&gt;
&lt;td&gt;Shopping&lt;/td&gt;
&lt;td&gt;Entertainment &amp;amp; Events&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DHL Express&lt;/td&gt;
&lt;td&gt;Shopping&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UPS&lt;/td&gt;
&lt;td&gt;Shopping&lt;/td&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;For more information on creating HTTP policies, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/application-app-types/&quot;&gt;Applications and app types&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 06 Nov 2025 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Workers - Capture Wrangler command output in structured format</title><link>https://docs.infinitegaming.org/changelog/post/2025-11-03-wrangler-output-file/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-11-03-wrangler-output-file/</guid><description>&lt;p&gt;You can now capture Wrangler command output in a structured &lt;a href=&quot;https://github.com/ndjson/ndjson-spec&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ND-JSON&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; format by setting the &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/system-environment-variables/#supported-environment-variables&quot;&gt;&lt;code&gt;WRANGLER_OUTPUT_FILE_PATH&lt;/code&gt;&lt;/a&gt; or &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/system-environment-variables/#supported-environment-variables&quot;&gt;&lt;code&gt;WRANGLER_OUTPUT_FILE_DIRECTORY&lt;/code&gt;&lt;/a&gt; environment variables. This feature is particularly useful for CI/CD pipelines and automation tools that need programmatic access to deployment information such as worker names, version IDs, deployment URLs, and error details. Commands that support this feature include &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/#deploy&quot;&gt;&lt;code&gt;wrangler deploy&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/#versions&quot;&gt;&lt;code&gt;wrangler versions upload&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/#versions&quot;&gt;&lt;code&gt;wrangler versions deploy&lt;/code&gt;&lt;/a&gt;, and &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/#deploy-1&quot;&gt;&lt;code&gt;wrangler pages deploy&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 03 Nov 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers, Durable Objects, Browser Run - Workers WebSocket message size limit increased from 1 MiB to 32 MiB</title><link>https://docs.infinitegaming.org/changelog/post/2025-10-31-increased-websocket-message-size-limit/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-10-31-increased-websocket-message-size-limit/</guid><description>&lt;p&gt;Workers, including those using &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/&quot;&gt;Durable Objects&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/browser-run/&quot;&gt;Browser Rendering&lt;/a&gt;, may now process WebSocket messages up to 32 MiB in size. Previously, this limit was 1 MiB.&lt;/p&gt;
&lt;p&gt;This change allows Workers to handle use cases requiring large message sizes, such as processing Chrome Devtools Protocol messages.&lt;/p&gt;
&lt;p&gt;For more information, please see the &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/platform/limits/#sqlite-backed-durable-objects-general-limits&quot;&gt;Durable Objects startup limits&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 31 Oct 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category><category>Durable Objects</category><category>Browser Run</category></item><item><title>Workers - Access Workers preview URLs from the Build details page</title><link>https://docs.infinitegaming.org/changelog/post/2025-10-30-builds-preview/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-10-30-builds-preview/</guid><description>&lt;p&gt;You can now access &lt;a href=&quot;https://docs.infinitegaming.org/workers/versions-and-deployments/preview-urls/&quot;&gt;preview URLs&lt;/a&gt; directly from the build details page, making it easier to test your changes when reviewing builds in the dashboard.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1656,height=1112,format=webp/_astro/builds-preview-button.CjGnhkt7.png&quot; alt=&quot;preview button&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1656&quot; height=&quot;1112&quot;&gt;
&lt;p&gt;&lt;strong&gt;What&apos;s new&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;Preview&lt;/strong&gt; button now appears in the top-right corner of the build details page for successful builds&lt;/li&gt;
&lt;li&gt;Click it to instantly open the latest preview URL&lt;/li&gt;
&lt;li&gt;Matches the same experience you&apos;re familiar with from Pages&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Thu, 30 Oct 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Access - Access private hostname applications support all ports/protocols</title><link>https://docs.infinitegaming.org/changelog/post/2025-10-28-Access-Application-Support-For-All-Ports-And-Protocols/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-10-28-Access-Application-Support-For-All-Ports-And-Protocols/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/non-http/self-hosted-private-app/&quot;&gt;Cloudflare Access for private hostname applications&lt;/a&gt; can now secure traffic on all ports and protocols.&lt;/p&gt;
&lt;p&gt;Previously, applying Zero Trust policies to private applications required the application to use HTTPS on port &lt;code&gt;443&lt;/code&gt; and support Server Name Indicator (SNI).&lt;/p&gt;
&lt;p&gt;This update removes that limitation. As long as the application is reachable via a Cloudflare off-ramp, you can now enforce your critical security controls — like single sign-on (SSO), MFA, device posture, and variable session lengths — to any private application. This allows you to extend Zero Trust security to services like SSH, RDP, internal databases, and other non-HTTPS applications.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1283,height=496,format=webp/_astro/internal_private_app_any_port.DNXnEy0u.png&quot; alt=&quot;Example private application on non-443 port&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1283&quot; height=&quot;496&quot;&gt;
&lt;p&gt;For example, you can now create a self-hosted application in Access for &lt;code&gt;ssh.testapp.local&lt;/code&gt; running on port &lt;code&gt;22&lt;/code&gt;. You can then build a policy that only allows engineers in your organization to connect after they pass an SSO/MFA check and are using a corporate device.&lt;/p&gt;
&lt;p&gt;This feature is generally available across all plans.&lt;/p&gt;</description><pubDate>Tue, 28 Oct 2025 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>CASB - CASB introduces new granular roles</title><link>https://docs.infinitegaming.org/changelog/post/2025-10-28-casb-roles/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-10-28-casb-roles/</guid><description>&lt;p&gt;Cloudflare CASB (Cloud Access Security Broker) now supports two new granular roles to provide more precise access control for your security teams:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare CASB Read:&lt;/strong&gt; Provides read-only access to view CASB findings and dashboards. This role is ideal for security analysts, compliance auditors, or team members who need visibility without modification rights.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare CASB:&lt;/strong&gt; Provides full administrative access to configure and manage all aspects of the CASB product.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These new roles help you better enforce the principle of least privilege. You can now grant specific members access to CASB security findings without assigning them broader permissions, such as the &lt;strong&gt;Super Administrator&lt;/strong&gt; or &lt;strong&gt;Administrator&lt;/strong&gt; roles.&lt;/p&gt;
&lt;p&gt;To enable &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/dlp-profiles/&quot;&gt;Data Loss Prevention (DLP)&lt;/a&gt;, scans in CASB, account members will need the &lt;strong&gt;Cloudflare Zero Trust&lt;/strong&gt; role.&lt;/p&gt;
&lt;p&gt;You can find these new roles when inviting members or creating API tokens in the Cloudflare dashboard under &lt;strong&gt;Manage Account&lt;/strong&gt; &amp;gt; &lt;strong&gt;Members&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;To learn more about managing roles and permissions, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/manage-members/roles/&quot;&gt;Manage account members and roles documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 28 Oct 2025 00:00:00 GMT</pubDate><product>CASB</product><category>CASB</category></item><item><title>Gateway - New Application Categories added for HTTP Traffic Management</title><link>https://docs.infinitegaming.org/changelog/post/Gateway-application-categories-added/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/Gateway-application-categories-added/</guid><description>&lt;p&gt;To give you precision and flexibility while creating policies to block unwanted traffic, we are introducing new, more granular application categories in the Gateway product.&lt;/p&gt;
&lt;p&gt;We have added the following categories to provide more precise organization and allow for finer-grained policy creation, designed around how users interact with different types of applications:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Business&lt;/li&gt;
&lt;li&gt;Education&lt;/li&gt;
&lt;li&gt;Entertainment &amp;amp; Events&lt;/li&gt;
&lt;li&gt;Food &amp;amp; Drink&lt;/li&gt;
&lt;li&gt;Health &amp;amp; Fitness&lt;/li&gt;
&lt;li&gt;Lifestyle&lt;/li&gt;
&lt;li&gt;Navigation&lt;/li&gt;
&lt;li&gt;Photography &amp;amp; Graphic Design&lt;/li&gt;
&lt;li&gt;Travel&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The new categories are live now, but we are providing a transition period for existing applications to be fully remapped to these new categories.&lt;/p&gt;
&lt;p&gt;The full remapping will be completed by January 30, 2026.&lt;/p&gt;
&lt;p&gt;We encourage you to use this time to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Review the new category structure.&lt;/li&gt;
&lt;li&gt;Identify and adjust any existing HTTP policies that reference older categories to ensure a smooth transition.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information on creating HTTP policies, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/application-app-types/&quot;&gt;Applications and app types&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 28 Oct 2025 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Workers - Automatic resource provisioning for KV, R2, and D1</title><link>https://docs.infinitegaming.org/changelog/post/2025-10-24-automatic-resource-provisioning/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-10-24-automatic-resource-provisioning/</guid><description>
&lt;p&gt;Previously, if you wanted to develop or deploy a worker with attached resources, you&apos;d have to first manually create the desired resources. Now, if your Wrangler configuration file includes a KV namespace, D1 database, or R2 bucket that does not yet exist on your account, you can develop locally and deploy your application seamlessly, without having to run additional commands.&lt;/p&gt;
&lt;p&gt;Automatic provisioning is launching as an open beta, and we&apos;d love to hear your feedback to help us make improvements! It currently works for KV, R2, and D1 bindings. You can disable the feature using the &lt;code&gt;--no-x-provision&lt;/code&gt; flag.&lt;/p&gt;
&lt;p&gt;To use this feature, update to wrangler@4.45.0 and add bindings to your config file &lt;em&gt;without&lt;/em&gt; resource IDs e.g.:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;kv_namespaces&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [{ &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;&quot;binding&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MY_KV&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; }],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;d1_databases&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [{ &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;&quot;binding&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MY_DB&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; }],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;r2_buckets&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [{ &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;&quot;binding&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MY_R2&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; }],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;&lt;code&gt;wrangler dev&lt;/code&gt; will then automatically create these resources for you locally, and on your next run of &lt;code&gt;wrangler deploy&lt;/code&gt;, Wrangler will call the Cloudflare API to create the requested resources and link them to your Worker.&lt;/p&gt;
&lt;p&gt;Though resource IDs will be automatically written back to your Wrangler config file after resource creation, resources will stay linked across future deploys even without adding the resource IDs to the config file. This is especially useful for shared templates, which now no longer need to include account-specific resource IDs when adding a binding.&lt;/p&gt;</description><pubDate>Fri, 24 Oct 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Build TanStack Start apps with the Cloudflare Vite plugin</title><link>https://docs.infinitegaming.org/changelog/post/2025-10-24-tanstack-start/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-10-24-tanstack-start/</guid><description>
&lt;p&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/workers/vite-plugin/&quot;&gt;Cloudflare Vite plugin&lt;/a&gt; now supports &lt;a href=&quot;https://tanstack.com/start/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;TanStack Start&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; apps.
Get started with new or existing projects.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;new-projects&quot;&gt;New projects&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#new-projects&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Create a new TanStack Start project that uses the Cloudflare Vite plugin via the &lt;code&gt;create-cloudflare&lt;/code&gt; CLI:&lt;/p&gt;
&lt;script&gt;
	if (!customElements.get(&quot;nb-pm-restore&quot;)) {
		customElements.define(
			&quot;nb-pm-restore&quot;,
			class extends HTMLElement {
				connectedCallback() {
					const card = this.closest(&quot;[data-nb-pm]&quot;);
					if (!card) return;
					let saved;
					try {
						saved = sessionStorage.getItem(&quot;ui-pm-tab&quot;);
					} catch {
						return;
					}
					if (!saved) return;
					const tabs = card.querySelectorAll(&quot;[data-nb-pm-tab]&quot;);
					let idx = -1;
					tabs.forEach(function (t, i) {
						if (t.textContent.trim() === saved) idx = i;
					});
					if (idx &lt; 1) return;
					tabs.forEach(function (t, i) {
						t.setAttribute(&quot;aria-selected&quot;, String(i === idx));
					});
					card.querySelectorAll(&quot;[data-nb-pm-panel]&quot;).forEach(function (p, i) {
						p.hidden = i !== idx;
					});
				}
			},
		);
	}
&lt;/script&gt;&lt;div data-nb-pm class=&quot;w-full&quot;&gt;&lt;div class=&quot;flex w-full flex-col overflow-hidden rounded-lg text-sm ring ring-border bg-card&quot;&gt;&lt;div class=&quot;flex items-center gap-2 px-3 py-2 text-[0.8125rem] font-medium leading-5 text-muted-foreground bg-[var(--nb-surface-sunken)]&quot; role=&quot;tablist&quot; aria-label=&quot;Package manager&quot;&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;true&quot; aria-controls=&quot;pm-panel-pm-0b74149b-3257-4dbc-99da-5edd709790a2-npm&quot; id=&quot;pm-tab-pm-0b74149b-3257-4dbc-99da-5edd709790a2-npm&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;npm&lt;/button&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;false&quot; aria-controls=&quot;pm-panel-pm-0b74149b-3257-4dbc-99da-5edd709790a2-yarn&quot; id=&quot;pm-tab-pm-0b74149b-3257-4dbc-99da-5edd709790a2-yarn&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;yarn&lt;/button&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;false&quot; aria-controls=&quot;pm-panel-pm-0b74149b-3257-4dbc-99da-5edd709790a2-pnpm&quot; id=&quot;pm-tab-pm-0b74149b-3257-4dbc-99da-5edd709790a2-pnpm&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;pnpm&lt;/button&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-0b74149b-3257-4dbc-99da-5edd709790a2-npm&quot; aria-labelledby=&quot;pm-tab-pm-0b74149b-3257-4dbc-99da-5edd709790a2-npm&quot; data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;npm&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; create cloudflare@latest -- my-tanstack-start-app --framework=tanstack-start&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;npm create cloudflare@latest -- my-tanstack-start-app --framework=tanstack-start&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-0b74149b-3257-4dbc-99da-5edd709790a2-yarn&quot; aria-labelledby=&quot;pm-tab-pm-0b74149b-3257-4dbc-99da-5edd709790a2-yarn&quot; hidden data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;yarn&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; create cloudflare my-tanstack-start-app --framework=tanstack-start&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;yarn create cloudflare my-tanstack-start-app --framework=tanstack-start&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-0b74149b-3257-4dbc-99da-5edd709790a2-pnpm&quot; aria-labelledby=&quot;pm-tab-pm-0b74149b-3257-4dbc-99da-5edd709790a2-pnpm&quot; hidden data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;pnpm&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; create cloudflare@latest my-tanstack-start-app --framework=tanstack-start&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;pnpm create cloudflare@latest my-tanstack-start-app --framework=tanstack-start&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;nb-pm-restore style=&quot;display:contents&quot;&gt;&lt;/nb-pm-restore&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/package-managers/PackageManagerTabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;existing-projects&quot;&gt;Existing projects&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#existing-projects&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Migrate an existing TanStack Start project to use the Cloudflare Vite plugin:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install &lt;code&gt;@cloudflare/vite-plugin&lt;/code&gt; and &lt;code&gt;wrangler&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;script&gt;
	if (!customElements.get(&quot;nb-pm-restore&quot;)) {
		customElements.define(
			&quot;nb-pm-restore&quot;,
			class extends HTMLElement {
				connectedCallback() {
					const card = this.closest(&quot;[data-nb-pm]&quot;);
					if (!card) return;
					let saved;
					try {
						saved = sessionStorage.getItem(&quot;ui-pm-tab&quot;);
					} catch {
						return;
					}
					if (!saved) return;
					const tabs = card.querySelectorAll(&quot;[data-nb-pm-tab]&quot;);
					let idx = -1;
					tabs.forEach(function (t, i) {
						if (t.textContent.trim() === saved) idx = i;
					});
					if (idx &lt; 1) return;
					tabs.forEach(function (t, i) {
						t.setAttribute(&quot;aria-selected&quot;, String(i === idx));
					});
					card.querySelectorAll(&quot;[data-nb-pm-panel]&quot;).forEach(function (p, i) {
						p.hidden = i !== idx;
					});
				}
			},
		);
	}
&lt;/script&gt;&lt;div data-nb-pm class=&quot;w-full&quot;&gt;&lt;div class=&quot;flex w-full flex-col overflow-hidden rounded-lg text-sm ring ring-border bg-card&quot;&gt;&lt;div class=&quot;flex items-center gap-2 px-3 py-2 text-[0.8125rem] font-medium leading-5 text-muted-foreground bg-[var(--nb-surface-sunken)]&quot; role=&quot;tablist&quot; aria-label=&quot;Package manager&quot;&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;true&quot; aria-controls=&quot;pm-panel-pm-b7c0b4aa-4101-4537-a5b8-0290252def73-npm&quot; id=&quot;pm-tab-pm-b7c0b4aa-4101-4537-a5b8-0290252def73-npm&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;npm&lt;/button&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;false&quot; aria-controls=&quot;pm-panel-pm-b7c0b4aa-4101-4537-a5b8-0290252def73-yarn&quot; id=&quot;pm-tab-pm-b7c0b4aa-4101-4537-a5b8-0290252def73-yarn&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;yarn&lt;/button&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;false&quot; aria-controls=&quot;pm-panel-pm-b7c0b4aa-4101-4537-a5b8-0290252def73-pnpm&quot; id=&quot;pm-tab-pm-b7c0b4aa-4101-4537-a5b8-0290252def73-pnpm&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;pnpm&lt;/button&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;false&quot; aria-controls=&quot;pm-panel-pm-b7c0b4aa-4101-4537-a5b8-0290252def73-bun&quot; id=&quot;pm-tab-pm-b7c0b4aa-4101-4537-a5b8-0290252def73-bun&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;bun&lt;/button&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-b7c0b4aa-4101-4537-a5b8-0290252def73-npm&quot; aria-labelledby=&quot;pm-tab-pm-b7c0b4aa-4101-4537-a5b8-0290252def73-npm&quot; data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;npm&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; i -D @cloudflare/vite-plugin wrangler&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;npm i -D @cloudflare/vite-plugin wrangler&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-b7c0b4aa-4101-4537-a5b8-0290252def73-yarn&quot; aria-labelledby=&quot;pm-tab-pm-b7c0b4aa-4101-4537-a5b8-0290252def73-yarn&quot; hidden data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;yarn&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; add -D @cloudflare/vite-plugin wrangler&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;yarn add -D @cloudflare/vite-plugin wrangler&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-b7c0b4aa-4101-4537-a5b8-0290252def73-pnpm&quot; aria-labelledby=&quot;pm-tab-pm-b7c0b4aa-4101-4537-a5b8-0290252def73-pnpm&quot; hidden data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;pnpm&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; add -D @cloudflare/vite-plugin wrangler&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;pnpm add -D @cloudflare/vite-plugin wrangler&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-b7c0b4aa-4101-4537-a5b8-0290252def73-bun&quot; aria-labelledby=&quot;pm-tab-pm-b7c0b4aa-4101-4537-a5b8-0290252def73-bun&quot; hidden data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;bun&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; add -d @cloudflare/vite-plugin wrangler&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;bun add -d @cloudflare/vite-plugin wrangler&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;nb-pm-restore style=&quot;display:contents&quot;&gt;&lt;/nb-pm-restore&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;Add the Cloudflare plugin to your Vite config&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;vite.config.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { defineConfig } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;vite&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { tanstackStart } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;@tanstack/react-start/plugin/vite&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; viteReact &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;@vitejs/plugin-react&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line highlighted&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { cloudflare } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;@cloudflare/vite-plugin&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; defineConfig&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	plugins: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line highlighted&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;		cloudflare&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({ viteEnvironment: { name: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;ssr&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; } }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;		tanstackStart&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;		viteReact&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;Add your Worker config file&lt;/li&gt;
&lt;/ol&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;$schema&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./node_modules/wrangler/config-schema.json&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my-tanstack-start-app&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;	// Set this to today&apos;s date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;compatibility_date&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;2026-10-11&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;compatibility_flags&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;		&quot;nodejs_compat&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;main&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;@tanstack/react-start/server-entry&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&quot;$schema&quot; = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./node_modules/wrangler/config-schema.json&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;name = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my-tanstack-start-app&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Set this to today&apos;s date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;compatibility_date = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;2026-10-11&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;compatibility_flags = [ &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;nodejs_compat&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;main = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;@tanstack/react-start/server-entry&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;Modify the scripts in your &lt;code&gt;package.json&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;json&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;package.json&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;json&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot; data-nb-lang=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;scripts&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;dev&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;vite dev&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;build&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;vite build &amp;amp;&amp;amp; tsc --noEmit&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line diff remove&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;start&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;node .output/server/index.mjs&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line diff add&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;preview&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;vite preview&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line diff add&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;deploy&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;npm run build &amp;amp;&amp;amp; wrangler deploy&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line diff add&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;cf-typegen&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;wrangler types&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;See the &lt;a href=&quot;https://docs.infinitegaming.org/workers/framework-guides/web-apps/tanstack-start/&quot;&gt;TanStack Start framework guide&lt;/a&gt; for more info.&lt;/p&gt;</description><pubDate>Fri, 24 Oct 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Workers Preview URL default behavior now matches your workers.dev setting</title><link>https://docs.infinitegaming.org/changelog/post/2025-10-23-preview-url-default-behavior/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-10-23-preview-url-default-behavior/</guid><description>&lt;p&gt;We have updated the default behavior for Cloudflare Workers &lt;a href=&quot;https://docs.infinitegaming.org/workers/versions-and-deployments/preview-urls/&quot;&gt;Preview URLs&lt;/a&gt;. &lt;strong&gt;Going forward, if a preview URL setting is not &lt;a href=&quot;https://docs.infinitegaming.org/workers/versions-and-deployments/preview-urls/#toggle-preview-urls-enable-or-disable&quot;&gt;explicitly configured&lt;/a&gt; during deployment, its default behavior will automatically match the setting of your &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/routing/workers-dev/&quot;&gt;&lt;code&gt;workers.dev&lt;/code&gt; subdomain&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This change is intended to provide a more intuitive and secure experience by aligning your preview URL&apos;s default state with your &lt;code&gt;workers.dev&lt;/code&gt; configuration to prevent cases where a preview URL might remain public even after you disabled your &lt;code&gt;workers.dev&lt;/code&gt; route.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What this means for you:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;If neither setting is configured:&lt;/strong&gt; both the workers.dev route and the preview URL will default to enabled&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;If your workers.dev route is enabled and you do not explicitly set Preview URLs to enabled or disabled:&lt;/strong&gt; Preview URLs will default to enabled&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;If your workers.dev route is disabled and you do not explicitly set Preview URLs to enabled or disabled:&lt;/strong&gt; Preview URLs will default to disabled&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can override the default setting by explicitly enabling or disabling the preview URL in your Worker&apos;s configuration through the &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/workers/subresources/scripts/subresources/subdomain/&quot;&gt;API&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/workers/versions-and-deployments/preview-urls/#from-the-dashboard&quot;&gt;Dashboard&lt;/a&gt;, or &lt;a href=&quot;https://docs.infinitegaming.org/workers/versions-and-deployments/preview-urls/#from-the-wrangler-configuration-file&quot;&gt;Wrangler&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wrangler Version Behavior&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The default behavior depends on the version of Wrangler you are using. This new logic applies to the latest version. Here is a summary of the behavior across different versions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Before v4.34.0:&lt;/strong&gt; Preview URLs defaulted to enabled, regardless of the workers.dev setting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;v4.34.0 up to (but not including) v4.44.0:&lt;/strong&gt; Preview URLs defaulted to disabled, regardless of the workers.dev setting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;v4.44.0 or later:&lt;/strong&gt; Preview URLs now default to matching your workers.dev setting.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Why we’re making this change&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In July, &lt;a href=&quot;https://docs.infinitegaming.org/changelog/2025-07-23-workers-preview-urls/&quot;&gt;we introduced preview URLs to Workers&lt;/a&gt;, which let you preview code changes before deploying to production. This made disabling your Worker’s workers.dev URL an ambiguous action — the preview URL, served as a subdomain of &lt;code&gt;workers.dev&lt;/code&gt; (ex: &lt;code&gt;preview-id-worker-name.account-name.workers.dev&lt;/code&gt;) would still be live even if you had disabled your Worker’s &lt;code&gt;workers.dev&lt;/code&gt; route. If you misinterpreted what it meant to disable your &lt;code&gt;workers.dev&lt;/code&gt; route, you might unintentionally leave preview URLs enabled when you didn’t mean to, and expose them to the public Internet.&lt;/p&gt;
&lt;p&gt;To address this, we made a &lt;a href=&quot;https://docs.infinitegaming.org/changelog/2025-09-17-update-preview-url-setting/&quot;&gt;one-time update&lt;/a&gt; to disable preview URLs on existing Workers that had their workers.dev route disabled and changed the default behavior to be disabled for all new deployments where a preview URL setting was not explicitly configured.&lt;/p&gt;
&lt;p&gt;While this change helped secure many customers, it was disruptive for customers who keep their &lt;code&gt;workers.dev&lt;/code&gt; route enabled and actively use the preview functionality, as it now required them to explicitly enable preview URLs on every redeployment.This new, more intuitive behavior ensures that your preview URL settings align with your &lt;code&gt;workers.dev&lt;/code&gt; configuration by default, providing a more secure and predictable experience.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Securing access to &lt;code&gt;workers.dev&lt;/code&gt; and preview URL endpoints&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To further secure your &lt;code&gt;workers.dev&lt;/code&gt; subdomain and preview URL, you can &lt;a href=&quot;https://docs.infinitegaming.org/changelog/2025-10-03-one-click-access-for-workers/&quot;&gt;enable Cloudflare Access with a single click&lt;/a&gt; in your Worker&apos;s settings to limit access to specific users or groups.&lt;/p&gt;</description><pubDate>Thu, 23 Oct 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Gateway - Schedule DNS policies from the UI</title><link>https://docs.infinitegaming.org/changelog/post/2025-10-20-schedule-dns-policies-from-the-ui/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-10-20-schedule-dns-policies-from-the-ui/</guid><description>&lt;p&gt;Admins can now create &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/dns-policies/timed-policies/&quot;&gt;scheduled DNS policies&lt;/a&gt; directly from the Zero Trust dashboard, without using the API. You can configure policies to be active during specific, recurring times, such as blocking social media during business hours or gaming sites on school nights.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Preset Schedules&lt;/strong&gt;: Use built-in templates for common scenarios like Business Hours, School Days, Weekends, and more.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Custom Schedules&lt;/strong&gt;: Define your own schedule with specific days and up to three non-overlapping time ranges per day.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Timezone Control&lt;/strong&gt;: Choose to enforce a schedule in a specific timezone (for example, US Eastern) or based on the local time of each user.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Combined with Duration&lt;/strong&gt;: Policies can have both a schedule and a duration. If both are set, the duration&apos;s expiration takes precedence.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can see the flow in the demo GIF:&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1053,height=879,format=webp/_astro/gateway-dns-scheduled-policies-ui.Cf4l1OTE.gif&quot; alt=&quot;Schedule DNS policies demo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1053&quot; height=&quot;879&quot;&gt;
&lt;p&gt;This update makes time-based DNS policies accessible to all Gateway customers, removing the technical barrier of the API.&lt;/p&gt;</description><pubDate>Mon, 20 Oct 2025 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Email security - On-Demand Security Report</title><link>https://docs.infinitegaming.org/changelog/post/2025-10-16-on-demand-security-report/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-10-16-on-demand-security-report/</guid><description>&lt;p&gt;You can now generate on-demand security reports directly from the Cloudflare dashboard. This new feature provides a comprehensive overview of your email security posture, making it easier than ever to demonstrate the value of Cloudflare’s Email security to executives and other decision makers.&lt;/p&gt;
&lt;p&gt;These reports offer several key benefits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Executive Summary:&lt;/strong&gt; Quickly view the performance of Email security with a high-level executive summary.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actionable Insights:&lt;/strong&gt; Dive deep into trend data, breakdowns of threat types, and analysis of top targets to identify and address vulnerabilities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configuration Transparency:&lt;/strong&gt; Gain a clear view of your policy, submission, and domain configurations to ensure optimal setup.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Account Takeover Risks:&lt;/strong&gt; Get a snapshot of your M365 risky users (requires a Microsoft Entra ID P2 license and &lt;a href=&quot;https://developers.cloudflare.com/cloudflare-one/integrations/cloud-and-saas/microsoft-365/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;M365 SaaS integration&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To get started, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/email-security/monitoring/download-report/#download-a-security-report&quot;&gt;Download a security report&lt;/a&gt;.
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1009,height=571,format=webp/_astro/report.CbkPa8Jt.png&quot; alt=&quot;Report&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1009&quot; height=&quot;571&quot;&gt;&lt;/p&gt;
&lt;p&gt;This feature is available across the following Email security packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Advantage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise + PhishGuard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Fri, 17 Oct 2025 22:14:43 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Cloudflare One Client - WARP client for Windows (version 2025.9.173.1)</title><link>https://docs.infinitegaming.org/changelog/post/2025-10-16-warp-windows-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-10-16-warp-windows-beta/</guid><description>&lt;p&gt;A new Beta release for the Windows WARP client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/beta-releases/&quot;&gt;beta releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains minor fixes, improvements, and new features including Path Maximum Transmission Unit Discovery (PMTUD). With PMTUD enabled, the client will dynamically adjust packet sizing to optimize connection performance. There is also a new connection status message in the GUI to inform users that the local network connection may be unstable. This will make it easier to debug connectivity issues.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improvements for &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/windows-multiuser/&quot;&gt;Windows multi-user&lt;/a&gt; to maintain the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/settings/#disconnect-warp-on-all-devices&quot;&gt;Global WARP override&lt;/a&gt; state when switching between users.&lt;/li&gt;
&lt;li&gt;The GUI now displays the health of the tunnel and DNS connections by showing a connection status message when the network may be unstable. This will make it easier to debug connectivity issues.&lt;/li&gt;
&lt;li&gt;Deleting registrations no longer returns an error when succeeding.&lt;/li&gt;
&lt;li&gt;Path Maximum Transmission Unit Discovery (PMTUD) is now used to discover the effective MTU of the connection. This allows the client to improve connection performance optimized for the current network.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;For Windows 11 24H2 users, Microsoft has confirmed a regression that may lead to performance issues like mouse lag, audio cracking, or other slowdowns. Cloudflare recommends users experiencing these issues upgrade to a minimum &lt;a href=&quot;https://support.microsoft.com/en-us/topic/july-8-2025-kb5062553-os-build-26100-4652-523e69cb-051b-43c6-8376-6a76d6caeefd&quot;&gt;Windows 11 24H2 KB5062553&lt;/a&gt; or higher for resolution.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Devices using WARP client 2025.4.929.0 and up may experience Local Domain Fallback failures if a fallback server has not been configured. To configure a fallback server, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/route-traffic/local-domains/#route-traffic-to-fallback-server&quot;&gt;Route traffic to fallback server&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Devices with KB5055523 installed may receive a warning about &lt;code&gt;Win32/ClickFix.ABA&lt;/code&gt; being present in the installer. To resolve this false positive, update Microsoft Security Intelligence to &lt;a href=&quot;https://www.microsoft.com/en-us/wdsi/definitions/antimalware-definition-release-notes?requestVersion=1.429.19.0&quot;&gt;version 1.429.19.0&lt;/a&gt; or later.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DNS resolution may be broken when the following conditions are all true:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WARP is in Secure Web Gateway without DNS filtering (tunnel-only) mode.&lt;/li&gt;
&lt;li&gt;A custom DNS server address is configured on the primary network adapter.&lt;/li&gt;
&lt;li&gt;The custom DNS server address on the primary network adapter is changed while WARP is connected.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To work around this issue, reconnect the WARP client by toggling off and back on.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Thu, 16 Oct 2025 15:29:54 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - WARP client for macOS (version 2025.9.173.1)</title><link>https://docs.infinitegaming.org/changelog/post/2025-10-16-warp-macos-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-10-16-warp-macos-beta/</guid><description>&lt;p&gt;A new Beta release for the macOS WARP client is now available on the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/download/beta-releases/&quot;&gt;beta releases downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release contains minor fixes, improvements, and new features including Path Maximum Transmission Unit Discovery (PMTUD). With PMTUD enabled, the client will dynamically adjust packet sizing to optimize connection performance. There is also a new connection status message in the GUI to inform users that the local network connection may be unstable. This will make it easier to debug connectivity issues.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The GUI now displays the health of the tunnel and DNS connections by showing a connection status message when the network may be unstable. This will make it easier to debug connectivity issues.&lt;/li&gt;
&lt;li&gt;Deleting registrations no longer returns an error when succeeding.&lt;/li&gt;
&lt;li&gt;Path Maximum Transmission Unit Discovery (PMTUD) is now used to discover the effective MTU of the connection. This allows the client to improve connection performance optimized for the current network.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;macOS Sequoia: Due to changes Apple introduced in macOS 15.0.x, the WARP client may not behave as expected. Cloudflare recommends the use of macOS 15.4 or later.&lt;/li&gt;
&lt;li&gt;Devices using WARP client 2025.4.929.0 and up may experience Local Domain Fallback failures if a fallback server has not been configured. To configure a fallback server, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/route-traffic/local-domains/#route-traffic-to-fallback-server&quot;&gt;Route traffic to fallback server&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Thu, 16 Oct 2025 15:29:52 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Load Balancing - Monitor Groups for Advanced Health Checking With Load Balancing</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-15-monitor-groups-for-load-balancing/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-15-monitor-groups-for-load-balancing/</guid><description>&lt;p&gt;Cloudflare Load Balancing now supports Monitor Groups, a powerful new way to combine multiple health monitors into a single, logical group. This allows you to create sophisticated health checks that more accurately reflect the true availability of your applications by assessing multiple services at once.&lt;/p&gt;
&lt;p&gt;With Monitor Groups, you can ensure that all critical components of an application are healthy before sending traffic to an origin pool, enabling smarter failover decisions and greater resilience. This feature is now available via the API for customers with an Enterprise Load Balancing subscription.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;what-you-can-do&quot;&gt;What you can do:&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#what-you-can-do&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Combine Multiple Monitors&lt;/strong&gt;: Group different health monitors (for example, HTTP, TCP) that check various application components, like a primary API gateway and a specific &lt;code&gt;/login&lt;/code&gt; service.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Isolate Monitors for Observation&lt;/strong&gt;: Mark a monitor as &quot;monitoring only&quot; to receive alerts and data without it affecting a pool&apos;s health status or traffic steering. This is perfect for testing new checks or observing non-critical dependencies.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Improve Steering Intelligence&lt;/strong&gt;: Latency for Dynamic Steering is automatically averaged across all active monitors in a group, providing a more holistic view of an origin&apos;s performance.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This enhancement is ideal for complex, multi-service applications where the health of one component depends on another. By aggregating health signals, Monitor Groups provide a more accurate and comprehensive assessment of your application&apos;s true status.&lt;/p&gt;
&lt;p&gt;For detailed information and API configuration guides, please visit our &lt;a href=&quot;https://docs.infinitegaming.org/load-balancing/monitors/monitor-groups&quot;&gt;developer documentation&lt;/a&gt; for Monitor Groups.&lt;/p&gt;</description><pubDate>Thu, 16 Oct 2025 00:00:00 GMT</pubDate><product>Load Balancing</product><category>Load Balancing</category></item><item><title>Gateway - New domain categories added</title><link>https://docs.infinitegaming.org/changelog/post/2025-10-10-new-domain-categories/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-10-10-new-domain-categories/</guid><description>&lt;p&gt;We have added three new domain categories under the Technology parent category, to better reflect online content and improve DNS filtering.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;New categories added&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parent ID&lt;/th&gt;
&lt;th&gt;Parent Name&lt;/th&gt;
&lt;th&gt;Category ID&lt;/th&gt;
&lt;th&gt;Category Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;Technology&lt;/td&gt;
&lt;td&gt;194&lt;/td&gt;
&lt;td&gt;Keep Awake Software&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;Technology&lt;/td&gt;
&lt;td&gt;192&lt;/td&gt;
&lt;td&gt;Remote Access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;Technology&lt;/td&gt;
&lt;td&gt;193&lt;/td&gt;
&lt;td&gt;Shareware/Freeware&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/domain-categories/&quot;&gt;Gateway domain categories&lt;/a&gt; to learn more.&lt;/p&gt;</description><pubDate>Fri, 10 Oct 2025 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Workers - Worker startup time limit increased to 1 second</title><link>https://docs.infinitegaming.org/changelog/post/2025-10-10-increased-startup-time/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-10-10-increased-startup-time/</guid><description>
&lt;p&gt;You can now upload a Worker that takes up 1 second to parse and execute its global scope. Previously, startup time was limited to 400 ms.&lt;/p&gt;
&lt;p&gt;This allows you to run Workers that import more complex packages and execute more code prior to requests being handled.&lt;/p&gt;
&lt;p&gt;For more information, see the documentation on &lt;a href=&quot;https://docs.infinitegaming.org/workers/platform/limits/#worker-startup-time&quot;&gt;Workers startup limits&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 10 Oct 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - You can now deploy full-stack apps on Workers using Terraform</title><link>https://docs.infinitegaming.org/changelog/post/2025-10-09-assets-terraform/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-10-09-assets-terraform/</guid><description>
&lt;p&gt;You can now upload Workers with &lt;a href=&quot;https://docs.infinitegaming.org/workers/static-assets/&quot;&gt;static assets&lt;/a&gt; (like HTML, CSS, JavaScript, images) with the &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/5.11.0/docs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Terraform provider v5.11.0&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, making it even easier to deploy and manage full-stack apps with IaC.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Previously&lt;/strong&gt;, you couldn&apos;t use Terraform to upload static assets without writing custom scripts to handle generating an &lt;a href=&quot;https://docs.infinitegaming.org/workers/static-assets/direct-upload/#upload-manifest&quot;&gt;asset manifest&lt;/a&gt;, calling the &lt;a href=&quot;https://docs.infinitegaming.org/workers/static-assets/direct-upload/#upload-static-assets&quot;&gt;Cloudflare API to upload assets in chunks&lt;/a&gt;, and handling change detection.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Now&lt;/strong&gt;, you simply define the directory where your assets are built, and we handle the rest. Check out the &lt;a href=&quot;https://docs.infinitegaming.org/changelog/#examples&quot;&gt;examples&lt;/a&gt; for what this looks like in Terraform configuration.&lt;/p&gt;
&lt;p&gt;You can get started today with &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/5.11.0/docs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;the Cloudflare Terraform provider (v5.11.0)&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, using either the existing &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/workers_script&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_workers_script&lt;/code&gt; resource&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, or the beta &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/worker_version&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_worker_version&lt;/code&gt; resource&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;examples&quot;&gt;Examples&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#examples&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;with-cloudflare_workers_script&quot;&gt;With &lt;code&gt;cloudflare_workers_script&lt;/code&gt;&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#with-cloudflare_workers_script&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Here&apos;s how you can use the existing &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/5.11.0/docs/resources/workers_script&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_workers_script&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; resource to upload your Worker code and assets in one shot.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;hcl&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;hcl&quot; data-nb-lang=&quot;hcl&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;resource&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;cloudflare_workers_script&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;my_app&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; var&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;account_id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  script_name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;my-app&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  content_file&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;   =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;./dist/worker/index.js&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  content_sha256&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; filesha256&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./dist/worker/index.js&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  main_module&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;index.js&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;  # Just point to your assets directory - that&apos;s it!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  assets&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    directory &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;./dist/static&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;with-cloudflare_worker-cloudflare_worker_version-and-cloudflare_workers_deployment&quot;&gt;With &lt;code&gt;cloudflare_worker&lt;/code&gt;, &lt;code&gt;cloudflare_worker_version&lt;/code&gt;, and &lt;code&gt;cloudflare_workers_deployment&lt;/code&gt;&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#with-cloudflare_worker-cloudflare_worker_version-and-cloudflare_workers_deployment&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;And here&apos;s an example using the beta &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/5.11.0/docs/resources/worker_version&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_worker_version&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; resource, alongside the &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/worker&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_worker&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/5.11.0/docs/resources/workers_deployment&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_workers_deployment&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; resources:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;hcl&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;hcl&quot; data-nb-lang=&quot;hcl&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# This tracks the existence of your Worker, so that you&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# can upload code and assets separately from tracking Worker state.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;resource&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;cloudflare_worker&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;my_app&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; var&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;account_id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;       =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;my-app&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;resource&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;cloudflare_worker_version&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;my_app_version&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; var&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;account_id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  worker_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; cloudflare_worker&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;my_app&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;  # Just point to your assets directory - that&apos;s it!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  assets&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    directory &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;./dist/static&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  modules&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; [{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    name         &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;index.js&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    content_file &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;./dist/worker/index.js&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    content_type &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;application/javascript+module&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  }]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;resource&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;cloudflare_workers_deployment&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;my_app_deployment&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; var&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;account_id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  script_name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; cloudflare_worker&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;my_app&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  strategy&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;percentage&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  versions&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; [{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    version_id &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; cloudflare_worker_version.my_app_version.id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    percentage &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; 100&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  }]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;whats-changed&quot;&gt;What&apos;s changed&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#whats-changed&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Under the hood, the Cloudflare Terraform provider now handles the same logic that Wrangler uses for static asset uploads. This includes scanning your assets directory, computing hashes for each file, generating a manifest with file metadata, and calling the Cloudflare API to upload any missing files in chunks. We support large directories with parallel uploads and chunking, and when the asset manifest hash changes, we detect what&apos;s changed and trigger an upload for &lt;em&gt;only&lt;/em&gt; those changed files.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;try-it-out&quot;&gt;Try it out&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#try-it-out&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Get started with &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/5.11.0/docs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;the Cloudflare Terraform provider (v5.11.0)&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;You can use either the existing &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/workers_script&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_workers_script&lt;/code&gt; resource&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; to upload your Worker code and assets in one resource.&lt;/li&gt;
&lt;li&gt;Or you can use the new beta &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/worker_version&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_worker_version&lt;/code&gt; resource&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; (along with the &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/worker&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_worker&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/5.11.0/docs/resources/workers_deployment&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_workers_deployment&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;) resources to more granularly control the lifecycle of each Worker resource.&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Thu, 09 Oct 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - You can now deploy and manage Workflows in Terraform</title><link>https://docs.infinitegaming.org/changelog/post/2025-10-09-workflows-terraform/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-10-09-workflows-terraform/</guid><description>&lt;p&gt;You can now create and manage &lt;a href=&quot;https://docs.infinitegaming.org/workflows/&quot;&gt;Workflows&lt;/a&gt; using Terraform, now supported in the &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/workflow&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Terraform provider v5.11.0&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. Workflows allow you to build durable, multi-step applications -- without needing to worry about retrying failed tasks or managing infrastructure.&lt;/p&gt;
&lt;p&gt;Now, you can deploy and manage Workflows through Terraform using the new &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/workflow&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_workflow&lt;/code&gt; resource&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;hcl&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;hcl&quot; data-nb-lang=&quot;hcl&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;resource&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;cloudflare_workflow&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;my_workflow&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; var&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;account_id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  workflow_name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;my-workflow&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  class_name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;MyWorkflow&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  script_name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;   =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;my-worker&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;examples&quot;&gt;Examples&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#examples&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Here are full examples of how to configure &lt;code&gt;cloudflare_workflow&lt;/code&gt; in Terraform, using the existing &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/workers_script&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_workers_script&lt;/code&gt; resource&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, and the beta &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/worker_version&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_worker_version&lt;/code&gt; resource&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;with-cloudflare_workflow-and-cloudflare_workers_script&quot;&gt;With &lt;code&gt;cloudflare_workflow&lt;/code&gt; and &lt;code&gt;cloudflare_workers_script&lt;/code&gt;&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#with-cloudflare_workflow-and-cloudflare_workers_script&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;hcl&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;hcl&quot; data-nb-lang=&quot;hcl&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;resource&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;cloudflare_workers_script&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;workflow_worker&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; var&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;cloudflare_account_id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  script_name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;my-workflow-worker&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  content_file&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;   =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;module&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;/../dist/worker/index.js&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  content_sha256&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; filesha256&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;module&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;/../dist/worker/index.js&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  main_module&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;index.js&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;resource&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;cloudflare_workflow&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;workflow&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; var&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;cloudflare_account_id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  workflow_name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;my-workflow&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  class_name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;MyWorkflow&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  script_name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;   =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; cloudflare_workers_script&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;workflow_worker&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;script_name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;with-cloudflare_workflow-and-the-new-beta-resources&quot;&gt;With &lt;code&gt;cloudflare_workflow&lt;/code&gt;, and the new beta resources&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#with-cloudflare_workflow-and-the-new-beta-resources&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;You can more granularly control the lifecycle of each Worker resource using the beta &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/5.11.0/docs/resources/worker_version&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_worker_version&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; resource, alongside the &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/worker&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_worker&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/5.11.0/docs/resources/workers_deployment&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_workers_deployment&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; resources.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;hcl&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;hcl&quot; data-nb-lang=&quot;hcl&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;resource&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;cloudflare_worker&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;workflow_worker&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; var&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;cloudflare_account_id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;       =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;my-workflow-worker&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;resource&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;cloudflare_worker_version&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;workflow_worker_version&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; var&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;cloudflare_account_id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  worker_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; cloudflare_worker&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;workflow_worker&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  main_module&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;         =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;index.js&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  modules&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; [{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    name         &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;index.js&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    content_file &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;module&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;/../dist/worker/index.js&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    content_type &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;application/javascript+module&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  }]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;resource&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;cloudflare_workers_deployment&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;workflow_deployment&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; var&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;cloudflare_account_id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  script_name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; cloudflare_worker&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;workflow_worker&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  strategy&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;percentage&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  versions&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; [{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    version_id &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; cloudflare_worker_version.workflow_worker_version.id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    percentage &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; 100&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  }]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;resource&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;cloudflare_workflow&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;my_workflow&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; var&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;cloudflare_account_id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  workflow_name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;my-workflow&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  class_name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;MyWorkflow&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  script_name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;   =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; cloudflare_worker&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;workflow_worker&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;try-it-out&quot;&gt;Try it out&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#try-it-out&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Get started with &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/5.11.0/docs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;the Cloudflare Terraform provider (v5.11.0)&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and the new &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/workflow&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_workflow&lt;/code&gt; resource&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Thu, 09 Oct 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - New Overview Page for Cloudflare Workers</title><link>https://docs.infinitegaming.org/changelog/post/2025-10-06-new-worker-overview-page/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-10-06-new-worker-overview-page/</guid><description>&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1800,height=1016,format=webp/_astro/workers-overview.BM_exs4R.png&quot; alt=&quot;Screenshot of the Workers overview page in the Cloudflare dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1016&quot;&gt;
&lt;p&gt;Each of your Workers now has a new overview page in the Cloudflare dashboard.&lt;/p&gt;
&lt;p&gt;The goal is to make it easier to understand your Worker without digging through multiple tabs. Think of it as a new home base, a place to get a high-level overview on what&apos;s going on.&lt;/p&gt;
&lt;p&gt;It&apos;s the first place you land when you open a Worker in the dashboard, and it gives you an immediate view of what’s going on. You can see requests, errors, and CPU time at a glance. You can view and add bindings, and see recent versions of your app, including who published them.&lt;/p&gt;
&lt;p&gt;Navigation is also simpler, with visually distinct tabs at the top of the page. At the bottom right you&apos;ll find guided steps for what to do next that are based on the state of your Worker, such as adding a &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/bindings/&quot;&gt;binding&lt;/a&gt; or connecting a custom domain.&lt;/p&gt;
&lt;p&gt;We plan to add more here over time. Better insights, more controls, and ways to manage your Worker from one page.&lt;/p&gt;
&lt;p&gt;If you have feedback or suggestions for the new Overview page or your Cloudflare Workers experience in general, we&apos;d love to hear from you. Join the Cloudflare developer community on &lt;a href=&quot;https://discord.com/channels/595317990191398933/1064502845061210152&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Discord&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 07 Oct 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - One-click Cloudflare Access for Workers</title><link>https://docs.infinitegaming.org/changelog/post/2025-10-03-one-click-access-for-workers/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-10-03-one-click-access-for-workers/</guid><description>
&lt;p&gt;You can now enable &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/policies/&quot;&gt;Cloudflare Access&lt;/a&gt; for your &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/routing/workers-dev/&quot;&gt;&lt;code&gt;workers.dev&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/workers/versions-and-deployments/preview-urls/&quot;&gt;Preview URLs&lt;/a&gt; in a single click.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1800,height=1016,format=webp/_astro/workers-access.DGGYThLx.png&quot; alt=&quot;Screenshot of the Enable/Disable Cloudflare Access button on the workers.dev route settings page&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1800&quot; height=&quot;1016&quot;&gt;
&lt;p&gt;Access allows you to limit access to your Workers to specific users or groups. You can limit access to yourself, your teammates, your organization, or anyone else you specify in your &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/policies/&quot;&gt;Access policy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To enable Cloudflare Access:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;In the Cloudflare dashboard, go to the &lt;strong&gt;Workers &amp;amp; Pages&lt;/strong&gt; page.&lt;/p&gt;
&lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/workers-and-pages&quot; data-nb-button class=&quot;group inline-flex w-max shrink-0 items-center justify-center rounded-full font-medium whitespace-nowrap no-underline shadow-xs transition-colors cursor-pointer select-none focus-visible:outline-2 focus-visible:outline-ring focus-visible:outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary-hover h-9 gap-1.5 px-3 text-sm&quot; target=&quot;_blank&quot;&gt;
	Go to &lt;strong&gt;Workers &amp;amp; Pages&lt;/strong&gt;&amp;nbsp;&amp;#8599;
&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In &lt;strong&gt;Overview&lt;/strong&gt;, select your Worker.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Go to &lt;strong&gt;Settings&lt;/strong&gt; &amp;gt; &lt;strong&gt;Domains &amp;amp; Routes&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For &lt;code&gt;workers.dev&lt;/code&gt; or Preview URLs, click &lt;strong&gt;Enable Cloudflare Access&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Optionally, to configure the Access application, click &lt;strong&gt;Manage Cloudflare Access&lt;/strong&gt;. There, you can change the email addresses you want to authorize. View &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/policies/#selectors&quot;&gt;Access policies&lt;/a&gt; to learn about configuring alternate rules.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To fully secure your application, it is important that you validate the JWT that Cloudflare Access adds to the &lt;code&gt;Cf-Access-Jwt-Assertion&lt;/code&gt; header on the incoming request.&lt;/p&gt;
&lt;p&gt;The following code will validate the JWT using the &lt;a href=&quot;https://www.npmjs.com/package/jose&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;jose NPM package&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;javascript&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot; data-nb-lang=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { jwtVerify, createRemoteJWKSet } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;jose&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// Verify the POLICY_AUD environment variable is set&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		if&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;POLICY_AUD&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Missing required audience&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				status: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;403&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				headers: { &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;text/plain&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// Get the JWT from the request headers&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; token&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; request.headers.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;cf-access-jwt-assertion&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// Check if token exists&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		if&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;token) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Missing required CF Access JWT&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				status: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;403&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				headers: { &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;text/plain&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		try&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;			// Create JWKS from your team domain&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; JWKS&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; createRemoteJWKSet&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;				new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; URL&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;`${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;TEAM_DOMAIN&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;}/cdn-cgi/access/certs`&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;			// Verify the JWT&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			const&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;payload&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; jwtVerify&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(token, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;JWKS&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				issuer: env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;TEAM_DOMAIN&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				audience: env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;POLICY_AUD&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;			// Token is valid, proceed with your application logic&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;`Hello ${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;payload&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;email&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; ||&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;authenticated user&quot;}!`&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				headers: { &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;text/plain&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		} &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;catch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (error) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;			// Token verification failed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;`Invalid token: ${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;message&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;}`&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				status: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;403&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				headers: { &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;text/plain&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;required-environment-variables&quot;&gt;Required environment variables&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#required-environment-variables&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Add these &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/environment-variables/&quot;&gt;environment variables&lt;/a&gt; to your Worker:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;POLICY_AUD&lt;/code&gt;: Your application&apos;s AUD tag&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TEAM_DOMAIN&lt;/code&gt;: &lt;code&gt;https://&amp;lt;your-team-name&amp;gt;.cloudflareaccess.com&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both of these appear in the modal that appears when you enable Cloudflare Access.&lt;/p&gt;
&lt;p&gt;You can set these variables by adding them to your Worker&apos;s &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/configuration/&quot;&gt;Wrangler configuration file&lt;/a&gt;, or via the Cloudflare dashboard under &lt;strong&gt;Workers &amp;amp; Pages&lt;/strong&gt; &amp;gt; &lt;strong&gt;your-worker&lt;/strong&gt; &amp;gt; &lt;strong&gt;Settings&lt;/strong&gt; &amp;gt; &lt;strong&gt;Environment Variables&lt;/strong&gt;.&lt;/p&gt;</description><pubDate>Fri, 03 Oct 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare Fundamentals, Access - Fine-grained Permissioning for Access for Apps, IdPs, &amp; Targets now in Public Beta</title><link>https://docs.infinitegaming.org/changelog/post/2025-10-01-fine-grained-permissioning-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-10-01-fine-grained-permissioning-beta/</guid><description>
&lt;p&gt;Fine-grained permissions for &lt;strong&gt;Access Applications, Identity Providers (IdPs), and Targets&lt;/strong&gt; is now available in Public Beta. This expands our RBAC model beyond account &amp;amp; zone-scoped roles, enabling administrators to grant permissions scoped to individual resources.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;whats-new&quot;&gt;What&apos;s New&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#whats-new&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://developers.cloudflare.com/cloudflare-one/access-controls/applications/http-apps/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Access Applications&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt;: Grant admin permissions to specific Access Applications.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://developers.cloudflare.com/cloudflare-one/integrations/identity-providers/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Identity Providers&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt;: Grant admin permissions to individual Identity Providers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://developers.cloudflare.com/cloudflare-one/access-controls/applications/non-http/infrastructure-apps/#1-add-a-target&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Targets&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt;: Grant admin rights to specific Targets&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=3004,height=1410,format=webp/_astro/2025-10-01-fine-grained-permissioning-ux.BWVmQsVF.png&quot; alt=&quot;Updated Permissions Policy UX&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;3004&quot; height=&quot;1410&quot;&gt;
&lt;aside role=&quot;note&quot; aria-label=&quot;Note&quot; class=&quot;aside-card flex items-start gap-3 rounded-lg px-4 py-3 my-4&quot; style=&quot;--_c: var(--nb-info); --_t: var(--nb-info-muted);&quot; data-astro-cid-znle5jil&gt;&lt;span class=&quot;flex h-[1.375em] shrink-0 items-center&quot; aria-hidden=&quot;true&quot; data-astro-cid-znle5jil&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[1em] w-[1em]&quot; data-astro-cid-znle5jil=&quot;true&quot; data-icon=&quot;ph:info&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24m0 192a88 88 0 1 1 88-88a88.1 88.1 0 0 1-88 88m16-40a8 8 0 0 1-8 8a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 8 8m-32-92a12 12 0 1 1 12 12a12 12 0 0 1-12-12&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div class=&quot;flex min-w-0 flex-1 flex-col gap-0.5&quot; data-astro-cid-znle5jil&gt;&lt;p class=&quot;m-0 text-base leading-snug font-semibold&quot; data-astro-cid-znle5jil&gt;Note&lt;/p&gt;&lt;div class=&quot;aside-card-body text-sm leading-normal&quot; data-astro-cid-znle5jil&gt;&lt;p&gt;During the public beta, members must also be assigned an account-scoped, read only role to view resources in the dashboard. This restriction will be lifted in a future release.&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Account Read Only&lt;/strong&gt; plus a fine-grained permission for a specific App, IdP, or Target&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare Zero Trust Read Only&lt;/strong&gt; plus fine-grained permission for a specific App, IdP, or Target&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;For more info:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/manage-members/roles/&quot;&gt;Get started with Cloudflare Permissioning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/manage-members/manage&quot;&gt;Manage Member Permissioning via the UI &amp;amp; API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Thu, 02 Oct 2025 00:00:00 GMT</pubDate><product>Cloudflare Fundamentals</product><category>Cloudflare Fundamentals</category><category>Access</category></item><item><title>Workers Analytics Engine, Workers - Workers Analytics Engine adds supports for new SQL functions</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-26-analytics-engine-sql-enhancements/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-26-analytics-engine-sql-enhancements/</guid><description>&lt;p&gt;You can now perform more powerful queries directly in &lt;a href=&quot;https://developers.cloudflare.com/analytics/analytics-engine/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Workers Analytics Engine&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; with a major expansion of our SQL function library.&lt;/p&gt;
&lt;p&gt;Workers Analytics Engine allows you to ingest and store high-cardinality data at scale (such as custom analytics) and query your data through a simple SQL API.&lt;/p&gt;
&lt;p&gt;Today, we&apos;ve expanded Workers Analytics Engine&apos;s SQL capabilities with several new functions:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://developers.cloudflare.com/analytics/analytics-engine/sql-reference/aggregate-functions/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;strong&gt;New aggregate functions:&lt;/strong&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;argMin()&lt;/code&gt; - Returns the value associated with the minimum in a group&lt;/li&gt;
&lt;li&gt;&lt;code&gt;argMax()&lt;/code&gt; - Returns the value associated with the maximum in a group&lt;/li&gt;
&lt;li&gt;&lt;code&gt;topK()&lt;/code&gt; - Returns an array of the most frequent values in a group&lt;/li&gt;
&lt;li&gt;&lt;code&gt;topKWeighted()&lt;/code&gt; - Returns an array of the most frequent values in a group using weights&lt;/li&gt;
&lt;li&gt;&lt;code&gt;first_value()&lt;/code&gt; - Returns the first value in an ordered set of values within a partition&lt;/li&gt;
&lt;li&gt;&lt;code&gt;last_value()&lt;/code&gt; - Returns the last value in an ordered set of values within a partition&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://developers.cloudflare.com/analytics/analytics-engine/sql-reference/bit-functions/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;strong&gt;New bit functions:&lt;/strong&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bitAnd()&lt;/code&gt; - Returns the bitwise AND of two expressions&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bitCount()&lt;/code&gt; - Returns the number of bits set to one in the binary representation of a number&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bitHammingDistance()&lt;/code&gt; - Returns the number of bits that differ between two numbers&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bitNot()&lt;/code&gt; - Returns a number with all bits flipped&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bitOr()&lt;/code&gt; - Returns the inclusive bitwise OR of two expressions&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bitRotateLeft()&lt;/code&gt; - Rotates all bits in a number left by specified positions&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bitRotateRight()&lt;/code&gt; - Rotates all bits in a number right by specified positions&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bitShiftLeft()&lt;/code&gt; - Shifts all bits in a number left by specified positions&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bitShiftRight()&lt;/code&gt; - Shifts all bits in a number right by specified positions&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bitTest()&lt;/code&gt; - Returns the value of a specific bit in a number&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bitXor()&lt;/code&gt; - Returns the bitwise exclusive-or of two expressions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://developers.cloudflare.com/analytics/analytics-engine/sql-reference/mathematical-functions/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;strong&gt;New mathematical functions:&lt;/strong&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;abs()&lt;/code&gt; - Returns the absolute value of a number&lt;/li&gt;
&lt;li&gt;&lt;code&gt;log()&lt;/code&gt; - Computes the natural logarithm of a number&lt;/li&gt;
&lt;li&gt;&lt;code&gt;round()&lt;/code&gt; - Rounds a number to a specified number of decimal places&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ceil()&lt;/code&gt; - Rounds a number up to the nearest integer&lt;/li&gt;
&lt;li&gt;&lt;code&gt;floor()&lt;/code&gt; - Rounds a number down to the nearest integer&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pow()&lt;/code&gt; - Returns a number raised to the power of another number&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://developers.cloudflare.com/analytics/analytics-engine/sql-reference/string-functions/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;strong&gt;New string functions:&lt;/strong&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;lowerUTF8()&lt;/code&gt; - Converts a string to lowercase using UTF-8 encoding&lt;/li&gt;
&lt;li&gt;&lt;code&gt;upperUTF8()&lt;/code&gt; - Converts a string to uppercase using UTF-8 encoding&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://developers.cloudflare.com/analytics/analytics-engine/sql-reference/encoding-functions/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;strong&gt;New encoding functions:&lt;/strong&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;hex()&lt;/code&gt; - Converts a number to its hexadecimal representation&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bin()&lt;/code&gt; - Converts a string to its binary representation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://developers.cloudflare.com/analytics/analytics-engine/sql-reference/type-conversion-functions/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;strong&gt;New type conversion functions:&lt;/strong&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;toUInt8()&lt;/code&gt; - Converts any numeric expression, or expression resulting in a string representation of a decimal, into an unsigned 8 bit integer&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;ready-to-get-started&quot;&gt;Ready to get started?&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#ready-to-get-started&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Whether you&apos;re building usage-based billing systems, customer analytics dashboards, or other custom analytics, these functions let you get the most out of your data. &lt;a href=&quot;https://docs.infinitegaming.org/analytics/analytics-engine/get-started/&quot;&gt;Get started &lt;/a&gt; with Workers Analytics Engine and explore all available functions in our &lt;a href=&quot;https://docs.infinitegaming.org/analytics/analytics-engine/sql-reference/&quot;&gt;SQL reference documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 02 Oct 2025 00:00:00 GMT</pubDate><product>Workers Analytics Engine</product><category>Workers Analytics Engine</category><category>Workers</category></item><item><title>Data Loss Prevention - Expanded File Type Controls for Executables and Disk Images</title><link>https://docs.infinitegaming.org/changelog/post/2025-10-01-new-file-type-support/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-10-01-new-file-type-support/</guid><description>&lt;p&gt;You can now enhance your security posture by blocking additional application installer and disk image file types with Cloudflare Gateway. Preventing the download of unauthorized software packages is a critical step in securing endpoints from malware and unwanted applications.&lt;/p&gt;
&lt;p&gt;We have expanded Gateway&apos;s file type controls to include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Apple Disk Image (dmg)&lt;/li&gt;
&lt;li&gt;Microsoft Software Installer (msix, appx)&lt;/li&gt;
&lt;li&gt;Apple Software Package (pkg)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can find these new options within the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/#download-and-upload-file-types&quot;&gt;&lt;em&gt;Upload File Types&lt;/em&gt; and &lt;em&gt;Download File Types&lt;/em&gt; selectors&lt;/a&gt; when creating or editing an HTTP policy. The file types are categorized as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;System&lt;/strong&gt;: &lt;em&gt;Apple Disk Image (dmg)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Executable&lt;/strong&gt;: &lt;em&gt;Microsoft Software Installer (msix)&lt;/em&gt;, &lt;em&gt;Microsoft Software Installer (appx)&lt;/em&gt;, &lt;em&gt;Apple Software Package (pkg)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To ensure these file types are blocked effectively, please note the following behaviors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DMG: Due to their file structure, DMG files are blocked at the very end of the transfer. A user&apos;s download may appear to progress but will fail at the last moment, preventing the browser from saving the file.&lt;/li&gt;
&lt;li&gt;MSIX: To comprehensively block Microsoft Software Installers, you should also include the file type &lt;em&gt;Unscannable&lt;/em&gt;. MSIX files larger than 100 MB are identified as Unscannable ZIP files during inspection.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To get started, go to your HTTP policies in Zero Trust. For a full list of file types, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/#supported-file-types&quot;&gt;supported file types&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 01 Oct 2025 00:00:00 GMT</pubDate><product>Data Loss Prevention</product><category>Data Loss Prevention</category></item><item><title>Gateway - Application granular controls for operations in SaaS applications</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-25-new-granular-controls-for-saas-applications/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-25-new-granular-controls-for-saas-applications/</guid><description>&lt;p&gt;Gateway users can now apply granular controls to their file sharing and AI chat applications through &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies&quot;&gt;HTTP policies&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The new feature offers two methods of controlling SaaS applications:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Application Controls&lt;/strong&gt; are curated groupings of Operations which provide an easy way for users to achieve a specific outcome. Application Controls may include &lt;em&gt;Upload&lt;/em&gt;, &lt;em&gt;Download&lt;/em&gt;, &lt;em&gt;Prompt&lt;/em&gt;, &lt;em&gt;Voice&lt;/em&gt;, and &lt;em&gt;Share&lt;/em&gt; depending on the application.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operations&lt;/strong&gt; are controls aligned to the most granular action a user can take. This provides a fine-grained approach to enforcing policy and generally aligns to the SaaS providers API specifications in naming and function.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Get started using &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/granular-controls&quot;&gt;Application Granular Controls&lt;/a&gt; and refer to the list of &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/granular-controls/#compatible-applications&quot;&gt;supported applications&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 30 Sep 2025 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Workers - Automatic loopback bindings via ctx.exports</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-26-ctx-exports/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-26-ctx-exports/</guid><description>&lt;p&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/context/#exports&quot;&gt;&lt;code&gt;ctx.exports&lt;/code&gt; API&lt;/a&gt; contains automatically-configured bindings corresponding to your Worker&apos;s top-level exports. For each top-level export extending &lt;code&gt;WorkerEntrypoint&lt;/code&gt;, &lt;code&gt;ctx.exports&lt;/code&gt; will contain a &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/bindings/service-bindings&quot;&gt;Service Binding&lt;/a&gt; by the same name, and for each export extending &lt;code&gt;DurableObject&lt;/code&gt; (and for which storage has been configured via a &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/reference/durable-objects-migrations/&quot;&gt;migration&lt;/a&gt;), &lt;code&gt;ctx.exports&lt;/code&gt; will contain a &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/api/namespace/&quot;&gt;Durable Object namespace binding&lt;/a&gt;. This means you no longer have to configure these bindings explicitly in &lt;code&gt;wrangler.jsonc&lt;/code&gt;/&lt;code&gt;wrangler.toml&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { WorkerEntrypoint } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;cloudflare:workers&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; class&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Greeter&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; extends&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; WorkerEntrypoint&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  greet&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    return&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; `Hello, ${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;}!`&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    let&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; greeting &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; ctx.exports.Greeter.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;greet&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;World&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(greeting);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;At present, you must use &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/compatibility-flags#enable-ctxexports&quot;&gt;the &lt;code&gt;enable_ctx_exports&lt;/code&gt; compatibility flag&lt;/a&gt; to enable this API, though it will be on by default in the future.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/context/#exports&quot;&gt;See the API reference for more information.&lt;/a&gt;&lt;/p&gt;
</description><pubDate>Fri, 26 Sep 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Gateway, Data Loss Prevention - Refine DLP Scans with New Body Phase Selector</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-25-body-phase-selector/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-25-body-phase-selector/</guid><description>&lt;p&gt;You can now more precisely control your HTTP DLP policies by specifying whether to scan the request or response body, helping to reduce false positives and target specific data flows.&lt;/p&gt;
&lt;p&gt;In the Gateway HTTP policy builder, you will find a new selector called &lt;em&gt;Body Phase&lt;/em&gt;. This allows you to define the direction of traffic the DLP engine will inspect:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Request Body&lt;/em&gt;: Scans data sent from a user&apos;s machine to an upstream service. This is ideal for monitoring data uploads, form submissions, or other user-initiated data exfiltration attempts.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Response Body&lt;/em&gt;: Scans data sent to a user&apos;s machine from an upstream service. Use this to inspect file downloads and website content for sensitive data.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, consider a policy that blocks Social Security Numbers (SSNs). Previously, this policy might trigger when a user visits a website that contains example SSNs in its content (the response body). Now, by setting the &lt;strong&gt;Body Phase&lt;/strong&gt; to &lt;em&gt;Request Body&lt;/em&gt;, the policy will only trigger if the user attempts to upload or submit an SSN, ignoring the content of the web page itself.&lt;/p&gt;
&lt;p&gt;All policies without this selector will continue to scan both request and response bodies to ensure continued protection.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/#body-phase&quot;&gt;Gateway HTTP policy selectors&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 25 Sep 2025 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category><category>Data Loss Prevention</category></item><item><title>Email security - Invalid Submissions Feedback</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-23-invalid-submissions/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-23-invalid-submissions/</guid><description>&lt;p&gt;Email security relies on your submissions to continuously improve our detection models. However, we often receive submissions in formats that cannot be ingested, such as incomplete EMLs, screenshots, or text files.&lt;/p&gt;
&lt;p&gt;To ensure all customer feedback is actionable, we have launched two new features to manage invalid submissions sent to our team and user &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/email-security/settings/phish-submissions/submission-addresses/&quot;&gt;submission aliases&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Email Notifications:&lt;/strong&gt; We now automatically notify users by email when they provide an invalid submission, educating them on the correct format. To disable notifications, go to &lt;strong&gt;&lt;a href=&quot;https://one.dash.cloudflare.com/?to=/:account/email-security/settings&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Settings&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt; &amp;gt; &lt;strong&gt;Invalid submission emails&lt;/strong&gt; and turn the feature off.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1096,height=175,format=webp/_astro/EmailSec-Invalid-Submissions-Toggle.DXjbR6aX.png&quot; alt=&quot;EmailSec-Invalid-Submissions-Toggle&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1096&quot; height=&quot;175&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Invalid Submission dashboard:&lt;/strong&gt; You can quickly identify which users need education to provide valid submissions so Cloudflare can provide continuous protection.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1132,height=511,format=webp/_astro/EmailSec-Invalid-Submissions-Dashboard.zuf1on2n.png&quot; alt=&quot;EmailSec-Invalid-Submissions-Dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1132&quot; height=&quot;511&quot;&gt;
&lt;p&gt;Learn more about this feature on &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/email-security/submissions/invalid-submissions/&quot;&gt;invalid submissions&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This feature is available across these Email security packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Advantage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise + PhishGuard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Tue, 23 Sep 2025 23:11:49 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Workers - Improved support for running multiple Workers with `wrangler dev`</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-23-wrangler-dev-multi-config-cross-command-support/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-23-wrangler-dev-multi-config-cross-command-support/</guid><description>&lt;p&gt;You can run multiple Workers in a single dev command by passing multiple config files to &lt;code&gt;wrangler dev&lt;/code&gt;:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; dev&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --config&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; ./web/wrangler.jsonc&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --config&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; ./api/wrangler.jsonc&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Previously, if you ran the command above and then also ran wrangler dev for a different Worker, the Workers running in separate wrangler dev sessions could not communicate with each other. This prevented you from being able to use &lt;a href=&quot;https://developers.cloudflare.com/workers/runtime-apis/bindings/service-bindings/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Service Bindings&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and &lt;a href=&quot;https://developers.cloudflare.com/workers/observability/logs/tail-workers/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Tail Workers&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; in local development, when running separate wrangler dev sessions.&lt;/p&gt;
&lt;p&gt;Now, the following works as expected:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Terminal 1: Run your application that includes both Web and API workers&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; dev&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --config&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; ./web/wrangler.jsonc&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --config&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; ./api/wrangler.jsonc&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Terminal 2: Run your auth worker separately&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; dev&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --config&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; ./auth/wrangler.jsonc&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;These Workers can now communicate with each other across separate dev commands, regardless of your development setup.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;js&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;./api/src/index.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// This service binding call now works across dev commands&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; authorized&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;AUTH&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;isAuthorized&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(request);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		if&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;authorized) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;			return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Unauthorized&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, { status: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;401&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Hello from API Worker!&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, { status: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://docs.infinitegaming.org/workers/local-development/multi-workers&quot;&gt;Developing with multiple Workers&lt;/a&gt; guide to learn more about the different approaches and when to use each one.&lt;/p&gt;</description><pubDate>Tue, 23 Sep 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Access - Access Remote Desktop Protocol (RDP) destinations securely from your browser — now generally available!</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-22-browser-based-rdp-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-22-browser-based-rdp-ga/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/use-cases/rdp/rdp-browser/&quot;&gt;Browser-based RDP&lt;/a&gt; with &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/policies/&quot;&gt;Cloudflare Access&lt;/a&gt; is now generally available for all Cloudflare customers. It enables secure, remote Windows server access without VPNs or RDP clients.&lt;/p&gt;
&lt;p&gt;Since we announced our &lt;a href=&quot;https://docs.infinitegaming.org/changelog/access/#2025-06-30&quot;&gt;open beta&lt;/a&gt;, we&apos;ve made a few improvements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support for targets with IPv6.&lt;/li&gt;
&lt;li&gt;Support for &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/&quot;&gt;Magic WAN&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/mesh/&quot;&gt;WARP Connector&lt;/a&gt; as on-ramps.&lt;/li&gt;
&lt;li&gt;More robust error messaging on the login page to help you if you encounter an issue.&lt;/li&gt;
&lt;li&gt;Worldwide keyboard support. Whether your day-to-day is in Portuguese, Chinese, or something in between, your browser-based RDP experience will look and feel exactly like you are using a desktop RDP client.&lt;/li&gt;
&lt;li&gt;Cleaned up some other miscellaneous issues, including but not limited to enhanced support for Entra ID accounts and support for usernames with spaces, quotes, and special characters.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As a refresher, here are some benefits browser-based RDP provides:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Control how users authenticate to internal RDP resources&lt;/strong&gt; with single sign-on (SSO), multi-factor authentication (MFA), and granular access policies.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Record who is accessing which servers and when&lt;/strong&gt; to support regulatory compliance requirements and to gain greater visibility in the event of a security event.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eliminate the need to install and manage software on user devices&lt;/strong&gt;. You will only need a web browser.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reduce your attack surface&lt;/strong&gt; by keeping your RDP servers off the public Internet and protecting them from common threats like credential stuffing or brute-force attacks.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2132,height=1814,format=webp/_astro/browser-based-rdp-access-app.BNXce1JL.png&quot; alt=&quot;Example of a browser-based RDP Access application&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2132&quot; height=&quot;1814&quot;&gt;
&lt;p&gt;To get started, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/use-cases/rdp/rdp-browser/&quot;&gt;Connect to RDP in a browser&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 22 Sep 2025 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Workers - Rate Limiting in Workers is now GA</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-19-ratelimit-workers-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-19-ratelimit-workers-ga/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/bindings/rate-limit/&quot;&gt;Rate Limiting within Cloudflare Workers&lt;/a&gt; is now Generally Available (GA).&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;ratelimit&lt;/code&gt; binding is now stable and recommended for all production workloads. Existing deployments using the unsafe binding will continue to function to allow for a smooth transition.&lt;/p&gt;
&lt;p&gt;For more details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/bindings/rate-limit/&quot;&gt;Workers Rate Limiting&lt;/a&gt; documentation.&lt;/p&gt;</description><pubDate>Fri, 19 Sep 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Panic Recovery for Rust Workers</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-19-workers-rs-panic-recovery/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-19-workers-rs-panic-recovery/</guid><description>
&lt;p&gt;In &lt;a href=&quot;https://github.com/cloudflare/workers-rs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;workers-rs&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, Rust panics were previously non-recoverable. A panic would put the Worker into an invalid state, and further function calls could result in memory overflows or exceptions.&lt;/p&gt;
&lt;p&gt;Now, when a panic occurs, in-flight requests will throw 500 errors, but the Worker will automatically and instantly recover for future requests.&lt;/p&gt;
&lt;p&gt;This ensures more reliable deployments. Automatic panic recovery is enabled for all new workers-rs deployments as of version 0.6.5, with no configuration required.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;fixing-rust-panics-with-wasm-bindgen&quot;&gt;Fixing Rust Panics with Wasm Bindgen&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#fixing-rust-panics-with-wasm-bindgen&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Rust Workers are built with Wasm Bindgen, which treats panics as non-recoverable. After a panic, the entire Wasm application is considered to be in an invalid state.&lt;/p&gt;
&lt;p&gt;We now attach a default panic handler in Rust:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;rust&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;rust&quot; data-nb-lang=&quot;rust&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;std&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;panic&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;set_hook&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Box&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;move&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; |&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;panic_info&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  hook_impl&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(panic_info);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}));&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Which is registered by default in the JS initialization:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { setPanicHook } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;./index.js&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;setPanicHook&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;err&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	console.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Panic handler!&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, err);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;When a panic occurs, we reset the Wasm state to revert the Wasm application to how it was when the application started.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;resetting-vm-state-in-wasm-bindgen&quot;&gt;Resetting VM State in Wasm Bindgen&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#resetting-vm-state-in-wasm-bindgen&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;We worked upstream on the Wasm Bindgen project to implement a new &lt;a href=&quot;https://github.com/wasm-bindgen/wasm-bindgen/pull/4644&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;--experimental-reset-state-function&lt;/code&gt; compilation option&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; which outputs a new &lt;code&gt;__wbg_reset_state&lt;/code&gt; function.&lt;/p&gt;
&lt;p&gt;This function clears all internal state related to the Wasm VM, and updates all function bindings in place to reference the new WebAssembly instance.&lt;/p&gt;
&lt;p&gt;One other necessary change here was associating Wasm-created JS objects with an instance identity. If a JS object created by an earlier instance is then passed into a new instance later on, a new &quot;stale object&quot; error is specially thrown when using this feature.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;layered-solution&quot;&gt;Layered Solution&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#layered-solution&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Building on this new Wasm Bindgen feature, layered with our new default panic handler, we also added a proxy wrapper to ensure all top-level exported class instantiations (such as for Rust Durable Objects) are tracked and fully reinitialized when resetting the Wasm instance. This was necessary because
the workerd runtime will instantiate exported classes, which would then be associated with the Wasm instance.&lt;/p&gt;
&lt;p&gt;This approach now provides full panic recovery for Rust Workers on subsequent requests.&lt;/p&gt;
&lt;p&gt;Of course, we never want panics, but when they do happen they are isolated and can be investigated further from the error logs - avoiding broader service disruption.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;webassembly-exception-handling&quot;&gt;WebAssembly Exception Handling&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#webassembly-exception-handling&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;In the future, full support for recoverable panics could be implemented without needing reinitialization at all, utilizing the &lt;a href=&quot;https://github.com/WebAssembly/exception-handling/blob/main/proposals/exception-handling/Exceptions.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;WebAssembly Exception Handling&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;
proposal, part of the newly announced &lt;a href=&quot;https://webassembly.org/news/2025-09-17-wasm-3.0/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;WebAssembly 3.0&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; specification. This would allow unwinding panics as normal JS errors, and concurrent requests would no longer fail.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We&apos;re making significant improvements to the reliability of &lt;a href=&quot;https://github.com/cloudflare/workers-rs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Rust Workers&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. Join us in &lt;code&gt;#rust-on-workers&lt;/code&gt; on the &lt;a href=&quot;https://discord.gg/cloudflaredev&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Developers Discord&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; to stay updated.&lt;/strong&gt;&lt;/p&gt;</description><pubDate>Fri, 19 Sep 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare Tunnel, Cloudflare Tunnel for SASE - Connect and secure any private or public app by hostname, not IP — with hostname routing for Cloudflare Tunnel</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-18-tunnel-hostname-routing/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-18-tunnel-hostname-routing/</guid><description>
&lt;p&gt;You can now route private traffic to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/&quot;&gt;Cloudflare Tunnel&lt;/a&gt; based on a hostname or domain, moving beyond the limitations of IP-based routing. This new capability is &lt;strong&gt;free for all Cloudflare One customers&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Previously, Tunnel routes could only be defined by IP address or &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/cloudflared/connect-cidr/&quot;&gt;CIDR range&lt;/a&gt;. This created a challenge for modern applications with dynamic or ephemeral IP addresses, often forcing administrators to maintain complex and brittle IP lists.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1990,height=530,format=webp/_astro/tunnel-hostname-routing.DSi8MP_7.webp&quot; alt=&quot;Hostname-based routing in Cloudflare Tunnel&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1990&quot; height=&quot;530&quot;&gt;
&lt;p&gt;&lt;strong&gt;What’s new:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hostname &amp;amp; Domain Routing&lt;/strong&gt;: Create routes for individual hostnames (e.g., &lt;code&gt;payroll.acme.local&lt;/code&gt;) or entire domains (e.g., &lt;code&gt;*.acme.local&lt;/code&gt;) and direct their traffic to a specific Tunnel.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simplified Zero Trust Policies&lt;/strong&gt;: Build resilient policies in Cloudflare Access and Gateway using stable hostnames, making it dramatically easier to apply per-resource authorization for your private applications.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Precise Egress Control&lt;/strong&gt;: Route traffic for public hostnames (e.g., &lt;code&gt;bank.example.com&lt;/code&gt;) through a specific Tunnel to enforce a dedicated source IP, solving the IP allowlist problem for third-party services.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No More IP Lists&lt;/strong&gt;: This feature makes the workaround of maintaining dynamic IP Lists for Tunnel connections obsolete.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Get started in the Tunnels section of the Zero Trust dashboard with your first &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/cloudflared/connect-private-hostname/&quot;&gt;private hostname&lt;/a&gt; or &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/egress-policies/egress-cloudflared/&quot;&gt;public hostname&lt;/a&gt; route.&lt;/p&gt;
&lt;p&gt;Learn more in our &lt;a href=&quot;https://blog.cloudflare.com/tunnel-hostname-routing/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;blog post&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 18 Sep 2025 00:00:00 GMT</pubDate><product>Cloudflare Tunnel</product><category>Cloudflare Tunnel</category><category>Cloudflare Tunnel for SASE</category></item><item><title>Workers - Increased vCPU for Workers Builds on paid plans</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-07-builds-increased-cpu-paid/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-07-builds-increased-cpu-paid/</guid><description>&lt;p&gt;We recently &lt;a href=&quot;https://docs.infinitegaming.org/changelog/2025-08-04-builds-increased-disk-size/&quot;&gt;increased the available disk space&lt;/a&gt; from 8 GB to 20 GB for &lt;strong&gt;all&lt;/strong&gt; plans. Building on that improvement, we’re now doubling the CPU power available for paid plans — from 2 vCPU to &lt;strong&gt;4 vCPU&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;These changes continue our focus on making &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/&quot;&gt;Workers Builds&lt;/a&gt; faster and more reliable.&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Free Plan&lt;/th&gt;
&lt;th&gt;Paid Plans&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CPU&lt;/td&gt;
&lt;td&gt;2 vCPU&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;4 vCPU&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;performance-improvements&quot;&gt;Performance Improvements&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#performance-improvements&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fast build times&lt;/strong&gt;: Even single-threaded workloads benefit from having more vCPUs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2x faster multi-threaded builds&lt;/strong&gt;: Tools like &lt;a href=&quot;https://esbuild.github.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;esbuild&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and &lt;a href=&quot;https://webpack.js.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;webpack&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; can now utilize additional cores, delivering near-linear performance scaling&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All other &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/limits-and-pricing/&quot;&gt;build limits&lt;/a&gt; — including memory, build minutes, and timeout remain unchanged.&lt;/p&gt;</description><pubDate>Thu, 18 Sep 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Preview URLs now default to opt-in</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-17-update-preview-url-setting/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-17-update-preview-url-setting/</guid><description>
&lt;p&gt;To prevent the accidental exposure of applications, we&apos;ve updated how &lt;a href=&quot;https://docs.infinitegaming.org/workers/versions-and-deployments/preview-urls/&quot;&gt;Worker preview URLs&lt;/a&gt; (&lt;code&gt;&amp;lt;PREVIEW&amp;gt;-&amp;lt;WORKER_NAME&amp;gt;.&amp;lt;SUBDOMAIN&amp;gt;.workers.dev&lt;/code&gt;) are handled. We made this change to ensure preview URLs are only active when intentionally configured, improving the default security posture of your Workers.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;one-time-update-for-workers-with-workersdev-disabled&quot;&gt;One-Time Update for Workers with workers.dev Disabled&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#one-time-update-for-workers-with-workersdev-disabled&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;We performed a one-time update to disable preview URLs for existing Workers where the &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/routing/workers-dev/&quot;&gt;workers.dev subdomain&lt;/a&gt; was also disabled.&lt;/p&gt;
&lt;p&gt;Because preview URLs were historically enabled by default, users who had intentionally disabled their workers.dev route may not have realized their Worker was still accessible at a separate preview URL. This update was performed to ensure that using a preview URL is always an intentional, opt-in choice.&lt;/p&gt;
&lt;p&gt;If your Worker was affected, its preview URL (&lt;code&gt;&amp;lt;PREVIEW&amp;gt;-&amp;lt;WORKER_NAME&amp;gt;.&amp;lt;SUBDOMAIN&amp;gt;.workers.dev&lt;/code&gt;) will now direct to an informational page explaining this change.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How to Re-enable Your Preview URL&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If your preview URL was disabled, you can re-enable it &lt;a href=&quot;https://docs.infinitegaming.org/workers/versions-and-deployments/preview-urls/#toggle-preview-urls-enable-or-disable&quot;&gt;via the Cloudflare dashboard&lt;/a&gt; by navigating to your Worker&apos;s Settings page and toggling on the Preview URL.&lt;/p&gt;
&lt;p&gt;Alternatively, you can use Wrangler by adding the &lt;code&gt;preview_urls = true&lt;/code&gt; setting to your Wrangler file and redeploying the Worker.&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;preview_urls&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;preview_urls = &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; You can set &lt;code&gt;preview_urls = true&lt;/code&gt; with any Wrangler version that supports the preview URL flag (v3.91.0+). However, we recommend updating to v4.34.0 or newer, as this version defaults &lt;code&gt;preview_urls&lt;/code&gt; to false, ensuring preview URLs are always enabled by explicit choice.&lt;/p&gt;</description><pubDate>Wed, 17 Sep 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare One - New AI-Enabled Search for Zero Trust Dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-16-new-ai-enabled-search-for-zero-trust-dashboard/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-16-new-ai-enabled-search-for-zero-trust-dashboard/</guid><description>&lt;p&gt;Zero Trust Dashboard has a brand new, AI-powered search functionality. You can search your account by resources (applications, policies, device profiles, settings, etc.), pages, products, and more.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1750,height=1568,format=webp/_astro/searchexample.Di8yS8ju.png&quot; alt=&quot;Example search results in the Zero Trust dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1750&quot; height=&quot;1568&quot;&gt;
&lt;p&gt;&lt;strong&gt;Ask Cloudy&lt;/strong&gt; — You can also ask Cloudy, our AI agent, questions about Cloudflare Zero Trust. Cloudy is trained on our developer documentation and implementation guides, so it can tell you how to configure functionality, best practices, and can make recommendations.&lt;/p&gt;
&lt;p&gt;Cloudy can then stay open with you as you move between pages to build configuration or answer more questions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Find Recents&lt;/strong&gt; — Recent searches and Cloudy questions also have a new tab under Zero Trust Overview.&lt;/p&gt;</description><pubDate>Tue, 16 Sep 2025 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category></item><item><title>Workers - Remote bindings GA - Connect to remote resources (D1, KV, R2, etc.) during local development</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-16-remote-bindings-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-16-remote-bindings-ga/</guid><description>
&lt;p&gt;Three months ago &lt;a href=&quot;https://docs.infinitegaming.org/changelog/2025-06-18-remote-bindings-beta/&quot;&gt;we announced the public beta&lt;/a&gt; of &lt;a href=&quot;https://docs.infinitegaming.org/workers/local-development/#remote-bindings&quot;&gt;remote bindings&lt;/a&gt; for local development. Now, we&apos;re excited to say that it&apos;s available for everyone in Wrangler, Vite, and Vitest without using an experimental flag!&lt;/p&gt;
&lt;p&gt;With remote bindings, you can now connect to deployed resources like &lt;a href=&quot;https://docs.infinitegaming.org/r2/&quot;&gt;R2 buckets&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/d1/&quot;&gt;D1 databases&lt;/a&gt; while running Worker code on your local machine. This means you can test your local code changes against real data and services, without the overhead of deploying for each iteration.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;example-configuration&quot;&gt;Example configuration&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#example-configuration&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;To enable remote bindings, add &lt;code&gt;&quot;remote&quot; : true&lt;/code&gt; to each binding that you want to rely on a remote resource running on Cloudflare:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my-worker&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;	// Set this to today&apos;s date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;compatibility_date&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;2026-10-11&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;r2_buckets&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;bucket_name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;screenshots-bucket&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;binding&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;screenshots_bucket&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;remote&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;name = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my-worker&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Set this to today&apos;s date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;compatibility_date = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;2026-10-11&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;r2_buckets&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;bucket_name = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;screenshots-bucket&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;binding = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;screenshots_bucket&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;remote = &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;When remote bindings are configured, your Worker &lt;strong&gt;still executes locally&lt;/strong&gt;, but all binding calls are proxied to the deployed resource that runs on Cloudflare&apos;s network.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You can &lt;a href=&quot;https://docs.infinitegaming.org/workers/local-development/#remote-bindings&quot;&gt;try out remote bindings&lt;/a&gt; for local development today with:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/&quot;&gt;Wrangler v4.37.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/workers/vite-plugin/&quot;&gt;Cloudflare Vite Plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/workers/testing/vitest-integration/&quot;&gt;Cloudflare Vitest Plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Tue, 16 Sep 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Email security - Regional Email Processing for Germany, India, or Australia</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-11-regional-email-processing-gia/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-11-regional-email-processing-gia/</guid><description>&lt;p&gt;We’re excited to announce that Email security customers can now choose their preferred mail processing location directly from the UI when onboarding a domain. This feature is available for the following onboarding methods: &lt;strong&gt;MX&lt;/strong&gt;, &lt;strong&gt;BCC&lt;/strong&gt;, and &lt;strong&gt;Journaling&lt;/strong&gt;.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;whats-new&quot;&gt;What’s new&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#whats-new&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Customers can now select where their email is processed. The following regions are supported:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Germany&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;India&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Australia&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Global processing remains the default option, providing flexibility to meet both compliance requirements or operational preferences.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;how-to-use-it&quot;&gt;How to use it&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#how-to-use-it&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;When onboarding a domain with MX, BCC, or Journaling:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Select the desired processing location (Germany, India, or Australia).&lt;/li&gt;
&lt;li&gt;The UI will display updated processing addresses specific to that region.&lt;/li&gt;
&lt;li&gt;For MX onboarding, if your domain is managed by Cloudflare, you can automatically update MX records directly from the UI.&lt;/li&gt;
&lt;/ol&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;availability&quot;&gt;Availability&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#availability&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;This feature is available across these Email security packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Advantage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise + PhishGuard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;whats-next&quot;&gt;What’s next&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#whats-next&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;We’re expanding the list of processing locations to match our &lt;a href=&quot;https://docs.infinitegaming.org/data-localization/&quot;&gt;Data Localization Suite (DLS)&lt;/a&gt; footprint, giving customers the broadest set of regional options in the market without the complexity of self-hosting.&lt;/p&gt;</description><pubDate>Thu, 11 Sep 2025 23:15:00 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Gateway, Cloudflare WAN, Cloudflare Tunnel for SASE - DNS filtering for private network onramps</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-11-dns-filtering-for-private-network-onramps/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-11-dns-filtering-for-private-network-onramps/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/zero-trust/cloudflare-gateway/#dns-filtering&quot;&gt;Magic WAN&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/mesh/features/routes/#dns-filtering&quot;&gt;WARP Connector&lt;/a&gt; users can now securely route their DNS traffic to the Gateway resolver without exposing traffic to the public Internet.&lt;/p&gt;
&lt;p&gt;Routing DNS traffic to the Gateway resolver allows DNS resolution and filtering for traffic coming from private networks while preserving source internal IP visibility. This ensures Magic WAN users have full integration with our Cloudflare One features, including &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/resolver-policies/#internal-dns&quot;&gt;Internal DNS&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/egress-policies/#selector-prerequisites&quot;&gt;hostname-based policies&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To configure DNS filtering, change your Magic WAN or WARP Connector DNS settings to use Cloudflare&apos;s shared resolver IPs, &lt;code&gt;172.64.36.1&lt;/code&gt; and &lt;code&gt;172.64.36.2&lt;/code&gt;. Once you configure DNS resolution and filtering, you can use &lt;em&gt;Source Internal IP&lt;/em&gt; as a traffic selector in your &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/resolver-policies/&quot;&gt;resolver policies&lt;/a&gt; for routing private DNS traffic to your &lt;a href=&quot;https://docs.infinitegaming.org/dns/internal-dns/&quot;&gt;Internal DNS&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 11 Sep 2025 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category><category>Cloudflare WAN</category><category>Cloudflare Tunnel for SASE</category></item><item><title>Workers - Worker version rollback limit increased from 10 to 100</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-11-increased-version-rollback-limit/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-11-increased-version-rollback-limit/</guid><description>&lt;p&gt;The number of recent versions available for a Worker rollback has been increased from 10 to 100.&lt;/p&gt;
&lt;p&gt;This allows you to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Promote any of the 100 most recent versions to be the active deployment.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Split traffic using &lt;a href=&quot;https://docs.infinitegaming.org/workers/versions-and-deployments/gradual-deployments/&quot;&gt;gradual deployments&lt;/a&gt; between your latest code and any of the 100 most recent versions.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can do this through the Cloudflare dashboard or with &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/general/#rollback&quot;&gt;Wrangler&apos;s rollback command&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Learn more about &lt;a href=&quot;https://docs.infinitegaming.org/workers/versions-and-deployments/&quot;&gt;versioned deployments&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/workers/versions-and-deployments/rollbacks/&quot;&gt;rollbacks&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 11 Sep 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Built with Cloudflare button</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-10-built-with-cloudflare-button/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-10-built-with-cloudflare-button/</guid><description>&lt;p&gt;We&apos;ve updated our &quot;Built with Cloudflare&quot; button to make it easier to share that you&apos;re building on Cloudflare with the world. Embed it in your project&apos;s README, blog post, or wherever you want to let people know.&lt;/p&gt;
&lt;img src=&quot;https://workers.cloudflare.com/built-with-cloudflare.svg&quot; alt=&quot;Built with Cloudflare&quot;&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://docs.infinitegaming.org/workers/platform/built-with-cloudflare&quot;&gt;documentation&lt;/a&gt; for usage information.&lt;/p&gt;</description><pubDate>Wed, 10 Sep 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Deploy static sites to Workers without a configuration file</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-09-interactive-wrangler-assets/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-09-interactive-wrangler-assets/</guid><description>&lt;p&gt;Deploying static site to Workers is now easier. When you run &lt;code&gt;wrangler deploy [directory]&lt;/code&gt; or &lt;code&gt;wrangler deploy --assets [directory]&lt;/code&gt; without an existing &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/configuration/&quot;&gt;configuration file&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/&quot;&gt;Wrangler CLI&lt;/a&gt; now guides you through the deployment process with interactive prompts.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;before-and-after&quot;&gt;Before and after&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#before-and-after&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; Required remembering multiple flags and parameters&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; deploy&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --assets&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; ./dist&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --compatibility-date&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; 2025-09-09&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --name&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; my-project&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt; Simple directory deployment with guided setup&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; deploy&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; dist&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Interactive prompts handle the rest as shown in the example flow below&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;whats-new&quot;&gt;What&apos;s new&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#whats-new&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Interactive prompts for missing configuration:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wrangler detects when you&apos;re trying to deploy a directory of static assets&lt;/li&gt;
&lt;li&gt;Prompts you to confirm the deployment type&lt;/li&gt;
&lt;li&gt;Asks for a project name (with smart defaults)&lt;/li&gt;
&lt;li&gt;Automatically sets the compatibility date to today&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Automatic configuration generation:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Creates a &lt;code&gt;wrangler.jsonc&lt;/code&gt; file with your deployment settings&lt;/li&gt;
&lt;li&gt;Stores your choices for future deployments&lt;/li&gt;
&lt;li&gt;Eliminates the need to remember complex command-line flags&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;example-workflow&quot;&gt;Example workflow&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#example-workflow&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Deploy your built static site&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; deploy&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; dist&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Wrangler will prompt:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;✔&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; It&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; looks&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; like&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; you&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; are&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; trying&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; to&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; deploy&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; a&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; directory&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; of&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; static&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; assets&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; only.&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Is&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; this&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; correct?&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; …&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; yes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;✔&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; What&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; do&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; you&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; want&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; to&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; name&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; your&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; project?&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; …&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; my-astro-site&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Automatically generates a wrangler.jsonc file and adds it to your project:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  &quot;name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;my-astro-site&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  &quot;compatibility_date&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;2025-09-09&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  &quot;assets&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;    &quot;directory&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;dist&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Next time you run wrangler deploy, this will use the configuration in your newly generated wrangler.jsonc file&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; deploy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;requirements&quot;&gt;Requirements&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#requirements&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;You must use Wrangler version 4.24.4 or later in order to use this feature&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Tue, 09 Sep 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare WAN - Custom IKE ID for IPsec Tunnels</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-08-custom-ike-id-ipsec-tunnels/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-08-custom-ike-id-ipsec-tunnels/</guid><description>&lt;p&gt;Now, Magic WAN customers can configure a custom IKE ID for their IPsec tunnels. Customers that are using Magic WAN and a VeloCloud SD-WAN device together can utilize this new feature to create a high availability configuration.&lt;/p&gt;
&lt;p&gt;This feature is available via API only. Customers can read the Magic WAN documentation to learn more about the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/common-settings/custom-ike-id-ipsec/&quot;&gt;Custom IKE ID feature and the API call to configure it&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate><product>Cloudflare WAN</product><category>Cloudflare WAN</category></item><item><title>Cloudflare WAN - Bidirectional tunnel health checks are compatible with all Magic on-ramps</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-05-bidirectional-health-check-any-on-ramp/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-05-bidirectional-health-check-any-on-ramp/</guid><description>&lt;p&gt;All bidirectional tunnel health check return packets are accepted by any Magic on-ramp.&lt;/p&gt;
&lt;p&gt;Previously, when a Magic tunnel had a bidirectional health check configured, the bidirectional health check would pass when the return packets came back to Cloudflare over the same tunnel that was traversed by the forward packets.&lt;/p&gt;
&lt;p&gt;There are SD-WAN devices, like VeloCloud, that do not offer controls to steer traffic over one tunnel versus another in a high availability tunnel configuration.&lt;/p&gt;
&lt;p&gt;Now, when a Magic tunnel has a bidirectional health check configured, the bidirectional health check will pass when the return packet traverses over any tunnel in a high availability configuration.&lt;/p&gt;</description><pubDate>Fri, 05 Sep 2025 00:00:00 GMT</pubDate><product>Cloudflare WAN</product><category>Cloudflare WAN</category></item><item><title>Workers, Workers for Platforms - Increased static asset limits for Workers</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-02-increased-static-asset-limits/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-02-increased-static-asset-limits/</guid><description>&lt;p&gt;You can now upload up to &lt;strong&gt;100,000 static assets&lt;/strong&gt; per Worker version&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Paid and Workers for Platforms users can now upload up to &lt;strong&gt;100,000 static assets&lt;/strong&gt; per Worker version, a 5x increase from the previous limit of 20,000.&lt;/li&gt;
&lt;li&gt;Customers on the free plan still have the same limit as before — 20,000 static assets per version of your Worker&lt;/li&gt;
&lt;li&gt;The individual file size limit of 25 MiB remains unchanged for all customers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This increase allows you to build larger applications with more static assets without hitting limits.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;wrangler&quot;&gt;Wrangler&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#wrangler&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;To take advantage of the increased limits, you must use &lt;strong&gt;Wrangler version 4.34.0 or higher&lt;/strong&gt;.
Earlier versions of Wrangler will continue to enforce the previous 20,000 file limit.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;learn-more&quot;&gt;Learn more&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#learn-more&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;For more information about Workers static assets, see the &lt;a href=&quot;https://docs.infinitegaming.org/workers/static-assets/&quot;&gt;Static Assets documentation&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/workers/platform/limits/#static-assets&quot;&gt;Platform Limits&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category><category>Workers for Platforms</category></item><item><title>Workers - A new, simpler REST API for Cloudflare Workers (Beta)</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-03-new-workers-api/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-03-new-workers-api/</guid><description>&lt;p&gt;You can now manage &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/workers/subresources/beta/subresources/workers/methods/create/&quot;&gt;&lt;strong&gt;Workers&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/workers/subresources/beta/subresources/workers/models/worker/#(schema)&quot;&gt;&lt;strong&gt;Versions&lt;/strong&gt;&lt;/a&gt;, and &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/workers/subresources/scripts/subresources/content/methods/update/&quot;&gt;&lt;strong&gt;Deployments&lt;/strong&gt;&lt;/a&gt; as separate resources with a new, resource-oriented API (Beta).&lt;/p&gt;
&lt;p&gt;This new API is supported in the &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Terraform provider&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and the &lt;a href=&quot;https://github.com/cloudflare/cloudflare-typescript&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Typescript SDK&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, allowing platform teams to manage a Worker&apos;s infrastructure in Terraform, while development teams handle code deployments from a separate repository or workflow. We also designed this API with AI agents in mind, as a clear, predictable structure is essential for them to reliably build, test, and deploy applications.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;try-it-out&quot;&gt;Try it out&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#try-it-out&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/api/resources/workers/subresources/beta/&quot;&gt;&lt;strong&gt;New beta API endpoints&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/cloudflare/cloudflare-typescript&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;strong&gt;Cloudflare TypeScript SDK v5.0.0&lt;/strong&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/cloudflare/cloudflare-go&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;strong&gt;Cloudflare Go SDK v6.0.0&lt;/strong&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;strong&gt;Terraform provider v5.9.0&lt;/strong&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;: &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/worker&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_worker&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; , &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/worker_version&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_worker_version&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, and &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/workers_deployment&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_workers_deployments&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; resources.&lt;/li&gt;
&lt;li&gt;See full examples in our &lt;a href=&quot;https://docs.infinitegaming.org/workers/platform/infrastructure-as-code&quot;&gt;Infrastructure as Code (IaC) guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;before-eight-endpoints-with-mixed-responsibilities&quot;&gt;Before: Eight+ endpoints with mixed responsibilities&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#before-eight-endpoints-with-mixed-responsibilities&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=7360,height=6176,format=webp/_astro/api-before.VkE1i-Rj.png&quot; alt=&quot;Before&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;7360&quot; height=&quot;6176&quot;&gt;
&lt;p&gt;The existing API was originally designed for simple, one-shot script uploads:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; -X&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; PUT&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;https://api.cloudflare.com/client/v4/accounts/&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$ACCOUNT_ID&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;/workers/scripts/&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$SCRIPT_NAME&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;    -H&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;X-Auth-Email: &lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$CLOUDFLARE_EMAIL&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;    -H&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;X-Auth-Key: &lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$CLOUDFLARE_API_KEY&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;    -H&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;Content-Type: multipart/form-data&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;    -F&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &apos;metadata={&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;      &quot;main_module&quot;: &quot;worker.js&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;      &quot;compatibility_date&quot;: &quot;$today$&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;    }&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;    -F&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;worker.js=@worker.js;type=application/javascript+module&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;This API worked for creating a basic Worker, uploading all of its code, and deploying it immediately — but came with challenges:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;A Worker couldn&apos;t exist without code&lt;/strong&gt;: To create a Worker, you had to upload its code in the same API request. This meant platform teams couldn&apos;t provision Workers with the proper settings, and then hand them off to development teams to deploy the actual code.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Several endpoints implicitly created deployments&lt;/strong&gt;: Simple updates like adding a secret or changing a script&apos;s content would implicitly create a new version and immediately deploy it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Updating a setting was confusing&lt;/strong&gt;: Configuration was scattered across eight endpoints with overlapping responsibilities.  This ambiguity made it difficult for human developers (and even more so for AI agents) to reliably update a Worker via API.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Scripts used names as primary identifiers&lt;/strong&gt;: This meant simple renames could turn into a risky migration, requiring you to create a brand new Worker and update every reference. If you were using Terraform, this could inadvertently destroy your Worker altogether.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;after-three-resources-with-clear-boundaries&quot;&gt;After: Three resources with clear boundaries&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#after-three-resources-with-clear-boundaries&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=7360,height=4680,format=webp/_astro/api-after.J8u2vIcT.png&quot; alt=&quot;After&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;7360&quot; height=&quot;4680&quot;&gt;
The new API introduces cleaner resource management with three core resources: &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/workers/subresources/beta/subresources/workers/methods/create/&quot;&gt;&lt;strong&gt;Worker&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/workers/subresources/beta/subresources/workers/models/worker/#(schema)&quot;&gt;&lt;strong&gt;Versions&lt;/strong&gt;&lt;/a&gt;, and &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/workers/subresources/scripts/subresources/content/methods/update/&quot;&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;All endpoints now use simple JSON payloads, with script content embedded as &lt;code&gt;base64&lt;/code&gt;-encoded strings -- a more consistent and reliable approach than the previous &lt;code&gt;multipart/form-data&lt;/code&gt; format.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Worker&lt;/strong&gt;: The parent resource representing your application. It has a stable UUID and holds persistent settings like &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;tags&lt;/code&gt;, and &lt;code&gt;logpush&lt;/code&gt;. You can now create a Worker to establish its identity and settings &lt;strong&gt;before&lt;/strong&gt; any code is uploaded.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Version&lt;/strong&gt;: An immutable snapshot of your code and its specific configuration, like bindings and &lt;code&gt;compatibility_date&lt;/code&gt;. Creating a new version is a safe action that doesn&apos;t affect live traffic.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Deployment&lt;/strong&gt;: An explicit action that directs traffic to a specific version.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;aside role=&quot;note&quot; aria-label=&quot;Note&quot; class=&quot;aside-card flex items-start gap-3 rounded-lg px-4 py-3 my-4&quot; style=&quot;--_c: var(--nb-info); --_t: var(--nb-info-muted);&quot; data-astro-cid-znle5jil&gt;&lt;span class=&quot;flex h-[1.375em] shrink-0 items-center&quot; aria-hidden=&quot;true&quot; data-astro-cid-znle5jil&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[1em] w-[1em]&quot; data-astro-cid-znle5jil=&quot;true&quot; data-icon=&quot;ph:info&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24m0 192a88 88 0 1 1 88-88a88.1 88.1 0 0 1-88 88m16-40a8 8 0 0 1-8 8a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 8 8m-32-92a12 12 0 1 1 12 12a12 12 0 0 1-12-12&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div class=&quot;flex min-w-0 flex-1 flex-col gap-0.5&quot; data-astro-cid-znle5jil&gt;&lt;p class=&quot;m-0 text-base leading-snug font-semibold&quot; data-astro-cid-znle5jil&gt;Note&lt;/p&gt;&lt;div class=&quot;aside-card-body text-sm leading-normal&quot; data-astro-cid-znle5jil&gt;&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/api/resources/workers/subresources/beta/subresources/workers/&quot;&gt;Workers&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/workers/subresources/beta/subresources/workers/subresources/versions/&quot;&gt;Versions&lt;/a&gt; use the new &lt;code&gt;/workers/&lt;/code&gt; beta endpoints, while &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/workers/subresources/scripts/subresources/deployments/&quot;&gt;Deployments&lt;/a&gt; remain on the existing &lt;code&gt;/scripts/&lt;/code&gt; endpoint. Pair the new endpoints with the existing Deployment API for a complete workflow.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;why-this-matters&quot;&gt;Why this matters&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#why-this-matters&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;you-can-now-create-workers-before-uploading-code&quot;&gt;You can now create Workers before uploading code&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#you-can-now-create-workers-before-uploading-code&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Workers are now standalone resources that can be created and configured without any code. Platform teams can provision Workers with the right settings, then hand them off to development teams for implementation.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;example-typescript-sdk&quot;&gt;Example: Typescript SDK&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#example-typescript-sdk&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// Step 1: Platform team creates the Worker resource (no code needed)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; worker&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; client.workers.beta.workers.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;create&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  name: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;payment-service&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;...&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  observability: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    enabled: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// Step 2: Development team adds code and creates a version later&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; version&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; client.workers.beta.workers.versions.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;create&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(worker.id, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;...&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  main_module: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;worker.js&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  compatibility_date: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;$today&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  bindings: [ &lt;/span&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;/*...*/&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  modules: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;      name: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;worker.js&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;      content_type: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;application/javascript+module&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;      content_base64: Buffer.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(scriptContent).&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;toString&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;base64&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// Step 3: Deploy explicitly when ready&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; deployment&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; client.workers.scripts.deployments.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;create&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(worker.name, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;...&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  strategy: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;percentage&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  versions: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;      percentage: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;      version_id: version.id,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;example-terraform&quot;&gt;Example: Terraform&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#example-terraform&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;If you use Terraform, you can now declare the Worker in your Terraform configuration and manage configuration outside of Terraform in your Worker&apos;s &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/configuration/&quot;&gt;&lt;code&gt;wrangler.jsonc&lt;/code&gt; file&lt;/a&gt; and deploy code changes using &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/&quot;&gt;Wrangler&lt;/a&gt;.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;tf&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;tf&quot; data-nb-lang=&quot;tf&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;resource&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;cloudflare_worker&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;my_worker&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;...&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;my-important-service&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Manage Versions and Deployments here or outside of Terraform&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# resource &quot;cloudflare_worker_version&quot; &quot;my_worker_version&quot; {}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# resource &quot;cloudflare_workers_deployment&quot; &quot;my_worker_deployment&quot; {}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;deployments-are-always-explicit-never-implicit&quot;&gt;Deployments are always explicit, never implicit&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#deployments-are-always-explicit-never-implicit&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Creating a version and deploying it are now always explicit, separate actions - never implicit side effects. To update version-specific settings (like bindings), you create a new version with those changes. The existing deployed version remains unchanged until you explicitly deploy the new one.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Step 1: Create a new version with updated settings (doesn&apos;t affect live traffic)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;POST&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; /workers/workers/{id}/versions&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  &quot;compatibility_date&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$today&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  &quot;bindings&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;      &quot;name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;MY_NEW_ENV_VAR&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;      &quot;text&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;new_value&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;      &quot;type&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;plain_text&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  &quot;modules&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; [...]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Step 2: Explicitly deploy when ready (now affects live traffic)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;POST&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; /workers/scripts/{script_name}/deployments&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  &quot;strategy&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;percentage&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  &quot;versions&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;      &quot;percentage&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; 100,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;      &quot;version_id&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;new_version_id&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;settings-are-clearly-organized-by-scope&quot;&gt;Settings are clearly organized by scope&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#settings-are-clearly-organized-by-scope&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Configuration is now logically divided: &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/workers/subresources/beta/subresources/workers/&quot;&gt;&lt;strong&gt;Worker settings&lt;/strong&gt;&lt;/a&gt; (like &lt;code&gt;name&lt;/code&gt; and &lt;code&gt;tags&lt;/code&gt;) persist across all versions, while &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/workers/subresources/beta/subresources/workers/subresources/versions/&quot;&gt;&lt;strong&gt;Version settings&lt;/strong&gt;&lt;/a&gt; (like &lt;code&gt;bindings&lt;/code&gt; and &lt;code&gt;compatibility_date&lt;/code&gt;) are specific to each code snapshot.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Worker settings (the parent resource)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;PUT&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; /workers/workers/{id}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  &quot;name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;payment-service&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  &quot;tags&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; [&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;production&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  &quot;logpush&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; true&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Version settings (the &quot;code&quot;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;POST&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; /workers/workers/{id}/versions&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  &quot;compatibility_date&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$today&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  &quot;bindings&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; [...],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  &quot;modules&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; [...]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;workers-api-endpoints-now-support-uuids-in-addition-to-names&quot;&gt;&lt;code&gt;/workers&lt;/code&gt; API endpoints now support UUIDs (in addition to names)&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#workers-api-endpoints-now-support-uuids-in-addition-to-names&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;/workers/workers/&lt;/code&gt; path now supports addressing a Worker by both its immutable UUID and its mutable name.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Both work for the same Worker&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;GET&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; /workers/workers/29494978e03748669e8effb243cf2515&lt;/span&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;  # UUID (stable for automation)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;GET&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; /workers/workers/payment-service&lt;/span&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;                  # Name (convenient for humans)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;This dual approach means:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Developers can use readable names for debugging.&lt;/li&gt;
&lt;li&gt;Automation can rely on stable UUIDs to prevent errors when Workers are renamed.&lt;/li&gt;
&lt;li&gt;Terraform can rename Workers without destroying and recreating them.&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;learn-more&quot;&gt;Learn more&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#learn-more&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/platform/infrastructure-as-code&quot;&gt;Infrastructure as Code (IaC) guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/api/resources/workers/subresources/beta/&quot;&gt;API documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/versions-and-deployments/&quot;&gt;Versions and Deployments overview&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;technical-notes&quot;&gt;Technical notes&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#technical-notes&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;The pre-existing Workers REST API remains fully supported. Once the new API exits beta, we&apos;ll provide a migration timeline with ample notice and comprehensive migration guides.&lt;/li&gt;
&lt;li&gt;Existing Terraform resources and SDK methods will continue to be fully supported through the current major version.&lt;/li&gt;
&lt;li&gt;While the Deployments API currently remains on the &lt;code&gt;/scripts/&lt;/code&gt; endpoint, we plan to introduce a new Deployments endpoint under &lt;code&gt;/workers/&lt;/code&gt; to match the new API structure.&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare Tunnel, Cloudflare Tunnel for SASE - Cloudflare Tunnel and Networks API will no longer return deleted resources by default starting December 1, 2025</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-02-tunnel-networks-list-endpoints-new-default/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-02-tunnel-networks-list-endpoints-new-default/</guid><description>&lt;p&gt;Starting &lt;strong&gt;December 1, 2025&lt;/strong&gt;, list endpoints for the &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/tunnels/&quot;&gt;Cloudflare Tunnel API&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/networks/&quot;&gt;Zero Trust Networks API&lt;/a&gt; will no longer return deleted tunnels, routes, subnets and virtual networks by default. This change makes the API behavior more intuitive by only returning active resources unless otherwise specified.&lt;/p&gt;
&lt;p&gt;No action is required if you already explicitly set &lt;code&gt;is_deleted=false&lt;/code&gt; or if you only need to list active resources.&lt;/p&gt;
&lt;p&gt;This change affects the following API endpoints:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;List all tunnels: &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/tunnels/methods/list/&quot;&gt;&lt;code&gt;GET /accounts/{account_id}/tunnels&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;List &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/&quot;&gt;Cloudflare Tunnels&lt;/a&gt;: &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/tunnels/subresources/cloudflared/methods/list/&quot;&gt;&lt;code&gt;GET /accounts/{account_id}/cfd_tunnel&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;List &lt;a href=&quot;https://docs.infinitegaming.org/mesh/&quot;&gt;WARP Connector&lt;/a&gt; tunnels: &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/tunnels/subresources/warp_connector/methods/list/&quot;&gt;&lt;code&gt;GET /accounts/{account_id}/warp_connector&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;List tunnel routes: &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/networks/subresources/routes/methods/list/&quot;&gt;&lt;code&gt;GET /accounts/{account_id}/teamnet/routes&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;List subnets: &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/networks/subresources/subnets/methods/list/&quot;&gt;&lt;code&gt;GET /accounts/{account_id}/zerotrust/subnets&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;List virtual networks: &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/networks/subresources/virtual_networks/methods/list/&quot;&gt;&lt;code&gt;GET /accounts/{account_id}/teamnet/virtual_networks&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;what-is-changing&quot;&gt;What is changing?&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#what-is-changing&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The default behavior of the &lt;code&gt;is_deleted&lt;/code&gt; query parameter will be updated.&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;text-align: left&quot;&gt;Scenario&lt;/th&gt;
&lt;th style=&quot;text-align: left&quot;&gt;Previous behavior (before December 1, 2025)&lt;/th&gt;
&lt;th style=&quot;text-align: left&quot;&gt;New behavior (from December 1, 2025)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;is_deleted&lt;/code&gt; parameter is omitted&lt;/td&gt;
&lt;td style=&quot;text-align: left&quot;&gt;Returns &lt;strong&gt;active &amp;amp; deleted&lt;/strong&gt; tunnels, routes, subnets and virtual networks&lt;/td&gt;
&lt;td style=&quot;text-align: left&quot;&gt;Returns &lt;strong&gt;only active&lt;/strong&gt; tunnels, routes, subnets and virtual networks&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;action-required&quot;&gt;Action required&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#action-required&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;If you need to retrieve deleted (or all) resources, please update your API calls to explicitly include the &lt;code&gt;is_deleted&lt;/code&gt; parameter before &lt;strong&gt;December 1, 2025&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;To get a list of only deleted resources, you must now explicitly add the &lt;code&gt;is_deleted=true&lt;/code&gt; query parameter to your request:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Example: Get ONLY deleted Tunnels&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;https://api.cloudflare.com/client/v4/accounts/&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$ACCOUNT_ID&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;/tunnels?is_deleted=true&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;     -H&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;Authorization: Bearer &lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$API_TOKEN&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Example: Get ONLY deleted Virtual Networks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;https://api.cloudflare.com/client/v4/accounts/&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$ACCOUNT_ID&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;/teamnet/virtual_networks?is_deleted=true&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;     -H&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;Authorization: Bearer &lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$API_TOKEN&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Following this change, retrieving a complete list of both active and deleted resources will require two separate API calls: one to get active items (by omitting the parameter or using &lt;code&gt;is_deleted=false&lt;/code&gt;) and one to get deleted items (&lt;code&gt;is_deleted=true&lt;/code&gt;).&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;why-were-making-this-change&quot;&gt;Why we’re making this change&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#why-were-making-this-change&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;This update is based on user feedback and aims to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Create a more intuitive default:&lt;/strong&gt; Aligning with common API design principles where list operations return only active resources by default.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reduce unexpected results:&lt;/strong&gt; Prevents users from accidentally operating on deleted resources that were returned unexpectedly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Improve performance:&lt;/strong&gt; For most users, the default query result will now be smaller and more relevant.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To learn more, please visit the &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/tunnels/&quot;&gt;Cloudflare Tunnel API&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/zero_trust/subresources/networks/&quot;&gt;Zero Trust Networks API&lt;/a&gt; documentation.&lt;/p&gt;</description><pubDate>Tue, 02 Sep 2025 00:00:00 GMT</pubDate><product>Cloudflare Tunnel</product><category>Cloudflare Tunnel</category><category>Cloudflare Tunnel for SASE</category></item><item><title>Email security - Updated Email security roles</title><link>https://docs.infinitegaming.org/changelog/post/2025-09-01-updated-new-roles/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-09-01-updated-new-roles/</guid><description>&lt;p&gt;To provide more granular controls, we refined the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/roles-permissions/#email-security-roles&quot;&gt;existing roles&lt;/a&gt; for Email security and launched a new Email security role as well.&lt;/p&gt;
&lt;p&gt;All Email security roles no longer have read or write access to any of the other Zero Trust products:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Email Configuration Admin&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Email Integration Admin&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Email security Read Only&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Email security Analyst&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Email security Policy Admin&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Email security Reporting&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To configure &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/email-security/outbound-dlp/&quot;&gt;Data Loss Prevention (DLP)&lt;/a&gt; or &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/remote-browser-isolation/setup/clientless-browser-isolation/#set-up-clientless-web-isolation&quot;&gt;Remote Browser Isolation (RBI)&lt;/a&gt;, you now need to be an admin for the Zero Trust dashboard with the &lt;strong&gt;Cloudflare Zero Trust&lt;/strong&gt; role.&lt;/p&gt;
&lt;p&gt;Also through customer feedback, we have created a new additive role to allow &lt;strong&gt;Email security Analyst&lt;/strong&gt; to create, edit, and delete Email security policies, without needing to provide access via the &lt;strong&gt;Email Configuration Admin&lt;/strong&gt; role. This role is called &lt;strong&gt;Email security Policy Admin&lt;/strong&gt;, which can read all settings, but has write access to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/email-security/settings/detection-settings/allow-policies/&quot;&gt;allow policies&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/email-security/settings/detection-settings/trusted-domains/&quot;&gt;trusted domains&lt;/a&gt;, and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/email-security/settings/detection-settings/blocked-senders/&quot;&gt;blocked senders&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This feature is available across these Email security packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Advantage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise + PhishGuard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Mon, 01 Sep 2025 23:25:49 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Cloudflare One Client - Cloudflare One WARP Diagnostic AI Analyzer</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-29-warp-AI-diag-analyzer/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-29-warp-AI-diag-analyzer/</guid><description>&lt;p&gt;We&apos;re excited to share a new AI feature, the &lt;a href=&quot;https://blog.cloudflare.com/ai-troubleshoot-warp-and-network-connectivity-issues/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;WARP diagnostic analyzer&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, to help you troubleshoot and resolve WARP connectivity issues faster. This beta feature is now available in the &lt;a href=&quot;https://dash.cloudflare.com/one/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare One dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; to all users. The AI analyzer makes it easier for you to identify the root cause of client connectivity issues by parsing &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/dex/diagnostics/client-packet-capture/#start-a-remote-capture&quot;&gt;remote captures&lt;/a&gt; of &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/troubleshooting/diagnostic-logs/#warp-diag-logs&quot;&gt;WARP diagnostic logs&lt;/a&gt;. The WARP diagnostic analyzer provides a summary of impact that may be experienced on the device, lists notable events that may contribute to performance issues, and recommended troubleshooting steps and articles to help you resolve these issues. Refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/dex/diagnostics/client-packet-capture/#diagnostics-analyzer-beta&quot;&gt;WARP diagnostics analyzer (beta)&lt;/a&gt; to learn more about how to maximize using the WARP diagnostic analyzer to troubleshoot the WARP client.&lt;/p&gt;</description><pubDate>Fri, 29 Aug 2025 00:00:00 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Digital Experience Monitoring - DEX MCP Server</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-29-dex-mcp-server/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-29-dex-mcp-server/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/dex/&quot;&gt;Digital Experience Monitoring (DEX)&lt;/a&gt; provides visibility into device connectivity and performance across your Cloudflare SASE deployment.&lt;/p&gt;
&lt;p&gt;We&apos;ve released an MCP server &lt;a href=&quot;https://cloudflare.com/learning/ai/what-is-model-context-protocol-mcp/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;(Model Context Protocol)&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; for DEX.&lt;/p&gt;
&lt;p&gt;The DEX MCP server is an AI tool that allows customers to ask a question like, &quot;Show me the connectivity and performance metrics for the device used by carly‌@acme.com&quot;, and receive an answer that contains data from the DEX API.&lt;/p&gt;
&lt;p&gt;Any Cloudflare One customer using a Free, Pay-as-you-go, or Enterprise account can access the DEX MCP Server. This feature is available to everyone.&lt;/p&gt;
&lt;p&gt;Customers can test the new DEX MCP server in less than one minute. To learn more, read the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/dex/dex-mcp-server/&quot;&gt;DEX MCP server documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 29 Aug 2025 00:00:00 GMT</pubDate><product>Digital Experience Monitoring</product><category>Digital Experience Monitoring</category></item><item><title>Gateway, Cloudflare One - Shadow IT - SaaS analytics dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-27-shadow-it-analytics/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-27-shadow-it-analytics/</guid><description>&lt;p&gt;Zero Trust has significantly upgraded its &lt;strong&gt;Shadow IT analytics&lt;/strong&gt;, providing you with unprecedented visibility into your organizations use of SaaS tools. With this dashboard, you can review who is using an application and volumes of data transfer to the application.&lt;/p&gt;
&lt;p&gt;You can review these metrics against application type, such as Artificial Intelligence or Social Media. You can also mark applications with an approval status, including &lt;strong&gt;Unreviewed&lt;/strong&gt;, &lt;strong&gt;In Review&lt;/strong&gt;, &lt;strong&gt;Approved&lt;/strong&gt;, and &lt;strong&gt;Unapproved&lt;/strong&gt; designating how they can be used in your organization.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2814,height=1486,format=webp/_astro/shadow-it-analytics.BLNnG72w.png&quot; alt=&quot;Cloudflare One Analytics Dashboards&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2814&quot; height=&quot;1486&quot;&gt;
&lt;p&gt;These application statuses can also be used in Gateway HTTP policies, so you can block, isolate, limit uploads and downloads, and more based on the application status.&lt;/p&gt;
&lt;p&gt;Both the analytics and policies are accessible in the Cloudflare &lt;a href=&quot;https://one.dash.cloudflare.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Zero Trust dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, empowering organizations with better visibility and control.&lt;/p&gt;</description><pubDate>Wed, 27 Aug 2025 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category><category>Cloudflare One</category></item><item><title>CASB - New CASB integrations for ChatGPT, Claude, and Gemini</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-26-casb-ai-integrations/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-26-casb-ai-integrations/</guid><description>&lt;p&gt;&lt;a href=&quot;https://www.cloudflare.com/zero-trust/products/casb/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare CASB&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; now supports three of the most widely used GenAI platforms — &lt;strong&gt;OpenAI ChatGPT&lt;/strong&gt;, &lt;strong&gt;Anthropic Claude&lt;/strong&gt;, and &lt;strong&gt;Google Gemini&lt;/strong&gt;. These API-based integrations give security teams agentless visibility into posture, data, and compliance risks across their organization’s use of generative AI.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2335,height=1776,format=webp/_astro/casb-ai-integrations-preview.B-zsSA1P.png&quot; alt=&quot;Cloudflare CASB showing selection of new findings for ChatGPT, Claude, and Gemini integrations.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2335&quot; height=&quot;1776&quot;&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;key-capabilities&quot;&gt;Key capabilities&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#key-capabilities&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Agentless connections&lt;/strong&gt; — connect ChatGPT, Claude, and Gemini tenants via API; no endpoint software required&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Posture management&lt;/strong&gt; — detect insecure settings and misconfigurations that could lead to data exposure&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DLP detection&lt;/strong&gt; — identify sensitive data in uploaded chat attachments or files&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GenAI-specific insights&lt;/strong&gt; — surface risks unique to each provider’s capabilities&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;learn-more&quot;&gt;Learn more&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#learn-more&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.cloudflare.com/cloudflare-one/integrations/cloud-and-saas/openai/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ChatGPT integration docs&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.cloudflare.com/cloudflare-one/integrations/cloud-and-saas/anthropic/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude integration docs&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.cloudflare.com/cloudflare-one/integrations/cloud-and-saas/google-workspace/gemini/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Gemini integration docs&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These integrations are available to all Cloudflare One customers today.&lt;/p&gt;</description><pubDate>Tue, 26 Aug 2025 16:00:00 GMT</pubDate><product>CASB</product><category>CASB</category></item><item><title>Access - Manage and restrict access to internal MCP servers with Cloudflare Access</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-26-access-mcp-oauth/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-26-access-mcp-oauth/</guid><description>&lt;p&gt;You can now control who within your organization has access to internal MCP servers, by putting internal MCP servers behind &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/policies/&quot;&gt;Cloudflare Access&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/linked-apps/&quot;&gt;Self-hosted applications&lt;/a&gt; in Cloudflare Access now support OAuth for MCP server authentication. This allows Cloudflare to delegate access from any self-hosted application to an MCP server via OAuth. The OAuth access token authorizes the MCP server to make requests to your self-hosted applications on behalf of the authorized user, using that user&apos;s specific permissions and scopes.&lt;/p&gt;
&lt;p&gt;For example, if you have an MCP server designed for internal use within your organization, you can configure Access policies to ensure that only authorized users can access it, regardless of which MCP client they use. Support for internal, self-hosted MCP servers also works with MCP server portals, allowing you to provide a single MCP endpoint for multiple MCP servers. For more on MCP server portals, read the &lt;a href=&quot;https://blog.cloudflare.com/zero-trust-mcp-server-portals/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;blog post&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; on the Cloudflare Blog.&lt;/p&gt;</description><pubDate>Tue, 26 Aug 2025 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Access - MCP server portals</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-26-mcp-server-portals/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-26-mcp-server-portals/</guid><description>&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1557,height=420,format=webp/_astro/mcp-server-portal.BOKqTCoI.png&quot; alt=&quot;MCP server portal&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1557&quot; height=&quot;420&quot;&gt;
&lt;p&gt;An &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/ai-controls/mcp-portals/&quot;&gt;MCP server portal&lt;/a&gt; centralizes multiple Model Context Protocol (MCP) servers onto a single HTTP endpoint. Key benefits include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Streamlined access to multiple MCP servers&lt;/strong&gt;: MCP server portals support both unauthenticated MCP servers as well as MCP servers secured using any third-party or custom OAuth provider. Users log in to the portal URL through Cloudflare Access and are prompted to authenticate separately to each server that requires OAuth.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Customized tools per portal&lt;/strong&gt;: Admins can tailor an MCP portal to a particular use case by choosing the specific tools and prompt templates that they want to make available to users through the portal. This allows users to access a curated set of tools and prompts — the less external context exposed to the AI model, the better the AI responses tend to be.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Observability&lt;/strong&gt;: Once the user&apos;s AI agent is connected to the portal, Cloudflare Access logs the individual requests made using the tools in the portal.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is available in an open beta for all customers across all plans! For more information check out our &lt;a href=&quot;https://blog.cloudflare.com/zero-trust-mcp-server-portals/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;blog&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; for this release.&lt;/p&gt;</description><pubDate>Tue, 26 Aug 2025 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Data Loss Prevention - New DLP topic based detection entries for AI prompt protection</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-25-ai-prompt-protection/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-25-ai-prompt-protection/</guid><description>&lt;p&gt;You now have access to a comprehensive suite of capabilities to secure your organization&apos;s use of generative AI. AI prompt protection introduces four key features that work together to provide deep visibility and granular control.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prompt Detection for AI Applications&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;DLP can now natively detect and inspect user prompts submitted to popular AI applications, including &lt;strong&gt;Google Gemini&lt;/strong&gt;, &lt;strong&gt;ChatGPT&lt;/strong&gt;, &lt;strong&gt;Claude&lt;/strong&gt;, and &lt;strong&gt;Perplexity&lt;/strong&gt;.&lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;strong&gt;Prompt Analysis and Topic Classification&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Our DLP engine performs deep analysis on each prompt, applying &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/detection-entries/configure-detection-entries/#ai-prompt-topics&quot;&gt;topic classification&lt;/a&gt;. These topics are grouped into two evaluation categories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Content:&lt;/strong&gt; PII, Source Code, Credentials and Secrets, Financial Information, and Customer Data.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Intent:&lt;/strong&gt; Jailbreak attempts, requests for malicious code, or attempts to extract PII.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To help you apply these topics quickly, we have also released five new predefined profiles (for example, AI Prompt: AI Security, AI Prompt: PII) that bundle these new topics.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=728,height=439,format=webp/_astro/ai-prompt-detection-entry.4QmdkAuv.png&quot; alt=&quot;DLP&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;728&quot; height=&quot;439&quot;&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Granular Guardrails&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can now build guardrails using Gateway HTTP policies with &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/#granular-controls&quot;&gt;application granular controls&lt;/a&gt;. Apply a DLP profile containing an &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/detection-entries/configure-detection-entries/#ai-prompt-topics&quot;&gt;AI prompt topic detection&lt;/a&gt; to individual AI applications (for example, &lt;code&gt;ChatGPT&lt;/code&gt;) and specific user actions (for example, &lt;code&gt;SendPrompt&lt;/code&gt;) to block sensitive prompts.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=731,height=511,format=webp/_astro/ai-prompt-policy.CF3H2rbK.png&quot; alt=&quot;DLP&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;731&quot; height=&quot;511&quot;&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Full Prompt Logging&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To aid in incident investigation, an optional setting in your Gateway policy allows you to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/dlp-policies/logging-options/#log-generative-ai-prompt-content&quot;&gt;capture prompt logs&lt;/a&gt; to store the full interaction of prompts that trigger a policy match. To make investigations easier, logs can be filtered by &lt;code&gt;conversation_id&lt;/code&gt;, allowing you to reconstruct the full context of an interaction that led to a policy violation.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=728,height=444,format=webp/_astro/ai-prompt-log.ywQDc5qN.png&quot; alt=&quot;DLP&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;728&quot; height=&quot;444&quot;&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AI prompt protection is now available in open beta. To learn more about it, read the &lt;a href=&quot;https://blog.cloudflare.com/ai-prompt-protection/#closing-the-loop-logging&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;blog&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; or refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/detection-entries/configure-detection-entries/#ai-prompt-topics&quot;&gt;AI prompt topics&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 25 Aug 2025 00:00:00 GMT</pubDate><product>Data Loss Prevention</product><category>Data Loss Prevention</category></item><item><title>Workers - Content type returned in Workers Assets for Javascript files is now `text/javascript`</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-25-workers-assets-javascript-content-type/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-25-workers-assets-javascript-content-type/</guid><description>&lt;p&gt;JavaScript asset responses have been updated to use the &lt;code&gt;text/javascript&lt;/code&gt; Content-Type header instead of &lt;code&gt;application/javascript&lt;/code&gt;. While both MIME types are widely supported by browsers, the HTML Living Standard explicitly recommends &lt;code&gt;text/javascript&lt;/code&gt; as the preferred type going forward.&lt;/p&gt;
&lt;p&gt;This change improves:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Standards alignment: Ensures consistency with the HTML spec and modern web platform guidance.&lt;/li&gt;
&lt;li&gt;Interoperability: Some developer tools, validators, and proxies expect text/javascript and may warn or behave inconsistently with application/javascript.&lt;/li&gt;
&lt;li&gt;Future-proofing: By following the spec-preferred MIME type, we reduce the risk of deprecation warnings or unexpected behavior in evolving browser environments.&lt;/li&gt;
&lt;li&gt;Consistency: Most frameworks, CDNs, and hosting providers now default to text/javascript, so this change matches common ecosystem practice.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Because all major browsers accept both MIME types, this update is backwards compatible and should not cause breakage.&lt;/p&gt;
&lt;p&gt;Users will see this change on the next deployment of their assets.&lt;/p&gt;</description><pubDate>Mon, 25 Aug 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Gateway - Gateway BYOIP Dedicated Egress IPs now available.</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-21-byoip-dedicated-egress-ip/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-21-byoip-dedicated-egress-ip/</guid><description>&lt;p&gt;Enterprise Gateway users can now use Bring Your Own IP (BYOIP) for dedicated egress IPs.&lt;/p&gt;
&lt;p&gt;Admins can now onboard and use their own IPv4 or IPv6 prefixes to egress traffic from Cloudflare, delivering greater control, flexibility, and compliance for network traffic.&lt;/p&gt;
&lt;p&gt;Get started by following the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/egress-policies/dedicated-egress-ips/#bring-your-own-ip-address-byoip&quot;&gt;BYOIP onboarding process&lt;/a&gt;. Once your IPs are onboarded, go to &lt;strong&gt;Gateway&lt;/strong&gt; &amp;gt; &lt;strong&gt;Egress policies&lt;/strong&gt; and select or create an egress policy. In &lt;strong&gt;Select an egress IP&lt;/strong&gt;, choose &lt;em&gt;Use dedicated egress IPs (Cloudflare or BYOIP)&lt;/em&gt;, then select your BYOIP address from the dropdown menu.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=933,height=459,format=webp/_astro/Gateway-byoip-dedicated-egress-ips.D0pzLAbV.png&quot; alt=&quot;Screenshot of a dropdown menu adding a BYOIP IPv4 address as a dedicated egress IP in a Gateway egress policy&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;933&quot; height=&quot;459&quot;&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/egress-policies/dedicated-egress-ips/#bring-your-own-ip-address-byoip&quot;&gt;BYOIP for dedicated egress IPs&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 21 Aug 2025 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Workers - Easier debugging in Workers with improved Wrangler error screen</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-19-improved-wrangler-error-screen/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-19-improved-wrangler-error-screen/</guid><description>&lt;p&gt;Wrangler&apos;s error screen has received several improvements to enhance your debugging experience!&lt;/p&gt;
&lt;p&gt;The error screen now features a refreshed design thanks to &lt;a href=&quot;https://www.npmjs.com/package/youch&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;youch&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, with support for both light and dark themes, improved source map resolution logic that handles missing source files more reliably, and better error cause display.&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;After (Light)&lt;/th&gt;
&lt;th&gt;After (Dark)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=990,height=1500,format=webp/_astro/old-error-screen.yurLWiKb.png&quot; alt=&quot;Old error screen&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;990&quot; height=&quot;1500&quot;&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=990,height=1500,format=webp/_astro/new-error-screen-light.CcroERTP.png&quot; alt=&quot;New light theme error screen&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;990&quot; height=&quot;1500&quot;&gt;&lt;/td&gt;
&lt;td&gt;&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=990,height=1500,format=webp/_astro/new-error-screen-dark.BIDA2RGg.png&quot; alt=&quot;New dark theme error screen&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;990&quot; height=&quot;1500&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Try it out now with &lt;code&gt;npx wrangler@latest dev&lt;/code&gt; in your Workers project.&lt;/p&gt;</description><pubDate>Tue, 19 Aug 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Access - SFTP support for SSH with Cloudflare Access for Infrastructure</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-15-sftp/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-15-sftp/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/use-cases/ssh/ssh-infrastructure-access/&quot;&gt;SSH with Cloudflare Access for Infrastructure&lt;/a&gt; now supports SFTP. It is compatible with SFTP clients, such as Cyberduck.&lt;/p&gt;</description><pubDate>Fri, 15 Aug 2025 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Load Balancing - Steer Traffic by AS Number in Load Balancing Custom Rules</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-15-asnum-support-in-custom-rules/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-15-asnum-support-in-custom-rules/</guid><description>&lt;p&gt;You can now create more granular, network-aware Custom Rules in Cloudflare Load Balancing using the Autonomous System Number (ASN) of an incoming request.&lt;/p&gt;
&lt;p&gt;This allows you to steer traffic with greater precision based on the network source of a request. For example, you can route traffic from specific Internet Service Providers (ISPs) or enterprise customers to dedicated infrastructure, optimize performance, or enforce compliance by directing certain networks to preferred data centers.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2554,height=1472,format=webp/_astro/asnum-custom-rule.CtcHu_zj.png&quot; alt=&quot;Create a Load Balancing Custom Rule using AS Num&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2554&quot; height=&quot;1472&quot;&gt;
&lt;p&gt;To get started, create a &lt;a href=&quot;https://developers.cloudflare.com/load-balancing/additional-options/load-balancing-rules/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Custom Rule&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; in your Load Balancer and select &lt;strong&gt;AS Num&lt;/strong&gt; from the &lt;strong&gt;Field&lt;/strong&gt; dropdown.&lt;/p&gt;</description><pubDate>Fri, 15 Aug 2025 00:00:00 GMT</pubDate><product>Load Balancing</product><category>Load Balancing</category></item><item><title>Workers - The Node.js and Web File System APIs in Workers</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-15-nodejs-fs/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-15-nodejs-fs/</guid><description>&lt;p&gt;Implementations of the &lt;a href=&quot;https://nodejs.org/docs/latest/api/fs.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;node:fs&lt;/code&gt; module&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Web File System API&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; are now available in Workers.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;using-the-nodefs-module&quot;&gt;Using the &lt;code&gt;node:fs&lt;/code&gt; module&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#using-the-nodefs-module&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;node:fs&lt;/code&gt; module provides access to a virtual file system in Workers. You can use it to read and write files, create directories, and perform other file system operations.&lt;/p&gt;
&lt;p&gt;The virtual file system is ephemeral with each individual request havig its own isolated temporary file space. Files written to the file system will not persist across requests and will not be shared across requests or across different Workers.&lt;/p&gt;
&lt;p&gt;Workers running with the &lt;code&gt;nodejs_compat&lt;/code&gt; compatibility flag will have access to the &lt;code&gt;node:fs&lt;/code&gt; module by default when the compatibility date is set to &lt;code&gt;2025-09-01&lt;/code&gt; or later. Support for the API can also be enabled using the &lt;code&gt;enable_nodejs_fs_module&lt;/code&gt; compatibility flag together with the &lt;code&gt;nodejs_compat&lt;/code&gt; flag. The &lt;code&gt;node:fs&lt;/code&gt; module can be disabled using the &lt;code&gt;disable_nodejs_fs_module&lt;/code&gt; compatibility flag.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; fs &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;node:fs&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; config&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; JSON&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;parse&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(fs.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;readFileSync&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;/bundle/config.json&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;utf-8&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;`Config value: ${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;}`&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;There are a number of initial limitations to the &lt;code&gt;node:fs&lt;/code&gt; implementation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The glob APIs (e.g. &lt;code&gt;fs.globSync(...)&lt;/code&gt;) are not implemented.&lt;/li&gt;
&lt;li&gt;The file watching APIs (e.g. &lt;code&gt;fs.watch(...)&lt;/code&gt;) are not implemented.&lt;/li&gt;
&lt;li&gt;The file timestamps (modified time, access time, etc) are only partially supported. For now, these will always return the Unix epoch.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Refer to the &lt;a href=&quot;https://nodejs.org/docs/latest/api/fs.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Node.js documentation&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; for more information on the &lt;code&gt;node:fs&lt;/code&gt; module and its APIs.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;the-web-file-system-api&quot;&gt;The Web File System API&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#the-web-file-system-api&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The Web File System API provides access to the same virtual file system as the &lt;code&gt;node:fs&lt;/code&gt; module, but with a different API surface. The Web File System API is only available in Workers running with the &lt;code&gt;enable_web_file_system&lt;/code&gt; compatibility flag. The &lt;code&gt;nodejs_compat&lt;/code&gt; compatibility flag is not required to use the Web File System API.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; root&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; navigator.storage.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;getDirectory&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; tmp&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; root.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;getDirectoryHandle&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;/tmp&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; file&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; tmp.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;getFileHandle&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;data.txt&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, { create: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; writable&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; file.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;createWritable&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; writer&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; writable.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;getWriter&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; writer.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Hello, World!&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; writer.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;File written successfully!&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;As there are still some parts of the Web File System API that are not fully standardized, there may be some differences between the Workers implementation and the implementations in browsers.&lt;/p&gt;</description><pubDate>Fri, 15 Aug 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Workers Static Assets: Corrected handling of double slashes in redirect rule paths</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-15-static-assets-redirect-url/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-15-static-assets-redirect-url/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/static-assets/&quot;&gt;Static Assets&lt;/a&gt;: Fixed a bug in how &lt;a href=&quot;https://developers.cloudflare.com/workers/static-assets/redirects/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;redirect rules&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; defined in your Worker&apos;s &lt;code&gt;_redirects&lt;/code&gt; file are processed.&lt;/p&gt;
&lt;p&gt;If you&apos;re serving Static Assets with a &lt;code&gt;_redirects&lt;/code&gt; file containing a rule like &lt;code&gt;/ja/* /:splat&lt;/code&gt;, paths with double slashes were previously misinterpreted as external URLs. For example, visiting &lt;code&gt;/ja//example.com&lt;/code&gt; would incorrectly redirect to &lt;code&gt;https://example.com&lt;/code&gt; instead of &lt;code&gt;/example.com&lt;/code&gt; on your domain. This has been fixed and double slashes now correctly resolve as local paths. Note: &lt;a href=&quot;https://docs.infinitegaming.org/pages/&quot;&gt;Cloudflare Pages&lt;/a&gt; was not affected by this issue.&lt;/p&gt;</description><pubDate>Fri, 15 Aug 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Workers per-branch preview URLs now support long branch names</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-08-support-long-branch-names-preview-aliases/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-08-support-long-branch-names-preview-aliases/</guid><description>&lt;p&gt;We&apos;ve updated &lt;a href=&quot;https://docs.infinitegaming.org/workers/versions-and-deployments/preview-urls/&quot;&gt;preview URLs&lt;/a&gt; for Cloudflare Workers to support long branch names.&lt;/p&gt;
&lt;p&gt;Previously, branch and Worker names exceeding the 63-character DNS limit would cause alias generation to fail, leaving pull requests without aliased preview URLs. This particularly impacted teams relying on descriptive branch naming.&lt;/p&gt;
&lt;p&gt;Now, Cloudflare automatically truncates long branch names and appends a unique hash, ensuring every pull request gets a working preview link.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;how-it-works&quot;&gt;How it works&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#how-it-works&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;63 characters or less&lt;/strong&gt;: &lt;code&gt;&amp;lt;branch-name&amp;gt;-&amp;lt;worker-name&amp;gt;&lt;/code&gt; → Uses actual branch name as is&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;64 characters or more&lt;/strong&gt;: &lt;code&gt;&amp;lt;truncated-branch-name&amp;gt;--&amp;lt;hash&amp;gt;-&amp;lt;worker-name&amp;gt;&lt;/code&gt; → Uses truncated name with 4-character hash&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hash generation&lt;/strong&gt;: The hash is derived from the full branch name to ensure uniqueness&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stable URLs&lt;/strong&gt;: The same branch always generates the same hash across all commits&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;requirements-and-compatibility&quot;&gt;Requirements and compatibility&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#requirements-and-compatibility&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Wrangler 4.30.0 or later&lt;/strong&gt;: This feature requires updating to wrangler@4.30.0+&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No configuration needed&lt;/strong&gt;: Works automatically with existing preview URL setups&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Thu, 14 Aug 2025 01:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Access - Cloudflare Access Logging supports the Customer Metadata Boundary (CMB)</title><link>https://docs.infinitegaming.org/changelog/post/2025-07-01-Access-Supports-Customer-Metadata-Boundary/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-07-01-Access-Supports-Customer-Metadata-Boundary/</guid><description>&lt;p&gt;Cloudflare Access logs now support the &lt;a href=&quot;https://docs.infinitegaming.org/data-localization/metadata-boundary/&quot;&gt;Customer Metadata Boundary (CMB)&lt;/a&gt;. If you have configured the CMB for your account, all Access logging will respect that configuration.&lt;/p&gt;
&lt;aside role=&quot;note&quot; aria-label=&quot;Note&quot; class=&quot;aside-card flex items-start gap-3 rounded-lg px-4 py-3 my-4&quot; style=&quot;--_c: var(--nb-info); --_t: var(--nb-info-muted);&quot; data-astro-cid-znle5jil&gt;&lt;span class=&quot;flex h-[1.375em] shrink-0 items-center&quot; aria-hidden=&quot;true&quot; data-astro-cid-znle5jil&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[1em] w-[1em]&quot; data-astro-cid-znle5jil=&quot;true&quot; data-icon=&quot;ph:info&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24m0 192a88 88 0 1 1 88-88a88.1 88.1 0 0 1-88 88m16-40a8 8 0 0 1-8 8a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 8 8m-32-92a12 12 0 1 1 12 12a12 12 0 0 1-12-12&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div class=&quot;flex min-w-0 flex-1 flex-col gap-0.5&quot; data-astro-cid-znle5jil&gt;&lt;p class=&quot;m-0 text-base leading-snug font-semibold&quot; data-astro-cid-znle5jil&gt;Note&lt;/p&gt;&lt;div class=&quot;aside-card-body text-sm leading-normal&quot; data-astro-cid-znle5jil&gt;&lt;p&gt;For EU CMB customers, the logs will not be stored by Access and will appear as empty in the dashboard. EU CMB customers should utilize &lt;a href=&quot;https://docs.infinitegaming.org/logs/logpush/&quot;&gt;Logpush&lt;/a&gt; to retain their Access logging, if desired.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/aside&gt;</description><pubDate>Thu, 14 Aug 2025 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Workers - Python Workers handlers now live in an entrypoint class</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-14-new-python-handlers/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-14-new-python-handlers/</guid><description>
&lt;p&gt;We are changing how Python Workers are structured by default. Previously, handlers were defined at the top-level of a module as &lt;code&gt;on_fetch&lt;/code&gt;, &lt;code&gt;on_scheduled&lt;/code&gt;, etc. methods, but now they live in an entrypoint class.&lt;/p&gt;
&lt;p&gt;Here&apos;s an example of how to now define a Worker with a fetch handler:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;python&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot; data-nb-lang=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; workers &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; Response, WorkerEntrypoint&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;WorkerEntrypoint&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; def&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(self, request):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;        return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; Response(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Hello World!&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;To keep using the old-style handlers, you can specify the &lt;code&gt;disable_python_no_global_handlers&lt;/code&gt; compatibility flag in your wrangler file:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;compatibility_flags&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;		&quot;disable_python_no_global_handlers&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;compatibility_flags = [ &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;disable_python_no_global_handlers&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; ]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;Consult the &lt;a href=&quot;https://docs.infinitegaming.org/workers/languages/python/&quot;&gt;Python Workers documentation&lt;/a&gt; for more details.&lt;/p&gt;</description><pubDate>Thu, 14 Aug 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Terraform provider improvements — Python Workers support, smaller plan diffs, and API SDK fixes</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-14-workers-terraform-and-sdk-improvements/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-14-workers-terraform-and-sdk-improvements/</guid><description>&lt;p&gt;The recent &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/workers_script&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Terraform Provider&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and SDK releases (such as &lt;a href=&quot;https://github.com/cloudflare/cloudflare-typescript&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;cloudflare-typescript&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;) bring significant improvements to the Workers developer experience. These updates focus on reliability, performance, and adding &lt;a href=&quot;https://docs.infinitegaming.org/workers/languages/python/&quot;&gt;Python Workers&lt;/a&gt; support.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;terraform-improvements&quot;&gt;Terraform Improvements&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#terraform-improvements&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;fixed-unwarranted-plan-diffs&quot;&gt;Fixed Unwarranted Plan Diffs&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#fixed-unwarranted-plan-diffs&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Resolved several issues with the &lt;code&gt;cloudflare_workers_script&lt;/code&gt; resource that resulted in unwarranted plan diffs, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Using Durable Objects migrations&lt;/li&gt;
&lt;li&gt;Using some bindings such as &lt;code&gt;secret_text&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Using smart placement&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A resource should never show a plan diff if there isn&apos;t an actual change. This fix reduces unnecessary noise in your Terraform plan and is available in Cloudflare Terraform Provider 5.8.0.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;improved-file-management&quot;&gt;Improved File Management&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#improved-file-management&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;You can now specify &lt;code&gt;content_file&lt;/code&gt; and &lt;code&gt;content_sha256&lt;/code&gt; instead of &lt;code&gt;content&lt;/code&gt;. This prevents the Workers script content from being stored in the state file which greatly reduces plan diff size and noise. If your workflow synced plans remotely, this should now happen much faster since there is less data to sync. This is available in Cloudflare Terraform Provider 5.7.0.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;tf&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;tf&quot; data-nb-lang=&quot;tf&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;resource&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;cloudflare_workers_script&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;my_worker&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;      =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;123456789&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  script_name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;     =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;my_worker&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  main_module&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;     =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;worker.mjs&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  content_file&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;worker.mjs&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  content_sha256&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  =&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; filesha256&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;worker.mjs&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;assets-headers-and-redirects-support&quot;&gt;Assets Headers and Redirects Support&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#assets-headers-and-redirects-support&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Fixed the &lt;code&gt;cloudflare_workers_script&lt;/code&gt; resource to properly support headers and redirects for Assets:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;tf&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;tf&quot; data-nb-lang=&quot;tf&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;resource&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;cloudflare_workers_script&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;my_worker&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;      =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;123456789&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  script_name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;     =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;my_worker&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  main_module&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;     =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;worker.mjs&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  content_file&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;worker.mjs&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  content_sha256&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  =&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; filesha256&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;worker.mjs&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  assets&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    config &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;      headers &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; file&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;_headers&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;      redirects &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; file&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;_redirects&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;    # Completion jwt from:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;    # https://developers.cloudflare.com/api/resources/workers/subresources/assets/subresources/upload/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    jwt &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;jwt&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Available in Cloudflare Terraform Provider 5.8.0.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;python-workers-support&quot;&gt;Python Workers Support&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#python-workers-support&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Added support for uploading &lt;a href=&quot;https://docs.infinitegaming.org/workers/languages/python/&quot;&gt;Python Workers&lt;/a&gt; (beta) in Terraform. You can now deploy Python Workers with:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;tf&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;tf&quot; data-nb-lang=&quot;tf&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;resource&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;cloudflare_workers_script&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;my_worker&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;       =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;123456789&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  script_name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;      =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;my_worker&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  content_file&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;     =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;worker.py&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  content_sha256&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;   =&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; filesha256&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;worker.py&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  content_type&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;     =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;text/x-python&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Available in Cloudflare Terraform Provider 5.8.0.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;sdk-enhancements&quot;&gt;SDK Enhancements&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#sdk-enhancements&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;improved-file-upload-api&quot;&gt;Improved File Upload API&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#improved-file-upload-api&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Fixed an issue where Workers script versions in the SDK did not allow uploading files. This now works, and also has an improved files upload interface:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; scriptContent&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; `&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;  export default {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;    async fetch(request, env, ctx) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;      return new Response(&apos;Hello World!&apos;, { status: 200 });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;  };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;client.workers.scripts.versions.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;create&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;my-worker&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;123456789&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  metadata: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    main_module: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;my-worker.mjs&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  files: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; toFile&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;      Buffer.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(scriptContent),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;      &apos;my-worker.mjs&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;        type: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;application/javascript+module&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    )&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Will be available in cloudflare-typescript 4.6.0. A similar change will be available in cloudflare-python 4.4.0.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;fixed-updating-kv-values&quot;&gt;Fixed updating KV values&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#fixed-updating-kv-values&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Previously when creating a KV value like this:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; cf.kv.namespaces.values.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;update&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my-kv-namespace&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;key1&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;123456789&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  metadata: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my metadata&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  value: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;JSON&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;stringify&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    hello: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;world&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  })&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;...and recalling it in your Worker like this:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; value&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; c.env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;KV&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;lt;{&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;hello&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; string&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&amp;gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;key1&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;json&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You&apos;d get back this: &lt;code&gt;{metadata:&apos;my metadata&apos;, value:&quot;{&apos;hello&apos;:&apos;world&apos;}&quot;}&lt;/code&gt; instead of the correct value of &lt;code&gt;{hello: &apos;world&apos;}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This is fixed in cloudflare-typescript 4.5.0 and will be fixed in cloudflare-python 4.4.0.&lt;/p&gt;</description><pubDate>Thu, 14 Aug 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - MessageChannel and MessagePort</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-11-messagechannel/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-11-messagechannel/</guid><description>&lt;p&gt;A minimal implementation of the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;MessageChannel API&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; is now available in Workers. This means that you can use &lt;code&gt;MessageChannel&lt;/code&gt; to send messages between different parts of your Worker, but not across different Workers.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;MessageChannel&lt;/code&gt; and &lt;code&gt;MessagePort&lt;/code&gt; APIs will be available by default at the global scope
with any worker using a compatibility date of &lt;code&gt;2025-08-15&lt;/code&gt; or later. It is also available
using the &lt;code&gt;expose_global_message_channel&lt;/code&gt; compatibility flag, or can be explicitly disabled
using the &lt;code&gt;no_expose_global_message_channel&lt;/code&gt; compatibility flag.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;port1&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;port2&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; MessageChannel&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;port2.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;onmessage&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;event&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	console.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;Received message:&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, event.data);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;port2.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;postMessage&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;Hello from port2!&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Any value that can be used with the &lt;code&gt;structuredClone(...)&lt;/code&gt; API can be sent over the port.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;differences&quot;&gt;Differences&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#differences&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;There are a number of key limitations to the &lt;code&gt;MessageChannel&lt;/code&gt; API in Workers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transfer lists are currently not supported. This means that you will not be able to transfer
ownership of objects like &lt;code&gt;ArrayBuffer&lt;/code&gt; or &lt;code&gt;MessagePort&lt;/code&gt; between ports.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;MessagePort&lt;/code&gt; is not yet serializable. This means that you cannot send a &lt;code&gt;MessagePort&lt;/code&gt; object
through the &lt;code&gt;postMessage&lt;/code&gt; method or via JSRPC calls.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;&apos;messageerror&apos;&lt;/code&gt; event is only partially supported. If the &lt;code&gt;&apos;onmessage&apos;&lt;/code&gt; handler throws an
error, the &lt;code&gt;&apos;messageerror&apos;&lt;/code&gt; event will be triggered, however, it will not be triggered when there
are errors serializing or deserializing the message data. Instead, the error will be thrown when
the &lt;code&gt;postMessage&lt;/code&gt; method is called on the sending port.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;&apos;close&apos;&lt;/code&gt; event will be emitted on both ports when one of the ports is closed, however it
will not be emitted when the Worker is terminated or when one of the ports is garbage collected.&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Mon, 11 Aug 2025 01:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Wrangler and the Cloudflare Vite plugin support `.env` files in local development</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-08-dot-env-in-local-dev/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-08-dot-env-in-local-dev/</guid><description>&lt;p&gt;Now, you can use &lt;code&gt;.env&lt;/code&gt; files to provide secrets and override environment variables on the &lt;code&gt;env&lt;/code&gt; object during local development with Wrangler and the Cloudflare Vite plugin.&lt;/p&gt;
&lt;p&gt;Previously in local development, if you wanted to provide secrets or environment variables during local development, you had to use &lt;code&gt;.dev.vars&lt;/code&gt; files.
This is still supported, but you can now also use &lt;code&gt;.env&lt;/code&gt; files, which are more familiar to many developers.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;using-env-files-in-local-development&quot;&gt;Using &lt;code&gt;.env&lt;/code&gt; files in local development&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#using-env-files-in-local-development&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;You can create a &lt;code&gt;.env&lt;/code&gt; file in your project root to define environment variables that will be used when running &lt;code&gt;wrangler dev&lt;/code&gt; or &lt;code&gt;vite dev&lt;/code&gt;. The &lt;code&gt;.env&lt;/code&gt; file should be formatted like a &lt;code&gt;dotenv&lt;/code&gt; file, such as &lt;code&gt;KEY=&quot;VALUE&quot;&lt;/code&gt;:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;.env&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;bash&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;TITLE&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;My Worker&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;API_TOKEN&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;dev-token&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;When you run &lt;code&gt;wrangler dev&lt;/code&gt; or &lt;code&gt;vite dev&lt;/code&gt;, the environment variables defined in the &lt;code&gt;.env&lt;/code&gt; file will be available in your Worker code via the &lt;code&gt;env&lt;/code&gt; object:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;javascript&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot; data-nb-lang=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; title&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;TITLE&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;; &lt;/span&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// &quot;My Worker&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; apiToken&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;API_TOKEN&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;; &lt;/span&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// &quot;dev-token&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; response&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;			`https://api.example.com/data?token=${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;apiToken&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;}`&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;`Title: ${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;} - `&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; response.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;()));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;multiple-environments-with-env-files&quot;&gt;Multiple environments with &lt;code&gt;.env&lt;/code&gt; files&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#multiple-environments-with-env-files&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;If your Worker defines multiple &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/environments/&quot;&gt;environments&lt;/a&gt;, you can set different variables for each environment (ex: production or staging) by creating files named &lt;code&gt;.env.&amp;lt;environment-name&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;When you use &lt;code&gt;wrangler &amp;lt;command&amp;gt; --env &amp;lt;environment-name&amp;gt;&lt;/code&gt; or &lt;code&gt;CLOUDFLARE_ENV=&amp;lt;environment-name&amp;gt; vite dev&lt;/code&gt;, the corresponding environment-specific file will also be loaded and merged with the &lt;code&gt;.env&lt;/code&gt; file.&lt;/p&gt;
&lt;p&gt;For example, if you want to set different environment variables for the &lt;code&gt;staging&lt;/code&gt; environment, you can create a file named &lt;code&gt;.env.staging&lt;/code&gt;:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;.env.staging&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;bash&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;API_TOKEN&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;staging-token&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;When you run &lt;code&gt;wrangler dev --env staging&lt;/code&gt; or &lt;code&gt;CLOUDFLARE_ENV=staging vite dev&lt;/code&gt;, the environment variables from &lt;code&gt;.env.staging&lt;/code&gt; will be merged onto those from &lt;code&gt;.env&lt;/code&gt;.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;javascript&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;javascript&quot; data-nb-lang=&quot;javascript&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; title&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;TITLE&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;; &lt;/span&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// &quot;My Worker&quot; (from `.env`)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; apiToken&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;API_TOKEN&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;; &lt;/span&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// &quot;staging-token&quot; (from `.env.staging`, overriding the value from `.env`)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; response&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;			`https://api.example.com/data?token=${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;apiToken&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;}`&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;`Title: ${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;} - `&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; response.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;()));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;find-out-more&quot;&gt;Find out more&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#find-out-more&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;For more information on how to use &lt;code&gt;.env&lt;/code&gt; files with Wrangler and the Cloudflare Vite plugin, see the following documentation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/local-development/environment-variables&quot;&gt;Environment variables and secrets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.cloudflare.com/workers/wrangler&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Wrangler Documentation&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.cloudflare.com/workers/wrangler/vite&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Vite Plugin Documentation&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Fri, 08 Aug 2025 01:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Stream - Introducing observability and metrics for Stream Live Inputs</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-08-stream-live-observability/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-08-stream-live-observability/</guid><description>&lt;p&gt;New information about broadcast metrics and events is now available in
&lt;a href=&quot;https://docs.infinitegaming.org/stream/&quot;&gt;Cloudflare Stream&lt;/a&gt; in the Live Input details of the Dashboard.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1382,height=907,format=webp/_astro/2025-08-05-live-input-metrics.B31Z3RGB.png&quot; alt=&quot;Live Input details showing metrics&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1382&quot; height=&quot;907&quot;&gt;
&lt;p&gt;You can now easily understand broadcast-side health and performance with new
observability, which can help when troubleshooting common issues, particularly
for new customers who are just getting started, and platform customers who may
have limited visibility into how their end-users configure their encoders.&lt;/p&gt;
&lt;p&gt;To get started, start a live stream (&lt;a href=&quot;https://docs.infinitegaming.org/stream/examples/obs-from-scratch/&quot;&gt;just getting started?&lt;/a&gt;), then visit the Live Input details page in Dash.&lt;/p&gt;
&lt;p&gt;See our new live &lt;a href=&quot;https://docs.infinitegaming.org/stream/stream-live/troubleshooting/&quot;&gt;Troubleshooting&lt;/a&gt; guide
to learn what these metrics mean and how to use them to address common broadcast
issues.&lt;/p&gt;</description><pubDate>Fri, 08 Aug 2025 00:00:00 GMT</pubDate><product>Stream</product><category>Stream</category></item><item><title>Workers - Directly import `waitUntil` in Workers for easily spawning background tasks</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-08-add-waituntil-cloudflare-workers/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-08-add-waituntil-cloudflare-workers/</guid><description>&lt;p&gt;You can now import &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/context/#waituntil&quot;&gt;&lt;code&gt;waitUntil&lt;/code&gt;&lt;/a&gt; from &lt;code&gt;cloudflare:workers&lt;/code&gt; to extend your Worker&apos;s execution beyond the request lifecycle from anywhere in your code.&lt;/p&gt;
&lt;p&gt;Previously, &lt;code&gt;waitUntil&lt;/code&gt; could only be accessed through the &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/context/&quot;&gt;execution context&lt;/a&gt; (&lt;code&gt;ctx&lt;/code&gt;) parameter passed to your Worker&apos;s handler functions. This meant that if you needed to schedule background tasks from deeply nested functions or utility modules, you had to pass the &lt;code&gt;ctx&lt;/code&gt; object through multiple function calls to access &lt;code&gt;waitUntil&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Now, you can import &lt;code&gt;waitUntil&lt;/code&gt; directly and use it anywhere in your Worker without needing to pass &lt;code&gt;ctx&lt;/code&gt; as a parameter:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { waitUntil } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;cloudflare:workers&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; function&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; trackAnalytics&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;eventData&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; analyticsPromise&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;https://analytics.example.com/track&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		method: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;POST&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		body: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;JSON&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;stringify&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(eventData),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;	// Extend execution to ensure analytics tracking completes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;	waitUntil&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(analyticsPromise);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;This is particularly useful when you want to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Schedule background tasks from utility functions or modules&lt;/li&gt;
&lt;li&gt;Extend execution for analytics, logging, or cleanup operations&lt;/li&gt;
&lt;li&gt;Avoid passing the execution context through multiple layers of function calls&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { waitUntil } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;cloudflare:workers&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// Background task that should complete even after response is sent&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;		cleanupTempData&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;KV_NAMESPACE&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Hello, World!&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; cleanupTempData&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;kvNamespace&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;	// This function can now use waitUntil without needing ctx&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; deletePromise&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; kvNamespace.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;delete&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;temp-key&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;	waitUntil&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(deletePromise);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;aside role=&quot;note&quot; aria-label=&quot;Note&quot; class=&quot;aside-card flex items-start gap-3 rounded-lg px-4 py-3 my-4&quot; style=&quot;--_c: var(--nb-info); --_t: var(--nb-info-muted);&quot; data-astro-cid-znle5jil&gt;&lt;span class=&quot;flex h-[1.375em] shrink-0 items-center&quot; aria-hidden=&quot;true&quot; data-astro-cid-znle5jil&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[1em] w-[1em]&quot; data-astro-cid-znle5jil=&quot;true&quot; data-icon=&quot;ph:info&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24m0 192a88 88 0 1 1 88-88a88.1 88.1 0 0 1-88 88m16-40a8 8 0 0 1-8 8a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 8 8m-32-92a12 12 0 1 1 12 12a12 12 0 0 1-12-12&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div class=&quot;flex min-w-0 flex-1 flex-col gap-0.5&quot; data-astro-cid-znle5jil&gt;&lt;p class=&quot;m-0 text-base leading-snug font-semibold&quot; data-astro-cid-znle5jil&gt;Note&lt;/p&gt;&lt;div class=&quot;aside-card-body text-sm leading-normal&quot; data-astro-cid-znle5jil&gt;&lt;p&gt;The imported &lt;code&gt;waitUntil&lt;/code&gt; function works the same way as &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/context/#waituntil&quot;&gt;&lt;code&gt;ctx.waitUntil()&lt;/code&gt;&lt;/a&gt;. It extends your Worker&apos;s execution to wait for the provided promise to settle, but does not block the response from being sent to the client.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;For more information, see the &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/context/#waituntil&quot;&gt;&lt;code&gt;waitUntil&lt;/code&gt; documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 08 Aug 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Email security - Expanded Email Link Isolation</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-07-expanded-link-isolation/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-07-expanded-link-isolation/</guid><description>&lt;p&gt;When you deploy MX or Inline, not only can you apply email link isolation to suspicious links in all emails (including benign), you can now also apply email link isolation to all links of a specified disposition. This provides more flexibility in controlling user actions within emails.&lt;/p&gt;
&lt;p&gt;For example, you may want to deliver suspicious messages but isolate the links found within them so that users who choose to interact with the links will not accidentally expose your organization to threats. This means your end users are more secure than ever before.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1600,height=497,format=webp/_astro/expanded-link-actions.DziIg6E8.jpg&quot; alt=&quot;Expanded Email Link Isolation Configuration&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1600&quot; height=&quot;497&quot;&gt;
&lt;p&gt;To isolate all links within a message based on the disposition, select &lt;strong&gt;Settings&lt;/strong&gt; &amp;gt; &lt;strong&gt;Link Actions&lt;/strong&gt; &amp;gt; &lt;strong&gt;View&lt;/strong&gt; and select &lt;strong&gt;Configure&lt;/strong&gt;. As with other other links you isolate, an interstitial will be provided to warn users that this site has been isolated and the link will be recrawled live to evaluate if there are any changes in our threat intel. Learn more about this feature on &lt;a href=&quot;https://developers.cloudflare.com/cloudflare-one/email-security/settings/detection-settings/configure-link-actions/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Configure link actions&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This feature is available across these Email security packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise + PhishGuard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Thu, 07 Aug 2025 23:22:49 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Workers - Requests made from Cloudflare Workers can now force a revalidation of their cache with the origin</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-07-cache-no-cache/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-07-cache-no-cache/</guid><description>
&lt;p&gt;By setting the value of the &lt;code&gt;cache&lt;/code&gt; property to &lt;code&gt;no-cache&lt;/code&gt;, you can force &lt;a href=&quot;https://docs.infinitegaming.org/workers/reference/how-the-cache-works/&quot;&gt;Cloudflare&apos;s
cache&lt;/a&gt; to revalidate its contents with the origin when
making subrequests from &lt;a href=&quot;https://docs.infinitegaming.org/workers&quot;&gt;Cloudflare Workers&lt;/a&gt;.&lt;/p&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;js&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;index.js&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; request&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;https://cloudflare.com&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			cache: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;no-cache&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; response&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(request);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; response;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;index.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Promise&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; request&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;https://cloudflare.com&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, { cache: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;no-cache&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; response&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(request);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; response;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;} &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;satisfies&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; ExportedHandler&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Environment&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;&lt;/div&gt;
&lt;p&gt;When &lt;code&gt;no-cache&lt;/code&gt; is set, the Worker request will first look for a match in Cloudflare&apos;s cache, then:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If there is a match, a conditional request is sent to the origin, regardless of whether or not the match is fresh or stale. If the resource has not changed, the
cached version is returned. If the resource has changed, it will be downloaded from the origin, updated in the cache, and returned.&lt;/li&gt;
&lt;li&gt;If there is no match, Workers will make a standard request to the origin and cache the response.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This increases compatibility with NPM packages and JavaScript frameworks that rely on setting the
&lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/request/#options&quot;&gt;&lt;code&gt;cache&lt;/code&gt;&lt;/a&gt; property, which is a cross-platform standard part
of the &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/request/&quot;&gt;&lt;code&gt;Request&lt;/code&gt;&lt;/a&gt; interface. Previously, if you set the &lt;code&gt;cache&lt;/code&gt;
property on &lt;code&gt;Request&lt;/code&gt; to &lt;code&gt;&apos;no-cache&apos;&lt;/code&gt;, the Workers runtime threw an exception.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Learn &lt;a href=&quot;https://docs.infinitegaming.org/workers/reference/how-the-cache-works/&quot;&gt;how the Cache works with Cloudflare Workers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Enable &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/nodejs/&quot;&gt;Node.js compatibility&lt;/a&gt; for your Cloudflare Worker&lt;/li&gt;
&lt;li&gt;Explore &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/&quot;&gt;Runtime APIs&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/bindings/&quot;&gt;Bindings&lt;/a&gt; available in Cloudflare Workers&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Thu, 07 Aug 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Load Balancing - Improvements to Monitoring Using Zone Settings</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-06-zone-monitoring-improvements/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-06-zone-monitoring-improvements/</guid><description>&lt;p&gt;Cloudflare Load Balancing Monitors support loading and applying settings for a specific zone to monitoring requests to origin endpoints. This feature has been migrated to new infrastructure to improve reliability, performance, and accuracy.&lt;/p&gt;
&lt;p&gt;All zone monitors have been tested against the new infrastructure. There should be no change to health monitoring results of currently healthy and active pools. Newly created or re-enabled pools may need validation of their monitor zone settings before being introduced to service, especially regarding correct application of mTLS.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;what-you-can-expect&quot;&gt;What you can expect:&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#what-you-can-expect&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;More reliable application of zone settings to monitoring requests, including
&lt;ul&gt;
&lt;li&gt;Authenticated Origin Pulls&lt;/li&gt;
&lt;li&gt;Aegis Egress IP Pools&lt;/li&gt;
&lt;li&gt;Argo Smart Routing&lt;/li&gt;
&lt;li&gt;HTTP/2 to Origin&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Improved support and bug fixes for retries, redirects, and proxied origin resolution&lt;/li&gt;
&lt;li&gt;Improved performance and reliability of monitoring requests within the Cloudflare network&lt;/li&gt;
&lt;li&gt;Unrelated CDN or WAF configuration changes should have no risk of impact to pool health&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Wed, 06 Aug 2025 00:00:00 GMT</pubDate><product>Load Balancing</product><category>Load Balancing</category></item><item><title>Workers - Increased disk space for Workers Builds</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-04-builds-increased-disk-size/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-04-builds-increased-disk-size/</guid><description>&lt;p&gt;As part of the ongoing open beta for &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/&quot;&gt;Workers Builds&lt;/a&gt;, we’ve increased the available disk space for builds from &lt;strong&gt;8 GB&lt;/strong&gt; to &lt;strong&gt;20 GB&lt;/strong&gt; for both Free and Paid plans.&lt;/p&gt;
&lt;p&gt;This provides more space for larger projects, dependencies, and build artifacts while improving overall build reliability.&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Free Plan&lt;/th&gt;
&lt;th&gt;Paid Plans&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Disk Space&lt;/td&gt;
&lt;td&gt;20 GB&lt;/td&gt;
&lt;td&gt;20 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;All other &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/limits-and-pricing/&quot;&gt;build limits&lt;/a&gt; — including CPU, memory, build minutes, and timeout remain unchanged.&lt;/p&gt;</description><pubDate>Mon, 04 Aug 2025 01:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Develop locally with Containers and the Cloudflare Vite plugin</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-01-containers-in-vite-dev/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-01-containers-in-vite-dev/</guid><description>
&lt;p&gt;You can now configure and run &lt;a href=&quot;https://docs.infinitegaming.org/containers&quot;&gt;Containers&lt;/a&gt; alongside your &lt;a href=&quot;https://docs.infinitegaming.org/workers&quot;&gt;Worker&lt;/a&gt; during local development when using the &lt;a href=&quot;https://docs.infinitegaming.org/workers/vite-plugin/&quot;&gt;Cloudflare Vite plugin&lt;/a&gt;. Previously, you could only develop locally when using &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/&quot;&gt;Wrangler&lt;/a&gt; as your local development server.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;configuration&quot;&gt;Configuration&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#configuration&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;You can simply configure your Worker and your Container(s) in your Wrangler configuration file:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;container-starter&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;main&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;src/index.js&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;containers&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;      &quot;class_name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MyContainer&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;      &quot;image&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./Dockerfile&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;      &quot;instances&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;5&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;durable_objects&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;    &quot;bindings&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;        &quot;class_name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MyContainer&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;        &quot;name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MY_CONTAINER&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;migrations&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;      &quot;new_sqlite_classes&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;        &quot;MyContainer&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;      ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;      &quot;tag&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;v1&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;name = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;container-starter&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;main = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;src/index.js&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;containers&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;class_name = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MyContainer&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;image = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./Dockerfile&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;instances = &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;5&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;durable_objects&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;bindings&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;class_name = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MyContainer&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;name = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MY_CONTAINER&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;migrations&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;new_sqlite_classes = [ &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MyContainer&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;tag = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;v1&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;worker-code&quot;&gt;Worker Code&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#worker-code&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Once your Worker and Containers are configured, you can access the Container instances from your Worker code:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { Container, getContainer } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;@cloudflare/containers&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; class&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; MyContainer&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; extends&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Container&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;  defaultPort&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; 4000&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;; &lt;/span&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// Port the container is listening on&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;  sleepAfter&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;10m&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;; &lt;/span&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// Stop the instance if requests not sent for 10 minutes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;async &lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(request, env) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  const&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;session-id&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;sessionId&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; request.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;  // Get the container instance for the given session ID&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; containerInstance&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; getContainer&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;MY_CONTAINER&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, sessionId)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;  // Pass the request to the container instance on its default port&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; containerInstance.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(request);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;local-development&quot;&gt;Local development&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#local-development&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;To develop your Worker locally, start a local dev server by running&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;vite&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; dev&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;in your terminal.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;resources&quot;&gt;Resources&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#resources&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Learn more about &lt;a href=&quot;https://developers.cloudflare.com/containers/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Containers&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; or the &lt;a href=&quot;https://developers.cloudflare.com/workers/vite-plugin/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Vite plugin&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; in our developer docs.&lt;/p&gt;</description><pubDate>Fri, 01 Aug 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare WAN - Terraform V5 support for tunnels and routes</title><link>https://docs.infinitegaming.org/changelog/post/2025-07-31-terraform-v5-tunnels-routes/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-07-31-terraform-v5-tunnels-routes/</guid><description>&lt;p&gt;The Cloudflare Terraform provider resources for Cloudflare WAN tunnels and routes now support Terraform provider version 5. Customers using infrastructure-as-code workflows can manage their tunnel and route configuration with the latest provider version.&lt;/p&gt;
&lt;p&gt;For more information, refer to the &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Terraform provider documentation&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 31 Jul 2025 00:00:00 GMT</pubDate><product>Cloudflare WAN</product><category>Cloudflare WAN</category></item><item><title>Magic Transit, Cloudflare WAN - Magic Transit and Magic WAN health check data is fully compatible with the CMB EU setting.</title><link>https://docs.infinitegaming.org/changelog/post/2025-07-30-mt-mwan-health-check-cmb-eu/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-07-30-mt-mwan-health-check-cmb-eu/</guid><description>&lt;p&gt;Today, we are excited to announce that all Magic Transit and Magic WAN customers with CMB EU (&lt;a href=&quot;https://docs.infinitegaming.org/data-localization/metadata-boundary/&quot;&gt;Customer Metadata Boundary - Europe&lt;/a&gt;) enabled in their account will be able to access GRE, IPsec, and CNI health check and traffic volume data in the Cloudflare dashboard and via API.&lt;/p&gt;
&lt;p&gt;This ensures that all Magic Transit and Magic WAN customers with CMB EU enabled will be able to access all Magic Transit and Magic WAN features.&lt;/p&gt;
&lt;p&gt;Specifically, these two GraphQL endpoints are now compatible with CMB EU:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;magicTransitTunnelHealthChecksAdaptiveGroups&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;magicTransitTunnelTrafficAdaptiveGroups&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Wed, 30 Jul 2025 00:00:00 GMT</pubDate><product>Magic Transit</product><category>Magic Transit</category><category>Cloudflare WAN</category></item><item><title>Workers, Secrets Store - Deploy to Cloudflare buttons now support Worker environment variables, secrets, and Secrets Store secrets</title><link>https://docs.infinitegaming.org/changelog/post/2025-07-01-workers-deploy-button-supports-environment-variables-and-secrets/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-07-01-workers-deploy-button-supports-environment-variables-and-secrets/</guid><description>
&lt;p&gt;Any template which uses &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/environment-variables/&quot;&gt;Worker environment variables&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/secrets/&quot;&gt;secrets&lt;/a&gt;, or &lt;a href=&quot;https://docs.infinitegaming.org/secrets-store/&quot;&gt;Secrets Store secrets&lt;/a&gt; can now be deployed using a &lt;a href=&quot;https://docs.infinitegaming.org/workers/platform/deploy-buttons/&quot;&gt;Deploy to Cloudflare button&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Define environment variables and secrets store bindings in your Wrangler configuration file as normal:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my-worker&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;main&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./src/index.ts&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;	// Set this to today&apos;s date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;compatibility_date&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;2026-10-11&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;vars&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;    &quot;API_HOST&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;https://example.com&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;secrets_store_secrets&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;binding&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;API_KEY&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;store_id&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;demo&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;secret_name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;api-key&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;name = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my-worker&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;main = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./src/index.ts&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Set this to today&apos;s date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;compatibility_date = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;2026-10-11&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;vars&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;API_HOST = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;https://example.com&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;secrets_store_secrets&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;binding = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;API_KEY&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;store_id = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;demo&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;secret_name = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;api-key&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;Add secrets to a &lt;code&gt;.dev.vars.example&lt;/code&gt; or &lt;code&gt;.env.example&lt;/code&gt; file:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ini&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;.dev.vars.example&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ini&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ini&quot; data-nb-lang=&quot;ini&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;COOKIE_SIGNING_KEY&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;=my-secret &lt;/span&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# comment&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;And optionally, you can add a description for these bindings in your template&apos;s &lt;code&gt;package.json&lt;/code&gt; to help users understand how to configure each value:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;json&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;package.json&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;json&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot; data-nb-lang=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my-worker&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;private&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;cloudflare&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;bindings&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;API_KEY&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;				&quot;description&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Select your company&apos;s API key for connecting to the example service.&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;COOKIE_SIGNING_KEY&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;				&quot;description&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Generate a random string using `openssl rand -hex 32`.&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;These secrets and environment variables will be presented to users in the dashboard as they deploy this template, allowing them to configure each value. Additional information about creating templates and Deploy to Cloudflare buttons can be found in &lt;a href=&quot;https://docs.infinitegaming.org/workers/platform/deploy-buttons/&quot;&gt;our documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 29 Jul 2025 01:00:00 GMT</pubDate><product>Workers</product><category>Workers</category><category>Secrets Store</category></item><item><title>Gateway - Scam domain category introduced under Security Threats</title><link>https://docs.infinitegaming.org/changelog/post/2025-07-28-Spam-domain-category-introduced/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-07-28-Spam-domain-category-introduced/</guid><description>&lt;p&gt;We have introduced a new Security Threat category called &lt;strong&gt;Scam&lt;/strong&gt;. Relevant domains are marked with the Scam category. Scam typically refers to fraudulent websites and schemes designed to trick victims into giving away money or personal information.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;New category added&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parent ID&lt;/th&gt;
&lt;th&gt;Parent Name&lt;/th&gt;
&lt;th&gt;Category ID&lt;/th&gt;
&lt;th&gt;Category Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Security Threats&lt;/td&gt;
&lt;td&gt;191&lt;/td&gt;
&lt;td&gt;Scam&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/domain-categories/&quot;&gt;Gateway domain categories&lt;/a&gt; to learn more.&lt;/p&gt;</description><pubDate>Mon, 28 Jul 2025 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Gateway - Gateway HTTP Filtering on all ports available in open BETA</title><link>https://docs.infinitegaming.org/changelog/post/2025-07-24-HTTP-Inspection-on-all-ports/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-07-24-HTTP-Inspection-on-all-ports/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/&quot;&gt;Gateway&lt;/a&gt; can now apply &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/&quot;&gt;HTTP filtering&lt;/a&gt; to all proxied HTTP requests, not just traffic on standard HTTP (&lt;code&gt;80&lt;/code&gt;) and HTTPS (&lt;code&gt;443&lt;/code&gt;) ports. This means all requests can now be filtered by &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/antivirus-scanning/&quot;&gt;A/V scanning&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/file-sandboxing/&quot;&gt;file sandboxing&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/#data-in-transit&quot;&gt;Data Loss Prevention (DLP)&lt;/a&gt;, and more.&lt;/p&gt;
&lt;p&gt;You can turn this &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/network-policies/protocol-detection/#inspect-on-all-ports&quot;&gt;setting&lt;/a&gt; on by going to &lt;strong&gt;Settings&lt;/strong&gt; &amp;gt; &lt;strong&gt;Network&lt;/strong&gt; &amp;gt; &lt;strong&gt;Firewall&lt;/strong&gt; and choosing  &lt;em&gt;Inspect on all ports&lt;/em&gt;.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1096,height=535,format=webp/_astro/Gateway-Inspection-all-ports.CCmwX6D0.png&quot; alt=&quot;HTTP Inspection on all ports setting&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1096&quot; height=&quot;535&quot;&gt;
&lt;p&gt;To learn more, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/network-policies/protocol-detection/#inspect-on-all-ports&quot;&gt;Inspect on all ports (Beta)&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 24 Jul 2025 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Workers - Test out code changes before shipping with per-branch preview deployments for Cloudflare Workers</title><link>https://docs.infinitegaming.org/changelog/post/2025-07-23-workers-preview-urls/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-07-23-workers-preview-urls/</guid><description>&lt;p&gt;Now, when you connect your Cloudflare Worker to a git repository on GitHub or GitLab, each branch of your repository has its own stable preview URL, that you can use to preview code changes before merging the pull request and deploying to production.&lt;/p&gt;
&lt;p&gt;This works the same way that Cloudflare Pages does — every time you create a pull request, you&apos;ll automatically get a shareable preview link where you can see your changes running, without affecting production. The link stays the same, even as you add commits to the same branch.
These preview URLs are named after your branch and are posted as a comment to each pull request. The URL stays the same with every commit and always points to the latest version of that branch.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2900,height=1064,format=webp/_astro/preview-urls-comment.0wQffFIq.png&quot; alt=&quot;PR comment preview&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2900&quot; height=&quot;1064&quot;&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;preview-url-types&quot;&gt;Preview URL types&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#preview-url-types&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Each comment includes &lt;strong&gt;two preview URLs&lt;/strong&gt; as shown above:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Commit Preview URL&lt;/strong&gt;: Unique to the specific version/commit (e.g., &lt;code&gt;&amp;lt;version-prefix&amp;gt;-&amp;lt;worker-name&amp;gt;.&amp;lt;subdomain&amp;gt;.workers.dev&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Branch Preview URL&lt;/strong&gt;: A stable alias based on the branch name (e.g., &lt;code&gt;&amp;lt;branch-name&amp;gt;-&amp;lt;worker-name&amp;gt;.&amp;lt;subdomain&amp;gt;.workers.dev&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;how-it-works&quot;&gt;How it works&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#how-it-works&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;When you create a pull request:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A preview alias is automatically created&lt;/strong&gt; based on the Git branch name (e.g., &lt;code&gt;&amp;lt;branch-name&amp;gt;&lt;/code&gt; becomes &lt;code&gt;&amp;lt;branch-name&amp;gt;-&amp;lt;worker-name&amp;gt;.&amp;lt;subdomain&amp;gt;.workers.dev&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No configuration is needed&lt;/strong&gt;, the alias is generated for you&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The link stays the same&lt;/strong&gt; even as you add commits to the same branch&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Preview URLs are posted directly to your pull request as comments&lt;/strong&gt; (just like they are in Cloudflare Pages)&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;custom-alias-name&quot;&gt;Custom alias name&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#custom-alias-name&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;You can also assign a custom preview alias using the &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/&quot;&gt;Wrangler CLI&lt;/a&gt;, by passing the &lt;code&gt;--preview-alias&lt;/code&gt; flag when &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/general/#versions-upload&quot;&gt;uploading a version&lt;/a&gt; of your Worker:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; versions&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; upload&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --preview-alias&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; staging&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;limitations-while-in-beta&quot;&gt;Limitations while in beta&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#limitations-while-in-beta&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Only available on the &lt;strong&gt;workers.dev&lt;/strong&gt; subdomain (custom domains not yet supported)&lt;/li&gt;
&lt;li&gt;Requires &lt;strong&gt;Wrangler v4.21.0+&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Preview URLs are not generated for Workers that use &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/&quot;&gt;Durable Objects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Not yet supported for &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-for-platforms/workers-for-platforms/&quot;&gt;Workers for Platforms&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Tue, 22 Jul 2025 01:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Gateway - Google Bard Application replaced by Gemini</title><link>https://docs.infinitegaming.org/changelog/post/2025-08-15-gemini-application-replaces-bard/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-08-15-gemini-application-replaces-bard/</guid><description>&lt;p&gt;The &lt;strong&gt;Google Bard&lt;/strong&gt; application (ID: 1198) has been deprecated and fully removed from the system. It has been replaced by the &lt;strong&gt;Gemini&lt;/strong&gt; application (ID: 1340).
Any existing Gateway policies that reference the old Google Bard application will no longer function.
To ensure your policies continue to work as intended, you should update them to use the new Gemini application.
We recommend replacing all instances of the deprecated Bard application with the new Gemini application in your Gateway policies.
For more information about application policies, please see the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/application-app-types/&quot;&gt;Cloudflare Gateway documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 22 Jul 2025 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Stream - Audio mode for Media Transformations</title><link>https://docs.infinitegaming.org/changelog/post/2025-07-22-media-transformations-audio-mode/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-07-22-media-transformations-audio-mode/</guid><description>&lt;p&gt;We now support &lt;code&gt;audio&lt;/code&gt; mode! Use this feature to extract audio from a source video, outputting
an M4A file to use in downstream workflows like &lt;a href=&quot;https://docs.infinitegaming.org/workers-ai/&quot;&gt;AI inference&lt;/a&gt;, content moderation, or transcription.&lt;/p&gt;
&lt;p&gt;For example,&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;text&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;Example URL&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;text&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot; data-nb-lang=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-wvjl67&quot;&gt;https://example.com/cdn-cgi/media/&amp;lt;OPTIONS&amp;gt;/&amp;lt;SOURCE-VIDEO&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-wvjl67&quot;&gt;https://example.com/cdn-cgi/media/mode=audio,time=3s,duration=60s/&amp;lt;input video with diction&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;For more information, learn about &lt;a href=&quot;https://docs.infinitegaming.org/stream/transform-videos/&quot;&gt;Transforming Videos&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 22 Jul 2025 00:00:00 GMT</pubDate><product>Stream</product><category>Stream</category></item><item><title>Cloudflare One Appliance, Cloudflare One, Cloudflare WAN - Virtual Cloudflare One Appliance with KVM support (open beta)</title><link>https://docs.infinitegaming.org/changelog/post/2025-07-21-virtual-appliance-kvm-proxmox/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-07-21-virtual-appliance-kvm-proxmox/</guid><description>&lt;p&gt;The KVM-based virtual Cloudflare One Appliance is now in open beta with official support for Proxmox VE.&lt;/p&gt;
&lt;p&gt;Customers can deploy the virtual appliance on KVM hypervisors to connect branch or data center networks to Cloudflare WAN without dedicated hardware.&lt;/p&gt;
&lt;p&gt;For setup instructions, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/configure-virtual-appliance/&quot;&gt;Configure a virtual Cloudflare One Appliance&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 21 Jul 2025 00:00:00 GMT</pubDate><product>Cloudflare One Appliance</product><category>Cloudflare One Appliance</category><category>Cloudflare One</category><category>Cloudflare WAN</category></item><item><title>Workers - The Cloudflare Vite plugin now supports Vite 7</title><link>https://docs.infinitegaming.org/changelog/post/2025-07-17-vite-plugin-vite-7-support/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-07-17-vite-plugin-vite-7-support/</guid><description>&lt;p&gt;&lt;a href=&quot;https://vite.dev/blog/announcing-vite7&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Vite 7&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; is now supported in the Cloudflare Vite plugin.
See the &lt;a href=&quot;https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md#700-2025-06-24&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Vite changelog&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; for a list of changes.&lt;/p&gt;
&lt;p&gt;Note that the minimum Node.js versions supported by Vite 7 are 20.19 and 22.12.
We continue to support Vite 6 so you do not need to immediately upgrade.&lt;/p&gt;</description><pubDate>Thu, 17 Jul 2025 01:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Data Loss Prevention - New detection entry type: Document Matching for DLP</title><link>https://docs.infinitegaming.org/changelog/post/2025-07-17-document-matching/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-07-17-document-matching/</guid><description>&lt;p&gt;You can now create &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/detection-entries/configure-detection-entries/#document-entries&quot;&gt;document-based&lt;/a&gt; detection entries in DLP by uploading example documents. Cloudflare will encrypt your documents and create a unique fingerprint of the file. This fingerprint is then used to identify similar documents or snippets within your organization&apos;s traffic and stored files.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1356,height=839,format=webp/_astro/document-match.CcN8pGgR.png&quot; alt=&quot;DLP&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1356&quot; height=&quot;839&quot;&gt;
&lt;p&gt;&lt;strong&gt;Key features and benefits:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Upload documents, forms, or templates:&lt;/strong&gt; Easily upload .docx and .txt files (up to 10 MB) that contain sensitive information you want to protect.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Granular control with similarity percentage:&lt;/strong&gt; Define a minimum similarity percentage (0-100%) that a document must meet to trigger a detection, reducing false positives.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Comprehensive coverage:&lt;/strong&gt; Apply these document-based detection entries in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Gateway policies:&lt;/strong&gt; To inspect network traffic for sensitive documents as they are uploaded or shared.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;CASB (Cloud Access Security Broker):&lt;/strong&gt; To scan files stored in cloud applications for sensitive documents at rest.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Identify sensitive data:&lt;/strong&gt; This new detection entry type is ideal for identifying sensitive data within completed forms, templates, or even small snippets of a larger document, helping you prevent data exfiltration and ensure compliance.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once uploaded and processed, you can add this new document entry into a DLP profile and policies to enhance your data protection strategy.&lt;/p&gt;</description><pubDate>Thu, 17 Jul 2025 00:00:00 GMT</pubDate><product>Data Loss Prevention</product><category>Data Loss Prevention</category></item><item><title>Cloudflare Tunnel, Cloudflare Tunnel for SASE - Faster, more reliable UDP traffic for Cloudflare Tunnel</title><link>https://docs.infinitegaming.org/changelog/post/2025-07-15-udp-improvements/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-07-15-udp-improvements/</guid><description>
&lt;p&gt;Your real-time applications running over &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/&quot;&gt;Cloudflare Tunnel&lt;/a&gt; are now faster and more reliable. We&apos;ve completely re-architected the way &lt;code&gt;cloudflared&lt;/code&gt; proxies UDP traffic in order to isolate it from other traffic, ensuring latency-sensitive applications like private DNS are no longer slowed down by heavy TCP traffic (like file transfers) on the same Tunnel.&lt;/p&gt;
&lt;p&gt;This is a foundational improvement to Cloudflare Tunnel, delivered automatically to all customers. There are no settings to configure — your UDP traffic is already flowing faster and more reliably.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What’s new:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Faster UDP performance&lt;/strong&gt;: We&apos;ve significantly reduced the latency for establishing new UDP sessions, making applications like private DNS much more responsive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Greater reliability for mixed traffic&lt;/strong&gt;: UDP packets are no longer affected by heavy TCP traffic, preventing timeouts and connection drops for your real-time services.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Learn more about running &lt;a href=&quot;https://docs.infinitegaming.org/reference-architecture/architectures/sase/#connecting-applications&quot;&gt;TCP or UDP applications&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/&quot;&gt;private networks&lt;/a&gt; through &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/&quot;&gt;Cloudflare Tunnel&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 15 Jul 2025 00:00:00 GMT</pubDate><product>Cloudflare Tunnel</product><category>Cloudflare Tunnel</category><category>Cloudflare Tunnel for SASE</category></item><item><title>Cloudflare One - New onboarding guides for Zero Trust</title><link>https://docs.infinitegaming.org/changelog/post/2025-07-09-onboarding-resources/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-07-09-onboarding-resources/</guid><description>&lt;p&gt;Use our brand new onboarding experience for Cloudflare Zero Trust. New and returning users can now engage with a &lt;strong&gt;Get Started&lt;/strong&gt; tab with walkthroughs for setting up common use cases end-to-end.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2048,height=966,format=webp/_astro/zt-onboarding-guides._18EfPbe.png&quot; alt=&quot;Zero Trust onboarding guides&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2048&quot; height=&quot;966&quot;&gt;
&lt;p&gt;There are eight brand new onboarding guides in total:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Securely access a private network (sets up device client and Tunnel)&lt;/li&gt;
&lt;li&gt;Device-to-device / mesh networking (sets up and connects multiple device clients)&lt;/li&gt;
&lt;li&gt;Network to network connectivity (sets up and connects multiple WARP Connectors, makes reference to Magic WAN availability for Enterprise)&lt;/li&gt;
&lt;li&gt;Secure web traffic (sets up device client, Gateway, pre-reqs, and initial policies)&lt;/li&gt;
&lt;li&gt;Secure DNS for networks (sets up a new DNS location and Gateway policies)&lt;/li&gt;
&lt;li&gt;Clientless web access (sets up Access to a web app, Tunnel, and public hostname)&lt;/li&gt;
&lt;li&gt;Clientless SSH access (all the same + the web SSH experience)&lt;/li&gt;
&lt;li&gt;Clientless RDP access (all the same + RDP-in-browser)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each flow walks the user through the steps to configure the essential elements, and provides a “more details” panel with additional contextual information about what the user will accomplish at the end, along with why the steps they take are important.&lt;/p&gt;
&lt;p&gt;Try them out now in the &lt;a href=&quot;https://one.dash.cloudflare.com/?to=/:account/home&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Zero Trust dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;!&lt;/p&gt;</description><pubDate>Thu, 10 Jul 2025 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category></item><item><title>Cloudflare Images - HEIC support in Cloudflare Images</title><link>https://docs.infinitegaming.org/changelog/post/heic-support/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/heic-support/</guid><description>&lt;p&gt;You can use Images to ingest HEIC images and serve them in supported output formats like AVIF, WebP, JPEG, and PNG.&lt;/p&gt;
&lt;p&gt;When inputting a HEIC image, dimension and sizing limits may still apply. Refer to our documentation to see limits for &lt;a href=&quot;https://docs.infinitegaming.org/images/storage/upload-images/methods/&quot;&gt;uploading to Images&lt;/a&gt; or &lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/transformations/overview/&quot;&gt;transforming a remote image&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 08 Jul 2025 00:00:00 GMT</pubDate><product>Cloudflare Images</product><category>Cloudflare Images</category></item><item><title>Cloudflare One - Cloudy summaries for Access and Gateway Logs</title><link>https://docs.infinitegaming.org/changelog/post/2025-07-07-cloudy-summaries-access-gateway/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-07-07-cloudy-summaries-access-gateway/</guid><description>&lt;p&gt;Cloudy, Cloudflare&apos;s AI Agent, will now automatically summarize your &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/logs/dashboard-logs/access-authentication-logs/&quot;&gt;Access&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/logs/dashboard-logs/gateway-logs/&quot;&gt;Gateway&lt;/a&gt; block logs.&lt;/p&gt;
&lt;p&gt;In the log itself, Cloudy will summarize what occurred and why. This will be helpful for quick troubleshooting and issue correlation.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=512,height=472,format=webp/_astro/cloudy-explanation.oFZR6cXa.png&quot; alt=&quot;Cloudy AI summarizes a log&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;512&quot; height=&quot;472&quot;&gt;
&lt;p&gt;If you have feedback about the Cloudy summary - good or bad - you can provide that right from the summary itself.&lt;/p&gt;</description><pubDate>Mon, 07 Jul 2025 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category></item><item><title>Cloudflare One - New App Library for Zero Trust Dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2025-07-07-dashboard-app-library/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-07-07-dashboard-app-library/</guid><description>&lt;p&gt;Cloudflare Zero Trust customers can use the App Library to get full visibility over the SaaS applications that they use in their Gateway policies, CASB integrations, and Access for SaaS applications.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;App Library&lt;/strong&gt;, found under &lt;strong&gt;My Team&lt;/strong&gt;, makes information available about all Applications that can be used across the Zero Trust product suite.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1089,height=548,format=webp/_astro/app-library.D403GJ9j.png&quot; alt=&quot;Zero Trust App Library&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1089&quot; height=&quot;548&quot;&gt;
&lt;p&gt;You can use the App Library to see:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How Applications are defined&lt;/li&gt;
&lt;li&gt;Where they are referenced in policies&lt;/li&gt;
&lt;li&gt;Whether they have Access for SaaS configured&lt;/li&gt;
&lt;li&gt;Review their CASB findings and integration status.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Within individual Applications, you can also track their usage across your organization, and better understand user behavior.&lt;/p&gt;</description><pubDate>Mon, 07 Jul 2025 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category></item><item><title>Workers - Workers now supports JavaScript debug terminals in VSCode, Cursor and Windsurf IDEs</title><link>https://docs.infinitegaming.org/changelog/post/2025-07-04-javascript-debug-terminals/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-07-04-javascript-debug-terminals/</guid><description>&lt;p&gt;Workers now support breakpoint debugging using VSCode&apos;s built-in &lt;a href=&quot;https://code.visualstudio.com/docs/nodejs/nodejs-debugging#_javascript-debug-terminal&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;JavaScript Debug Terminals&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. All you have to do is open a JS debug terminal (&lt;code&gt;Cmd + Shift + P&lt;/code&gt; and then type &lt;code&gt;javascript debug&lt;/code&gt;) and run &lt;code&gt;wrangler dev&lt;/code&gt; (or &lt;code&gt;vite dev&lt;/code&gt;) from within the debug terminal. VSCode will automatically connect to your running Worker (even if you&apos;re running multiple Workers at once!) and start a debugging session.&lt;/p&gt;
&lt;p&gt;In 2023 we announced &lt;a href=&quot;https://blog.cloudflare.com/debugging-cloudflare-workers/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;breakpoint debugging support&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; for Workers, which meant that you could easily debug your Worker code in Wrangler&apos;s built-in devtools (accessible via the &lt;code&gt;[d]&lt;/code&gt; hotkey) as well as multiple other devtools clients, &lt;a href=&quot;https://developers.cloudflare.com/workers/observability/dev-tools/breakpoints/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;including VSCode&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. For most developers, breakpoint debugging via VSCode is the most natural flow, but until now it&apos;s required &lt;a href=&quot;https://developers.cloudflare.com/workers/observability/dev-tools/breakpoints/#setup-vs-code-to-use-breakpoints&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;manually configuring a &lt;code&gt;launch.json&lt;/code&gt; file&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, running &lt;code&gt;wrangler dev&lt;/code&gt;, and connecting via VSCode&apos;s built-in debugger. Now it&apos;s much more seamless!&lt;/p&gt;</description><pubDate>Fri, 04 Jul 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Access - Access RDP securely from your browser — now in open beta</title><link>https://docs.infinitegaming.org/changelog/post/2025-07-01-browser-based-rdp-open-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-07-01-browser-based-rdp-open-beta/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/use-cases/rdp/rdp-browser/&quot;&gt;Browser-based RDP&lt;/a&gt; with &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/policies/&quot;&gt;Cloudflare Access&lt;/a&gt; is now available in open beta for all Cloudflare customers. It enables secure, remote Windows server access without VPNs or RDP clients.&lt;/p&gt;
&lt;p&gt;With browser-based RDP, you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Control how users authenticate to internal RDP resources&lt;/strong&gt; with single sign-on (SSO), multi-factor authentication (MFA), and granular access policies.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Record who is accessing which servers and when&lt;/strong&gt; to support regulatory compliance requirements and to gain greater visibility in the event of a security event.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eliminate the need to install and manage software on user devices&lt;/strong&gt;. You will only need a web browser.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reduce your attack surface&lt;/strong&gt; by keeping your RDP servers off the public Internet and protecting them from common threats like credential stuffing or brute-force attacks.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2132,height=1814,format=webp/_astro/browser-based-rdp-access-app.BNXce1JL.png&quot; alt=&quot;Example of a browsed-based RDP Access application&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2132&quot; height=&quot;1814&quot;&gt;
&lt;p&gt;To get started, see &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/use-cases/rdp/rdp-browser/&quot;&gt;Connect to RDP in a browser&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 01 Jul 2025 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Workers - Enhanced support for static assets with the Cloudflare Vite plugin</title><link>https://docs.infinitegaming.org/changelog/post/2025-07-01-vite-plugin-enhanced-assets-support/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-07-01-vite-plugin-enhanced-assets-support/</guid><description>&lt;p&gt;You can now use any of Vite&apos;s &lt;a href=&quot;https://vite.dev/guide/assets&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;static asset handling&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; features in your Worker as well as in your frontend.
These include importing assets as URLs, importing as strings and importing from the &lt;code&gt;public&lt;/code&gt; directory as well as inlining assets.&lt;/p&gt;
&lt;p&gt;Additionally, assets imported as URLs in your Worker are now automatically moved to the client build output.&lt;/p&gt;
&lt;p&gt;Here is an example that fetches an imported asset using the &lt;a href=&quot;https://docs.infinitegaming.org/workers/static-assets/binding/#binding&quot;&gt;assets binding&lt;/a&gt; and modifies the response.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// Import the asset URL&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// This returns the resolved path in development and production&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; myImage &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;./my-image.png&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// Fetch the asset using the binding&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; response&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;ASSETS&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; URL&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(myImage, request.url));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// Create a new `Response` object that can be modified&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; modifiedResponse&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(response.body, response);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// Add an additional header&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		modifiedResponse.headers.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my-header&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;imported-asset&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// Return the modified response&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; modifiedResponse;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Refer to &lt;a href=&quot;https://docs.infinitegaming.org/workers/vite-plugin/reference/static-assets/&quot;&gt;Static Assets&lt;/a&gt; in the Cloudflare Vite plugin docs for more info.&lt;/p&gt;</description><pubDate>Tue, 01 Jul 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare One Client - Cloudflare One Agent for Android (version 2.4.2)</title><link>https://docs.infinitegaming.org/changelog/post/2025-06-30-warp-ga-android/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-06-30-warp-ga-android/</guid><description>&lt;p&gt;A new GA release for the Android Cloudflare One Agent is now available in the &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.cloudflare.cloudflareoneagent&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Google Play Store&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. This release
contains improvements and new exciting features, including &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/parameters/#enable_post_quantum&quot;&gt;post-quantum cryptography&lt;/a&gt;.
By tunneling your corporate network traffic over Cloudflare, you can now gain the immediate &lt;a href=&quot;https://blog.cloudflare.com/pq-2024/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;protection of post-quantum cryptography&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; without needing to upgrade any of your individual corporate applications or systems.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;QLogs are now disabled by default and can be enabled in the app by turning on &lt;strong&gt;Enable qlogs&lt;/strong&gt; under &lt;strong&gt;Settings&lt;/strong&gt; &amp;gt; &lt;strong&gt;Advanced&lt;/strong&gt; &amp;gt; &lt;strong&gt;Diagnostics&lt;/strong&gt; &amp;gt; &lt;strong&gt;Debug Logs&lt;/strong&gt;. The QLog setting from previous releases will no longer be respected.&lt;/li&gt;
&lt;li&gt;DNS over HTTPS traffic is now included in the WARP tunnel by default.&lt;/li&gt;
&lt;li&gt;The WARP client now applies &lt;a href=&quot;https://blog.cloudflare.com/pq-2024/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;post-quantum cryptography&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; end-to-end on enabled devices accessing resources behind a Cloudflare Tunnel. This feature can be enabled by &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/parameters/#enable_post_quantum&quot;&gt;MDM&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Fixed an issue that caused WARP connection failures on ChromeOS devices.&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Mon, 30 Jun 2025 00:00:00 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - Cloudflare One Agent for iOS (version 1.11)</title><link>https://docs.infinitegaming.org/changelog/post/2025-06-30-warp-ga-ios/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-06-30-warp-ga-ios/</guid><description>&lt;p&gt;A new GA release for the iOS Cloudflare One Agent is now available in the &lt;a href=&quot;https://apps.apple.com/us/app/cloudflare-one-agent/id6443476492&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;iOS App Store&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. This release
contains improvements and new exciting features, including &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/parameters/#enable_post_quantum&quot;&gt;post-quantum cryptography&lt;/a&gt;.
By tunneling your corporate network traffic over Cloudflare, you can now gain the immediate &lt;a href=&quot;https://blog.cloudflare.com/pq-2024/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;protection of post-quantum cryptography&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; without needing to upgrade any of your individual corporate applications or systems.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;QLogs are now disabled by default and can be enabled in the app by turning on &lt;strong&gt;Enable qlogs&lt;/strong&gt; under &lt;strong&gt;Settings&lt;/strong&gt; &amp;gt; &lt;strong&gt;Advanced&lt;/strong&gt; &amp;gt; &lt;strong&gt;Diagnostics&lt;/strong&gt; &amp;gt; &lt;strong&gt;Debug Logs&lt;/strong&gt;. The QLog setting from previous releases will no longer be respected.&lt;/li&gt;
&lt;li&gt;DNS over HTTPS traffic is now included in the WARP tunnel by default.&lt;/li&gt;
&lt;li&gt;The WARP client now applies &lt;a href=&quot;https://blog.cloudflare.com/pq-2024/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;post-quantum cryptography&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; end-to-end on enabled devices accessing resources behind a Cloudflare Tunnel. This feature can be enabled by &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/mdm-deployment/parameters/#enable_post_quantum&quot;&gt;MDM&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Mon, 30 Jun 2025 00:00:00 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Workers - Remote bindings (beta) now works with Next.js — connect to remote resources (D1, KV, R2, etc.) during local development</title><link>https://docs.infinitegaming.org/changelog/post/2025-06-25-getPlatformProxy-support-remote-bindings/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-06-25-getPlatformProxy-support-remote-bindings/</guid><description>
&lt;p&gt;We &lt;a href=&quot;https://github.com/cloudflare/workers-sdk/discussions/9660&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;recently announced&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; our public beta for &lt;a href=&quot;https://docs.infinitegaming.org/workers/local-development/#remote-bindings&quot;&gt;remote bindings&lt;/a&gt;, which allow you to connect to deployed resources running on your Cloudflare account (like &lt;a href=&quot;https://docs.infinitegaming.org/r2&quot;&gt;R2 buckets&lt;/a&gt; or &lt;a href=&quot;https://docs.infinitegaming.org/d1&quot;&gt;D1 databases&lt;/a&gt;) while running a local development session.&lt;/p&gt;
&lt;p&gt;Now, you can use remote bindings with your Next.js applications through the &lt;a href=&quot;https://opennext.js.org/cloudflare/bindings#remote-bindings&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;@opennextjs/cloudflare&lt;/code&gt; adaptor&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; by enabling the experimental feature in your &lt;code&gt;next.config.ts&lt;/code&gt;:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;diff&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;diff&quot; data-nb-lang=&quot;diff&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-ycghdz&quot;&gt;&lt;span style=&quot;user-select: none;&quot;&gt;-&lt;/span&gt; initOpenNextCloudflareForDev();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-17hn0y&quot;&gt;&lt;span style=&quot;user-select: none;&quot;&gt;+&lt;/span&gt; initOpenNextCloudflareForDev({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-17hn0y&quot;&gt;&lt;span style=&quot;user-select: none;&quot;&gt;+&lt;/span&gt;  experimental: { remoteBindings: true }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-17hn0y&quot;&gt;&lt;span style=&quot;user-select: none;&quot;&gt;+&lt;/span&gt; });&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Then, all you have to do is specify which bindings you want connected to the deployed resource on your Cloudflare account via the &lt;code&gt;experimental_remote&lt;/code&gt; flag in your binding definition:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;r2_buckets&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;bucket_name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;testing-bucket&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;binding&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MY_BUCKET&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;experimental_remote&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;r2_buckets&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;bucket_name = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;testing-bucket&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;binding = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MY_BUCKET&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;experimental_remote = &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;You can then run &lt;code&gt;next dev&lt;/code&gt; to start a local development session (or start a preview with &lt;code&gt;opennextjs-cloudflare preview&lt;/code&gt;), and all requests to &lt;code&gt;env.MY_BUCKET&lt;/code&gt; will be proxied to the remote &lt;code&gt;testing-bucket&lt;/code&gt; — rather than the &lt;a href=&quot;https://docs.infinitegaming.org/workers/local-development/#bindings-during-local-development&quot;&gt;default local binding simulations&lt;/a&gt;.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;remote-bindings--isr&quot;&gt;Remote bindings &amp;amp; ISR&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#remote-bindings--isr&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Remote bindings are also used during the build process, which comes with significant benefits for pages using &lt;a href=&quot;https://opennext.js.org/aws/inner_workings/components/server/node#isrssg&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Incremental Static Regeneration (ISR)&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. During the build step for an ISR page, your server executes the page&apos;s code just as it would for normal user requests. If a page needs data to display (like fetching user info from &lt;a href=&quot;https://docs.infinitegaming.org/kv&quot;&gt;KV&lt;/a&gt;), those requests are actually made. The server then uses this fetched data to render the final HTML.&lt;/p&gt;
&lt;p&gt;Data fetching is a critical part of this process, as the finished HTML is only as good as the data it was built with. If the build process can&apos;t fetch real data, you end up with a pre-rendered page that&apos;s empty or incomplete.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;With remote bindings support in OpenNext,&lt;/strong&gt; your pre-rendered pages are built with real data from the start. The build process uses any configured remote bindings, and any data fetching occurs against the deployed resources on your Cloudflare account.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Want to learn more?&lt;/strong&gt; Get started with &lt;a href=&quot;https://opennext.js.org/cloudflare/bindings#remote-bindings&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;remote bindings and OpenNext&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Have feedback?&lt;/strong&gt; Join the discussion in our &lt;a href=&quot;https://github.com/cloudflare/workers-sdk/discussions/9660&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;beta announcement&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; to share feedback or report any issues.&lt;/p&gt;</description><pubDate>Mon, 30 Jun 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Run and connect Workers in separate dev commands with the Cloudflare Vite plugin</title><link>https://docs.infinitegaming.org/changelog/post/2025-06-26-vite-plugin-cross-commands-binding/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-06-26-vite-plugin-cross-commands-binding/</guid><description>&lt;p&gt;Workers can now talk to each other across separate dev commands using service bindings and tail consumers, whether started with &lt;code&gt;vite dev&lt;/code&gt; or &lt;code&gt;wrangler dev&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Simply start each Worker in its own terminal:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Terminal 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;vite&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; dev&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Terminal 2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; dev&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;This is useful when different teams maintain different Workers, or when each Worker has its own build setup or tooling.&lt;/p&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://docs.infinitegaming.org/workers/local-development/multi-workers&quot;&gt;Developing with multiple Workers&lt;/a&gt; guide to learn more about the different approaches and when to use each one.&lt;/p&gt;</description><pubDate>Thu, 26 Jun 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Data Loss Prevention, CASB, Cloudflare One - Data Security Analytics in the Zero Trust dashboard</title><link>https://docs.infinitegaming.org/changelog/post/cf1-data-security-analytics-v1/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/cf1-data-security-analytics-v1/</guid><description>&lt;p&gt;Zero Trust now includes &lt;strong&gt;Data security analytics&lt;/strong&gt;, providing you with unprecedented visibility into your organization sensitive data.&lt;/p&gt;
&lt;p&gt;The new dashboard includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sensitive Data Movement Over Time:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;See patterns and trends in how sensitive data moves across your environment. This helps understand where data is flowing and identify common paths.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sensitive Data at Rest in SaaS &amp;amp; Cloud:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;View an inventory of sensitive data stored within your corporate SaaS applications (for example, Google Drive, Microsoft 365) and cloud accounts (such as AWS S3).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;DLP Policy Activity:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Identify which of your Data Loss Prevention (DLP) policies are being triggered most often.&lt;/li&gt;
&lt;li&gt;See which specific users are responsible for triggering DLP policies.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=3254,height=1580,format=webp/_astro/cf1-data-security-analytics-v1.BGl6fYXl.png&quot; alt=&quot;Data Security Analytics&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;3254&quot; height=&quot;1580&quot;&gt;
&lt;p&gt;To access the new dashboard, log in to &lt;a href=&quot;https://one.dash.cloudflare.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare One&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and go to &lt;strong&gt;Insights&lt;/strong&gt; on the sidebar.&lt;/p&gt;</description><pubDate>Mon, 23 Jun 2025 09:00:00 GMT</pubDate><product>Data Loss Prevention</product><category>Data Loss Prevention</category><category>CASB</category><category>Cloudflare One</category></item><item><title>Workers - Increased blob size limits in Workers Analytics Engine</title><link>https://docs.infinitegaming.org/changelog/post/2025-06-20-increased-blob-size-limits-in-Workers-Analytics/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-06-20-increased-blob-size-limits-in-Workers-Analytics/</guid><description>
&lt;p&gt;We’ve increased the total allowed size of &lt;a href=&quot;https://docs.infinitegaming.org/analytics/analytics-engine/get-started/#2-write-data-points-from-your-worker&quot;&gt;&lt;code&gt;blob&lt;/code&gt;&lt;/a&gt; fields on data points written to &lt;a href=&quot;https://docs.infinitegaming.org/analytics/analytics-engine/&quot;&gt;Workers Analytics Engine&lt;/a&gt; from &lt;strong&gt;5 KB to 16 KB&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This change gives you more flexibility when logging rich observability data — such as base64-encoded payloads, AI inference traces, or custom metadata — without hitting request size limits.&lt;/p&gt;
&lt;p&gt;You can find full details on limits for queries, filters, payloads, and more &lt;a href=&quot;https://docs.infinitegaming.org/analytics/analytics-engine/limits/&quot;&gt;here in the Workers Analytics Engine limits documentation&lt;/a&gt;.&lt;/p&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		env.analyticsDataset.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;writeDataPoint&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;			// The sum of all of the blob&apos;s sizes can now be 16 KB&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			blobs: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;				// The URL of the request to the Worker&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				request.url,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;				// Some metadata about your application you&apos;d like to store&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;				JSON&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;stringify&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(metadata),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;				// The version of your Worker this datapoint was collected from&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				env.versionMetadata.tag,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			indexes: [&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;sample-index&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;worker.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		env.analyticsDataset.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;writeDataPoint&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;			// The sum of all of the blob&apos;s sizes can now be 16 KB&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			blobs: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;				// The URL of the request to the Worker&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				request.url,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;				// Some metadata about your application you&apos;d like to store&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;				JSON&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;stringify&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(metadata),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;				// The version of your Worker this datapoint was collected from&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				env.versionMetadata.tag,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			indexes: [&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;sample-index&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;&lt;/div&gt;</description><pubDate>Fri, 20 Jun 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>D1, Workers, Workers for Platforms - Automate Worker deployments with a simplified SDK and more reliable Terraform provider</title><link>https://docs.infinitegaming.org/changelog/post/2025-06-17-workers-terraform-sdk-api-fixes/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-06-17-workers-terraform-sdk-api-fixes/</guid><description>
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;simplified-worker-deployments-with-our-sdks&quot;&gt;Simplified Worker Deployments with our SDKs&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#simplified-worker-deployments-with-our-sdks&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;We&apos;ve simplified the programmatic deployment of Workers via our &lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/api/reference/sdks/&quot;&gt;Cloudflare SDKs&lt;/a&gt;. This update abstracts away the low-level complexities of the &lt;code&gt;multipart/form-data&lt;/code&gt; upload process, allowing you to focus on your code while we handle the deployment mechanics.&lt;/p&gt;
&lt;p&gt;This new interface is available in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/cloudflare/cloudflare-typescript&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;cloudflare-typescript&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; (4.4.1)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/cloudflare/cloudflare-python&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;cloudflare-python&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; (4.3.1)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For complete examples, see our guide on &lt;a href=&quot;https://docs.infinitegaming.org/workers/platform/infrastructure-as-code&quot;&gt;programmatic Worker deployments&lt;/a&gt;.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;the-old-way-manual-api-calls&quot;&gt;The Old way: Manual API calls&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#the-old-way-manual-api-calls&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Previously, deploying a Worker programmatically required manually constructing a &lt;code&gt;multipart/form-data&lt;/code&gt; HTTP request, packaging your code and a separate &lt;code&gt;metadata.json&lt;/code&gt; file. This was more complicated and verbose, and prone to formatting errors.&lt;/p&gt;
&lt;p&gt;For example, here&apos;s how you would upload a Worker script previously with cURL:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; https://api.cloudflare.com/client/v4/accounts/&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;account_i&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;/workers/scripts/my-hello-world-script&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  -X&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; PUT&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  -H&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &apos;Authorization: Bearer &amp;lt;api_token&amp;gt;&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  -F&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &apos;metadata={&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;        &quot;main_module&quot;: &quot;my-hello-world-script.mjs&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;        &quot;bindings&quot;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;          {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;            &quot;type&quot;: &quot;plain_text&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;            &quot;name&quot;: &quot;MESSAGE&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;            &quot;text&quot;: &quot;Hello World!&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;          }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;        ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;        &quot;compatibility_date&quot;: &quot;$today&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;      };type=application/json&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  -F&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &apos;my-hello-world-script.mjs=@-;filename=my-hello-world-script.mjs;type=application/javascript+module&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;EOF&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;export default {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;  async fetch(request, env, ctx) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;    return new Response(env.MESSAGE, { status: 200 });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;EOF&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;after-sdk-interface&quot;&gt;After: SDK interface&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#after-sdk-interface&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;With the new SDK interface, you can now define your entire Worker configuration using a single, structured object.&lt;/p&gt;
&lt;p&gt;This approach allows you to specify metadata like &lt;code&gt;main_module&lt;/code&gt;, &lt;code&gt;bindings&lt;/code&gt;, and &lt;code&gt;compatibility_date&lt;/code&gt; as clearer properties directly alongside your script content. Our SDK takes this logical object and automatically constructs the complex multipart/form-data API request behind the scenes.&lt;/p&gt;
&lt;p&gt;Here&apos;s how you can now programmatically deploy a Worker via the &lt;a href=&quot;https://github.com/cloudflare/cloudflare-typescript&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare-typescript&lt;/code&gt; SDK&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; Cloudflare &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;cloudflare&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { toFile } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;cloudflare/index&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// ... client setup, script content, etc.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; script&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; client.workers.scripts.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;update&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(scriptName, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	account_id: accountID,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	metadata: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		main_module: scriptFileName,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		bindings: [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	files: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		[scriptFileName]: &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; toFile&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(Buffer.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(scriptContent), scriptFileName, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			type: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;application/javascript+module&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; Cloudflare &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &apos;cloudflare&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { toFile } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &apos;cloudflare/index&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// ... client setup, script content, etc.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; script&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; client.workers.scripts.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;update&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(scriptName, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id: accountID,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  metadata: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    main_module: scriptFileName,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    bindings: [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  files: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    [scriptFileName]: &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; toFile&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(Buffer.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(scriptContent), scriptFileName, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;      type: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;application/javascript+module&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    }),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;&lt;/div&gt;
&lt;p&gt;View the complete example here: &lt;a href=&quot;https://github.com/cloudflare/cloudflare-typescript/blob/main/examples/workers/script-upload.ts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/cloudflare/cloudflare-typescript/blob/main/examples/workers/script-upload.ts&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;terraform-provider-improvements&quot;&gt;Terraform provider improvements&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#terraform-provider-improvements&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;We&apos;ve also made several fixes and enhancements to the &lt;a href=&quot;https://github.com/cloudflare/terraform-provider-cloudflare&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Terraform provider&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed the &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/workers_script&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_workers_script&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; resource in Terraform, which previously was producing a diff even when there were no changes. Now, your &lt;code&gt;terraform plan&lt;/code&gt; outputs will be cleaner and more reliable.&lt;/li&gt;
&lt;li&gt;Fixed the &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/workers_for_platforms_dispatch_namespace&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_workers_for_platforms_dispatch_namespace&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, where the provider would attempt to recreate the namespace on a &lt;code&gt;terraform apply&lt;/code&gt;. The resource now correctly reads its remote state, ensuring stability for production environments and CI/CD workflows.&lt;/li&gt;
&lt;li&gt;The &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/workers_route&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_workers_route&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; resource now allows for the &lt;code&gt;script&lt;/code&gt; property to be empty, null, or omitted to indicate that pattern should be negated for all scripts (see routes &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/routing/routes&quot;&gt;docs&lt;/a&gt;). You can now reserve a pattern or temporarily disable a Worker on a route without deleting the route definition itself.&lt;/li&gt;
&lt;li&gt;Using &lt;code&gt;primary_location_hint&lt;/code&gt; in the &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/d1_database&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_d1_database&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; resource will no longer always try to recreate. You can now safely change the location hint for a D1 database without causing a destructive operation.&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;api-improvements&quot;&gt;API improvements&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#api-improvements&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;We&apos;ve also properly documented the &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/workers/subresources/scripts/subresources/script_and_version_settings&quot;&gt;Workers Script And Version Settings&lt;/a&gt; in our public OpenAPI spec and SDKs.&lt;/p&gt;</description><pubDate>Thu, 19 Jun 2025 00:00:00 GMT</pubDate><product>D1</product><category>D1</category><category>Workers</category><category>Workers for Platforms</category></item><item><title>Gateway - Gateway will now evaluate Network policies before HTTP policies from July 14th, 2025</title><link>https://docs.infinitegaming.org/changelog/post/2025-06-17-new-order-of-enforcement/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-06-17-new-order-of-enforcement/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/&quot;&gt;Gateway&lt;/a&gt; will now evaluate &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/network-policies/&quot;&gt;Network (Layer 4) policies&lt;/a&gt; &lt;strong&gt;before&lt;/strong&gt; &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/&quot;&gt;HTTP (Layer 7) policies&lt;/a&gt;. This change preserves your existing security posture and does not affect which traffic is filtered — but it may impact how notifications are displayed to end users.&lt;/p&gt;
&lt;p&gt;This change will roll out progressively between &lt;strong&gt;July 14–18, 2025&lt;/strong&gt;. If you use HTTP policies, we recommend reviewing your configuration ahead of rollout to ensure the user experience remains consistent.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;updated-order-of-enforcement&quot;&gt;Updated order of enforcement&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#updated-order-of-enforcement&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Previous order:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;DNS policies&lt;/li&gt;
&lt;li&gt;HTTP policies&lt;/li&gt;
&lt;li&gt;Network policies&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;New order:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;DNS policies&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Network policies&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HTTP policies&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;action-required-review-your-gateway-http-policies&quot;&gt;Action required: Review your Gateway HTTP policies&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#action-required-review-your-gateway-http-policies&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;This change may affect block notifications. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You have an &lt;strong&gt;HTTP policy&lt;/strong&gt; to block &lt;code&gt;example.com&lt;/code&gt; and display a block page.&lt;/li&gt;
&lt;li&gt;You also have a &lt;strong&gt;Network policy&lt;/strong&gt; to block &lt;code&gt;example.com&lt;/code&gt; silently (no client notification).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With the new order, the Network policy will trigger first — and the user will no longer see the HTTP block page.&lt;/p&gt;
&lt;p&gt;To ensure users still receive a block notification, you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add a client notification to your Network policy, or&lt;/li&gt;
&lt;li&gt;Use only the HTTP policy for that domain.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;why-were-making-this-change&quot;&gt;Why we’re making this change&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#why-were-making-this-change&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;This update is based on user feedback and aims to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create a more intuitive model by evaluating network-level policies before application-level policies.&lt;/li&gt;
&lt;li&gt;Minimize &lt;a href=&quot;https://docs.infinitegaming.org/support/troubleshooting/http-status-codes/cloudflare-5xx-errors/error-526/#error-526-in-the-zero-trust-context&quot;&gt;526 connection errors&lt;/a&gt; by verifying the network path to an origin before attempting to establish a decrypted TLS connection.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;To learn more, visit the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/order-of-enforcement/&quot;&gt;Gateway order of enforcement documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 18 Jun 2025 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Workers - Remote bindings public beta - Connect to remote resources (D1, KV, R2, etc.) during local development</title><link>https://docs.infinitegaming.org/changelog/post/2025-06-18-remote-bindings-beta/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-06-18-remote-bindings-beta/</guid><description>
&lt;p&gt;Today &lt;a href=&quot;https://github.com/cloudflare/workers-sdk/discussions/9660&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;we announced the public beta&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; of &lt;a href=&quot;https://docs.infinitegaming.org/workers/local-development/#remote-bindings&quot;&gt;remote bindings&lt;/a&gt; for local development. With remote bindings, you can now connect to deployed resources like &lt;a href=&quot;https://docs.infinitegaming.org/r2/&quot;&gt;R2 buckets&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/d1/&quot;&gt;D1 databases&lt;/a&gt; while running Worker code on your local machine. This means you can test your local code changes against real data and services, without the overhead of deploying for each iteration.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;example-configuration&quot;&gt;Example configuration&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#example-configuration&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;To enable remote mode, add &lt;code&gt;&quot;experimental_remote&quot; : true&lt;/code&gt; to each binding that you want to rely on a remote resource running on Cloudflare:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my-worker&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;	// Set this to today&apos;s date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;compatibility_date&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;2026-10-11&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;r2_buckets&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;bucket_name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;screenshots-bucket&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;binding&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;screenshots_bucket&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;experimental_remote&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;name = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my-worker&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Set this to today&apos;s date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;compatibility_date = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;2026-10-11&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;r2_buckets&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;bucket_name = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;screenshots-bucket&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;binding = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;screenshots_bucket&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;experimental_remote = &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;When remote bindings are configured, your Worker &lt;strong&gt;still executes locally&lt;/strong&gt;, but all binding calls are proxied to the deployed resource that runs on Cloudflare&apos;s network.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You can try out remote bindings for local development today with:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/local-development/#remote-bindings&quot;&gt;Wrangler v4.20.3&lt;/a&gt;: Use the &lt;code&gt;wrangler dev --x-remote-bindings&lt;/code&gt; command.&lt;/li&gt;
&lt;li&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/workers/local-development/#remote-bindings&quot;&gt;Cloudflare Vite Plugin&lt;/a&gt;: Refer to the documentation for how to enable in your Vite config.&lt;/li&gt;
&lt;li&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/workers/local-development/#remote-bindings&quot;&gt;Cloudflare Vitest Plugin&lt;/a&gt;: Refer to the documentation for how to enable in your Vitest config.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Have feedback?&lt;/strong&gt;
Join the discussion in our &lt;a href=&quot;https://github.com/cloudflare/workers-sdk/discussions/9660&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;beta announcement&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; to share feedback or report any issues.&lt;/p&gt;</description><pubDate>Wed, 18 Jun 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Control which routes invoke your Worker script for Single Page Applications</title><link>https://docs.infinitegaming.org/changelog/post/2025-06-17-advanced-routing/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-06-17-advanced-routing/</guid><description>
&lt;p&gt;For those building &lt;a href=&quot;https://docs.infinitegaming.org/workers/static-assets/routing/single-page-application/#advanced-routing-control&quot;&gt;Single Page Applications (SPAs) on Workers&lt;/a&gt;, you can now explicitly define which routes invoke your Worker script in Wrangler configuration. The &lt;a href=&quot;https://docs.infinitegaming.org/workers/static-assets/binding/#run_worker_first&quot;&gt;&lt;code&gt;run_worker_first&lt;/code&gt; config option&lt;/a&gt; has now been expanded to accept an array of route patterns, allowing you to more granularly specify when your Worker script runs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Configuration example:&lt;/strong&gt;&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my-spa-worker&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;	// Set this to today&apos;s date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;compatibility_date&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;2026-10-11&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;main&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./src/index.ts&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;assets&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;directory&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./dist/&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;not_found_handling&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;single-page-application&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;binding&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;ASSETS&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;run_worker_first&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;/api/*&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;!/api/docs/*&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;name = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;my-spa-worker&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;# Set this to today&apos;s date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;compatibility_date = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;2026-10-11&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;main = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./src/index.ts&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;assets&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;directory = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./dist/&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;not_found_handling = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;single-page-application&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;binding = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;ASSETS&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;run_worker_first = [ &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;/api/*&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;!/api/docs/*&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; ]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;This new routing control was done in partnership with our community and customers who provided great feedback on &lt;a href=&quot;https://github.com/cloudflare/workers-sdk/discussions/9143&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;our public proposal&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. Thank you to everyone who brought forward use-cases and feedback on the design!&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;prerequisites&quot;&gt;Prerequisites&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#prerequisites&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;To use advanced routing control with &lt;code&gt;run_worker_first&lt;/code&gt;, you&apos;ll need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/install-and-update/&quot;&gt;Wrangler&lt;/a&gt; v4.20.0 and above&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/vite-plugin/get-started/&quot;&gt;Cloudflare Vite plugin&lt;/a&gt; v1.7.0 and above&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Tue, 17 Jun 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - SSRF vulnerability in @opennextjs/cloudflare proactively mitigated for all Cloudflare customers</title><link>https://docs.infinitegaming.org/changelog/post/2025-06-17-open-next-ssrf/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-06-17-open-next-ssrf/</guid><description>&lt;p&gt;Mitigations have been put in place for all existing and future deployments of sites with the Cloudflare adapter for Open Next in response to an identified Server-Side Request Forgery (SSRF) vulnerability in the &lt;code&gt;@opennextjs/cloudflare&lt;/code&gt; package.&lt;/p&gt;
&lt;p&gt;The vulnerability stemmed from an unimplemented feature in the Cloudflare adapter for Open Next, which allowed users to proxy arbitrary remote content via the &lt;code&gt;/_next/image&lt;/code&gt; endpoint.&lt;/p&gt;
&lt;p&gt;This issue allowed attackers to load remote resources from arbitrary hosts under the victim site&apos;s domain for any site deployed using the Cloudflare adapter for Open Next. For example: &lt;code&gt;https://victim-site.com/_next/image?url=https://attacker.com&lt;/code&gt;. In this example, attacker-controlled content from &lt;code&gt;attacker.com&lt;/code&gt; is served through the victim site&apos;s domain (&lt;code&gt;victim-site.com&lt;/code&gt;), violating the same-origin policy and potentially misleading users or other services.&lt;/p&gt;
&lt;p&gt;References: &lt;a href=&quot;https://www.cve.org/cverecord?id=CVE-2025-6087&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.cve.org/cverecord?id=CVE-2025-6087&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/opennextjs/opennextjs-cloudflare/security/advisories/GHSA-rvpw-p7vw-wj3m&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/opennextjs/opennextjs-cloudflare/security/advisories/GHSA-rvpw-p7vw-wj3m&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;impact&quot;&gt;Impact&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#impact&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;SSRF via unrestricted remote URL loading&lt;/li&gt;
&lt;li&gt;Arbitrary remote content loading&lt;/li&gt;
&lt;li&gt;Potential internal service exposure or phishing risks through domain abuse&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;mitigation&quot;&gt;Mitigation&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#mitigation&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The following mitigations have been put in place:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Server side updates&lt;/strong&gt; to Cloudflare&apos;s platform to restrict the content loaded via the &lt;code&gt;/_next/image&lt;/code&gt; endpoint to images. The update automatically mitigates the issue for all existing and any future sites deployed to Cloudflare using the affected version of the Cloudflare adapter for Open Next&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Root cause fix:&lt;/strong&gt; Pull request &lt;a href=&quot;https://github.com/opennextjs/opennextjs-cloudflare/pull/727&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#727&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; to the Cloudflare adapter for Open Next. The patched version of the adapter has been released as &lt;code&gt;@opennextjs/cloudflare@1.3.0&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Package dependency update:&lt;/strong&gt; Pull request &lt;a href=&quot;https://github.com/cloudflare/workers-sdk/pull/9608&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;cloudflare/workers-sdk#9608&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; to create-cloudflare (c3) to use the fixed version of the Cloudflare adapter for Open Next. The patched version of create-cloudflare has been published as &lt;code&gt;create-cloudflare@2.49.3&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In addition to the automatic mitigation deployed on Cloudflare&apos;s platform, we encourage affected users to upgrade to &lt;code&gt;@opennext/cloudflare&lt;/code&gt; v1.3.0 and use the &lt;a href=&quot;https://nextjs.org/docs/pages/api-reference/components/image#remotepatterns&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;remotePatterns&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; filter in Next config if they need to allow-list external urls with images assets.&lt;/p&gt;</description><pubDate>Tue, 17 Jun 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Grant account members read-only access to the Workers Platform</title><link>https://docs.infinitegaming.org/changelog/post/2025-06-16-workers-platform-admin-role/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-06-16-workers-platform-admin-role/</guid><description>&lt;p&gt;You can now grant members of your Cloudflare account read-only access to the Workers
Platform.&lt;/p&gt;
&lt;p&gt;The new &quot;Workers Platform (Read-only)&quot; role grants read-only access to all products typically used as part of Cloudflare&apos;s Developer Platform, including &lt;a href=&quot;https://docs.infinitegaming.org/workers/&quot;&gt;Workers&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/pages/&quot;&gt;Pages&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/&quot;&gt;Durable Objects&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/kv/&quot;&gt;KV&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/r2/&quot;&gt;R2&lt;/a&gt;, Zones, &lt;a href=&quot;https://docs.infinitegaming.org/analytics/account-and-zone-analytics/zone-analytics/&quot;&gt;Zone Analytics&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/rules/&quot;&gt;Page Rules&lt;/a&gt;. When Cloudflare introduces new products to the Workers platform, we will add additional read-only permissions to this role.&lt;/p&gt;
&lt;p&gt;Additionally, the role previously named &quot;Workers Admin&quot; has been renamed to &quot;Workers Platform Admin&quot;. This
change ensures that the name more accurately reflects the permissions granted — this
role has always granted access to more than just
Workers — it grants read and write access to the products mentioned above, and similarly, as new products are added to the Workers platform, we will add additional read and write permissions to this role.&lt;/p&gt;
&lt;p&gt;You can review the updated roles in the &lt;a href=&quot;https://docs.infinitegaming.org/fundamentals/manage-members/roles/&quot;&gt;developer docs&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 16 Jun 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Stream - Increased limits for Media Transformations</title><link>https://docs.infinitegaming.org/changelog/post/2025-06-10-media-transformations-limits-increase/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-06-10-media-transformations-limits-increase/</guid><description>&lt;p&gt;We have increased the limits for &lt;a href=&quot;https://docs.infinitegaming.org/stream/transform-videos/&quot;&gt;Media Transformations&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Input file size limit is now 100MB (was 40MB)&lt;/li&gt;
&lt;li&gt;Output video duration limit is now 1 minute (was 30 seconds)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Additionally, we have improved caching of the input asset, resulting in fewer
requests to origin storage even when transformation options may differ.&lt;/p&gt;
&lt;p&gt;For more information, learn about &lt;a href=&quot;https://docs.infinitegaming.org/stream/transform-videos/&quot;&gt;Transforming Videos&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 10 Jun 2025 00:00:00 GMT</pubDate><product>Stream</product><category>Stream</category></item><item><title>Workers - Access git commit sha and branch name as environment variables in Workers Builds</title><link>https://docs.infinitegaming.org/changelog/post/2025-06-10-default-env-vars/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-06-10-default-env-vars/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/&quot;&gt;Workers Builds&lt;/a&gt; connects your Worker to a &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/git-integration/&quot;&gt;Git repository&lt;/a&gt;, and automates building and deploying your code on each pushed change.&lt;/p&gt;
&lt;p&gt;To make CI/CD pipelines even more flexible, Workers Builds now automatically injects &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/configuration/#environment-variables&quot;&gt;default environment variables&lt;/a&gt; into your build process (much like the defaults in &lt;a href=&quot;https://docs.infinitegaming.org/pages/configuration/build-configuration/#environment-variables&quot;&gt;Cloudflare Pages projects&lt;/a&gt;). You can use these variables to customize your build process based on the deployment context, such as the branch or commit.&lt;/p&gt;
&lt;p&gt;The following environment variables are injected by default:&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Environment Variable&lt;/th&gt;
&lt;th&gt;Injected value&lt;/th&gt;
&lt;th&gt;Example use-case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CI&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Changing build behavior when run on CI versus locally&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;WORKERS_CI&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Changing build behavior when run on Workers Builds versus locally&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;WORKERS_CI_BUILD_UUID&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;build-uuid-of-current-build&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Passing the Build UUID along to custom workflows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;WORKERS_CI_COMMIT_SHA&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;sha1-hash-of-current-commit&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Passing current commit ID to error reporting, for example, Sentry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;WORKERS_CI_BRANCH&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;branch-name-from-push-event&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Customizing build based on branch, for example, disabling debug logging on &lt;code&gt;production&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;You can override these default values and add your own custom environment variables by navigating to &lt;strong&gt;your Worker&lt;/strong&gt; &amp;gt; &lt;strong&gt;Settings&lt;/strong&gt; &amp;gt; &lt;strong&gt;Environment variables&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Learn more in the &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/configuration/#environment-variables&quot;&gt;Build configuration documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 10 Jun 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Workers native integrations were removed from the Cloudflare dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2025-06-09-workers-integrations-changes/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-06-09-workers-integrations-changes/</guid><description>&lt;p&gt;Workers native integrations were &lt;a href=&quot;https://blog.cloudflare.com/announcing-database-integrations/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;originally launched in May 2023&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; to connect to popular database and observability providers with your Worker in just a few clicks. We are changing how developers connect Workers to these external services. The &lt;strong&gt;Integrations&lt;/strong&gt; tab in the dashboard has been removed in favor of a more direct, command-line-based approach using &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/commands/general/#secret&quot;&gt;Wrangler secrets&lt;/a&gt;.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;whats-changed&quot;&gt;What&apos;s changed&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#whats-changed&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Integrations tab removed&lt;/strong&gt;: The integrations setup flow is no longer available in the Workers dashboard.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Manual secret configuration&lt;/strong&gt;: New connections should be configured by adding credentials as secrets to your Workers using &lt;code&gt;npx wrangler secret put&lt;/code&gt; commands.&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;impact-on-existing-integrations&quot;&gt;Impact on existing integrations&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#impact-on-existing-integrations&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Existing integrations will continue to work without any changes required.&lt;/strong&gt; If you have integrations that were previously created through the dashboard, they will remain functional.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;updating-existing-integrations&quot;&gt;Updating existing integrations&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#updating-existing-integrations&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;If you&apos;d like to modify your existing integration, you can update the secrets, environment variables, or &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/logs/tail-workers/&quot;&gt;Tail Workers&lt;/a&gt; that were created from the original integration setup.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Update secrets&lt;/strong&gt;: Use &lt;code&gt;npx wrangler secret put &amp;lt;SECRET_NAME&amp;gt;&lt;/code&gt; to update credential values.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modify environment variables&lt;/strong&gt;: Update variables through the dashboard or Wrangler configuration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dashboard management&lt;/strong&gt;: Access your Worker&apos;s settings in the &lt;a href=&quot;https://dash.cloudflare.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; to modify connections created by our removed native integrations feature.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have previously set up an observability integration with &lt;a href=&quot;https://sentry.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Sentry&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, the following environment variables were set and are still modifiable:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;BLOCKED_HEADERS&lt;/code&gt;: headers to exclude sending to Sentry&lt;/li&gt;
&lt;li&gt;&lt;code&gt;EXCEPTION_SAMPLING_RATE&lt;/code&gt;: number from 0 - 100, where 0 = no events go through to Sentry, and 100 = all events go through to Sentry&lt;/li&gt;
&lt;li&gt;&lt;code&gt;STATUS_CODES_TO_SAMPLING_RATES&lt;/code&gt;: a map of status codes -- like 400 or with wildcards like 4xx -- to sampling rates described above&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;setting-up-new-database-and-observability-connections&quot;&gt;Setting up new database and observability connections&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#setting-up-new-database-and-observability-connections&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;For new connections, refer to our step-by-step guides on connecting to popular database and observability providers including: &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/third-party-integrations/sentry&quot;&gt;Sentry&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/workers/databases/third-party-integrations/turso/&quot;&gt;Turso&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/workers/databases/third-party-integrations/neon/&quot;&gt;Neon&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/workers/databases/third-party-integrations/supabase/&quot;&gt;Supabase&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/workers/databases/third-party-integrations/planetscale/&quot;&gt;PlanetScale&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/workers/databases/third-party-integrations/upstash/&quot;&gt;Upstash&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/workers/databases/third-party-integrations/xata/&quot;&gt;Xata&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 09 Jun 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Performance and size optimization for the Cloudflare adapter for Open Next</title><link>https://docs.infinitegaming.org/changelog/post/2025-06-05-open-next-size/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-06-05-open-next-size/</guid><description>&lt;p&gt;With the release of the Cloudflare adapter for Open Next v1.0.0 in May 2025, we already had followups plans &lt;a href=&quot;https://blog.cloudflare.com/deploying-nextjs-apps-to-cloudflare-workers-with-the-opennext-adapter/#1-0-and-the-road-ahead&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;to improve performance and size&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@opennextjs/cloudflare&lt;/code&gt; v1.2 released on June 5, 2025 delivers on these enhancements. By removing &lt;code&gt;babel&lt;/code&gt; from the app code and dropping a dependency on &lt;code&gt;@ampproject/toolbox-optimizer&lt;/code&gt;, we were able to reduce generated bundle sizes. Additionally, by stopping preloading of all app routes, we were able to improve the cold start time.&lt;/p&gt;
&lt;p&gt;This means that users will now see a decrease from 14 to 8MiB (2.3 to 1.6MiB gzipped) in generated bundle size for a Next app created via create-next-app, and typically 100ms faster startup times for their medium-sized apps.&lt;/p&gt;
&lt;p&gt;Users only need to update to the latest version of &lt;code&gt;@opennextjs/cloudflare&lt;/code&gt; to automatically benefit from these improvements.&lt;/p&gt;
&lt;p&gt;Note that we published &lt;a href=&quot;https://github.com/opennextjs/opennextjs-cloudflare/security/advisories/GHSA-rvpw-p7vw-wj3m&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CVE-2005-6087&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; for a SSRF vulnerability in the &lt;code&gt;@opennextjs/cloudflare&lt;/code&gt; package.
The vulnerability has been fixed from &lt;code&gt;@opennextjs/cloudflare&lt;/code&gt; v1.3.0 onwards. Please update to any version after this one.&lt;/p&gt;</description><pubDate>Thu, 05 Jun 2025 19:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Access, Cloudflare One - Cloudflare One Analytics Dashboards and Exportable Access Report</title><link>https://docs.infinitegaming.org/changelog/post/dashboards-access-report/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/dashboards-access-report/</guid><description>&lt;p&gt;Cloudflare One now offers powerful new analytics dashboards to help customers easily discover available insights into their application access and network activity. These dashboards provide a centralized, intuitive view for understanding user behavior, application usage, and security posture.&lt;/p&gt;
&lt;p&gt;![Cloudflare One Analytics Dashboards](~/assets/images/changelog/cloudflare-one/Analytics Dashboards.png)&lt;/p&gt;
&lt;p&gt;Additionally, a new exportable access report is available, allowing customers to quickly view high-level metrics and trends in their application access. A &lt;strong&gt;preview&lt;/strong&gt; of the report is shown below, with more to be found in the report:&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2406,height=950,format=webp/_astro/access-report.C744W7JR.png&quot; alt=&quot;Cloudflare One Analytics Dashboards&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2406&quot; height=&quot;950&quot;&gt;
&lt;p&gt;Both features are accessible in the Cloudflare &lt;a href=&quot;https://one.dash.cloudflare.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Zero Trust dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, empowering organizations with better visibility and control.&lt;/p&gt;</description><pubDate>Thu, 05 Jun 2025 00:00:00 GMT</pubDate><product>Access</product><category>Access</category><category>Cloudflare One</category></item><item><title>Load Balancing - New Account-Level Load Balancing UI and Private Load Balancers</title><link>https://docs.infinitegaming.org/changelog/post/2025-06-04-account-load-balancing-ui/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-06-04-account-load-balancing-ui/</guid><description>&lt;p&gt;We&apos;ve made two large changes to load balancing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Redesigned the user interface, now centralized at the &lt;strong&gt;account level&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Introduced &lt;a href=&quot;https://docs.infinitegaming.org/load-balancing/private-network/&quot;&gt;&lt;strong&gt;Private Load Balancers&lt;/strong&gt;&lt;/a&gt; to the UI, enabling you to manage traffic for all of your external and internal applications in a single spot.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This update streamlines how you manage load balancers across multiple zones and extends robust traffic management to your private network infrastructure.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1600,height=822,format=webp/_astro/account-load-balancing-ui.CoCi7gPb.png&quot; alt=&quot;Load Balancing UI&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1600&quot; height=&quot;822&quot;&gt;
&lt;p&gt;&lt;strong&gt;Key Enhancements:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Account-Level UI Consolidation:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Unified Management:&lt;/strong&gt; Say goodbye to navigating individual zones for load balancing tasks. You can now view, configure, and monitor all your load balancers across every zone in your account from a single, intuitive interface at the account level.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Improved Efficiency:&lt;/strong&gt; This centralized approach provides a more streamlined workflow, making it faster and easier to manage both your public-facing and internal traffic distribution.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Private Network Load Balancing:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Secure Internal Application Access:&lt;/strong&gt; Create &lt;a href=&quot;https://docs.infinitegaming.org/load-balancing/private-network/&quot;&gt;&lt;strong&gt;Private Load Balancers&lt;/strong&gt;&lt;/a&gt; to distribute traffic to applications hosted within your private network, ensuring they are not exposed to the public Internet.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;WARP &amp;amp; Magic WAN Integration:&lt;/strong&gt; Effortlessly direct internal traffic from users connected via Cloudflare WARP or through your Magic WAN infrastructure to the appropriate internal endpoint pools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Enhanced Security for Internal Resources:&lt;/strong&gt; Combine reliable Load Balancing with Zero Trust access controls to ensure your internal services are both performant and only accessible by verified users.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1600,height=744,format=webp/_astro/private-load-balancer.yti20m_p.png&quot; alt=&quot;Private Load Balancers&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1600&quot; height=&quot;744&quot;&gt;</description><pubDate>Wed, 04 Jun 2025 00:00:00 GMT</pubDate><product>Load Balancing</product><category>Load Balancing</category></item><item><title>Workers - View an architecture diagram of your Worker directly in the Cloudflare dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2025-06-03-visualize-your-worker-architecture/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-06-03-visualize-your-worker-architecture/</guid><description>
&lt;p&gt;You can now visualize, explore and modify your Worker’s architecture directly in the Cloudflare dashboard, making it easier to understand how your application connects to Cloudflare resources like &lt;a href=&quot;https://docs.infinitegaming.org/d1&quot;&gt;D1 databases&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects&quot;&gt;Durable Objects&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/kv&quot;&gt;KV namespaces&lt;/a&gt;, and &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/bindings/&quot;&gt;more&lt;/a&gt;.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2679,height=2042,format=webp/_astro/bindings-canvas.CszRUVlh.png&quot; alt=&quot;Bindings canvas&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2679&quot; height=&quot;2042&quot;&gt;
&lt;p&gt;With this new view, you can easily:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Explore existing bindings in a visual, architecture-style diagram&lt;/li&gt;
&lt;li&gt;Add and manage bindings directly from the same interface&lt;/li&gt;
&lt;li&gt;Discover the full range of compute, storage, AI, and media resources you can attach to your Workers application.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To get started, head to the &lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/workers-and-pages&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and open the &lt;strong&gt;Bindings&lt;/strong&gt; tab of any Workers application.&lt;/p&gt;</description><pubDate>Tue, 03 Jun 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Debug, profile, and view logs for your Worker in Chrome Devtools — now supported in the Cloudflare Vite plugin</title><link>https://docs.infinitegaming.org/changelog/post/2025-05-21-vite-plugin-chrome-devtools/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-05-21-vite-plugin-chrome-devtools/</guid><description>
&lt;p&gt;You can now &lt;a href=&quot;https://developers.cloudflare.com/workers/observability/dev-tools/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;debug, profile, view logs, and analyze memory usage for your Worker&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; using &lt;a href=&quot;https://developer.chrome.com/docs/devtools&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Chrome Devtools&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; when your Worker runs locally using the &lt;a href=&quot;https://developers.cloudflare.com/workers/vite-plugin/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Vite plugin&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Previously, this was only possible if your Worker ran locally using the &lt;a href=&quot;https://developers.cloudflare.com/workers/wrangler/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Wrangler CLI&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, and now you can do all the same things if your Worker uses &lt;a href=&quot;https://vite.dev/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Vite&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When you run &lt;code&gt;vite&lt;/code&gt;, you&apos;ll now see a debug URL in your console:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;plaintext&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot; data-nb-lang=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-wvjl67&quot;&gt;  VITE v6.3.5  ready in 461 ms&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-wvjl67&quot;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-wvjl67&quot;&gt;  ➜  Local:   http://localhost:5173/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-wvjl67&quot;&gt;  ➜  Network: use --host to expose&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-wvjl67&quot;&gt;  ➜  Debug:   http://localhost:5173/__debug&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-wvjl67&quot;&gt;  ➜  press h + enter to show help&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Open the URL in Chrome, and an instance of Chrome Devtools will open and connect to your Worker running locally. You can then use Chrome Devtools to debug and introspect performance issues. For example, you can navigate to the Performance tab to understand where CPU time is spent in your Worker:&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2144,height=1134,format=webp/_astro/profile.Dz8PUp_K.png&quot; alt=&quot;CPU Profile&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2144&quot; height=&quot;1134&quot;&gt;
&lt;p&gt;For more information on how to get the most out of Chrome Devtools, refer to the following docs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/dev-tools/breakpoints/&quot;&gt;Debug code by setting breakpoints&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/dev-tools/cpu-usage/&quot;&gt;Profile CPU usage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/dev-tools/memory-usage/&quot;&gt;Observe memory usage and debug memory leaks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Fri, 30 May 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Gateway, Cloudflare One - New Gateway Analytics in the Cloudflare One Dashboard</title><link>https://docs.infinitegaming.org/changelog/post/gateway-analytics-v2/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/gateway-analytics-v2/</guid><description>&lt;p&gt;Users can now access significant enhancements to Cloudflare Gateway analytics, providing you with unprecedented visibility into your organization&apos;s DNS queries, HTTP requests, and Network sessions. These powerful new dashboards enable you to go beyond raw logs and gain actionable insights into how your users are interacting with the Internet and your protected resources.&lt;/p&gt;
&lt;p&gt;You can now visualize and explore:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Patterns Over Time: Understand trends in traffic volume and blocked requests, helping you identify anomalies and plan for future capacity.&lt;/li&gt;
&lt;li&gt;Top Users &amp;amp; Destinations: Quickly pinpoint the most active users, enabling better policy enforcement and resource allocation.&lt;/li&gt;
&lt;li&gt;Actions Taken: See a clear breakdown of security actions applied by Gateway policies, such as blocks and allows, offering a comprehensive view of your security posture.&lt;/li&gt;
&lt;li&gt;Geographic Regions: Gain insight into the global distribution of your traffic.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2740,height=1166,format=webp/_astro/gateway-analytics.BdSwbIBb.png&quot; alt=&quot;Gateway Analytics&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2740&quot; height=&quot;1166&quot;&gt;
&lt;p&gt;To access the new overview, log in to your Cloudflare &lt;a href=&quot;https://one.dash.cloudflare.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Zero Trust dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and go to Analytics in the side navigation bar.&lt;/p&gt;</description><pubDate>Thu, 29 May 2025 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category><category>Cloudflare One</category></item><item><title>Gateway - Gateway Protocol Detection Now Available for Pay-as-you-go and Free Plans</title><link>https://docs.infinitegaming.org/changelog/post/2025-05-27-Protocol-Detection-availability/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-05-27-Protocol-Detection-availability/</guid><description>&lt;p&gt;All Cloudflare One Gateway users can now use Protocol detection logging and filtering, including those on Pay-as-you-go and Free plans.&lt;/p&gt;
&lt;p&gt;With Protocol Detection, admins can identify and enforce policies on traffic proxied through Gateway based on the underlying network protocol (for example, HTTP, TLS, or SSH), enabling more granular traffic control and security visibility no matter your plan tier.&lt;/p&gt;
&lt;p&gt;This feature is available to enable in your account network settings for all accounts. For more information on using Protocol Detection, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/network-policies/protocol-detection/&quot;&gt;Protocol detection documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 27 May 2025 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Workers - Handle incoming request cancellation in Workers with Request.signal</title><link>https://docs.infinitegaming.org/changelog/post/2025-05-22-handle-request-cancellation/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-05-22-handle-request-cancellation/</guid><description>
&lt;p&gt;In Cloudflare Workers, you can now attach an event listener to &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/request/&quot;&gt;&lt;code&gt;Request&lt;/code&gt;&lt;/a&gt; objects, using the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Request/signal&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;signal&lt;/code&gt; property&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. This allows you to perform tasks when the request to your Worker is canceled by the client. To use this feature, you must set the &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/compatibility-flags/#enable-requestsignal-for-incoming-requests&quot;&gt;&lt;code&gt;enable_request_signal&lt;/code&gt;&lt;/a&gt; compatibility flag.&lt;/p&gt;
&lt;p&gt;You can use a listener to perform cleanup tasks or write to logs before your Worker&apos;s invocation ends. For example, if you run the Worker below, and then abort the request from the client, a log will be written:&lt;/p&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;js&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;index.js&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// This sets up an event listener that will be called if the client disconnects from your&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// worker.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		request.signal.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;abort&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, () &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			console.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;The request was aborted!&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;readable&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;writable&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; IdentityTransformStream&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;		sendPing&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(writable);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(readable, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			headers: { &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;text/plain&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; function&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; sendPing&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;writable&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; writer&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; writable.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;getWriter&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; enc&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; TextEncoder&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	for&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (;;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// Send &apos;ping&apos; every second to keep the connection alive&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; writer.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(enc.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;ping&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; scheduler.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wait&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;index.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Promise&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;    // This sets up an event listener that will be called if the client disconnects from your&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;    // worker.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    request.signal.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;addEventListener&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;abort&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, () &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;      console.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;The request was aborted!&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    const&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;readable&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;writable&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; IdentityTransformStream&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;    sendPing&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(writable);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(readable, { headers: { &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;Content-Type&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;text/plain&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; } });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;} &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;satisfies&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; ExportedHandler&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; function&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; sendPing&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;writable&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; WritableStream&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Promise&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; writer&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; writable.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;getWriter&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; enc&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; TextEncoder&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	for&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (;;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// Send &apos;ping&apos; every second to keep the connection alive&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; writer.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(enc.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;ping&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;\r\n&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; scheduler.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;wait&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;&lt;/div&gt;
&lt;p&gt;For more information see the &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/request&quot;&gt;&lt;code&gt;Request&lt;/code&gt; documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 22 May 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare One - New Applications Added to Zero Trust</title><link>https://docs.infinitegaming.org/changelog/post/new-applications-71825/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/new-applications-71825/</guid><description>&lt;p&gt;42 new applications have been added for Zero Trust support within the Application Library and Gateway policy enforcement, giving you the ability to investigate or apply inline policies to these applications.&lt;/p&gt;
&lt;p&gt;33 of the 42 applications are Artificial Intelligence applications. The others are Human Resources (2 applications), Development (2 applications), Productivity (2 applications), Sales &amp;amp; Marketing, Public Cloud, and Security.&lt;/p&gt;
&lt;p&gt;To view all available applications, log in to your Cloudflare &lt;a href=&quot;https://one.dash.cloudflare.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Zero Trust dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, navigate to the &lt;strong&gt;App Library&lt;/strong&gt; under &lt;strong&gt;My Team&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;For more information on creating Gateway policies, see our &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/&quot;&gt;Gateway policy documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Sun, 18 May 2025 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category></item><item><title>Access, Cloudflare One - New Access Analytics in the Cloudflare One Dashboard</title><link>https://docs.infinitegaming.org/changelog/post/access-analytics-v2/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/access-analytics-v2/</guid><description>&lt;p&gt;A new Access Analytics dashboard is now available to all Cloudflare One customers. Customers can apply and combine multiple filters to dive into specific slices of their Access metrics. These filters include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Logins granted and denied&lt;/li&gt;
&lt;li&gt;Access events by type (SSO, Login, Logout)&lt;/li&gt;
&lt;li&gt;Application name (Salesforce, Jira, Slack, etc.)&lt;/li&gt;
&lt;li&gt;Identity provider (Okta, Google, Microsoft, onetimepin, etc.)&lt;/li&gt;
&lt;li&gt;Users (&lt;code&gt;chris@cloudflare.com&lt;/code&gt;, &lt;code&gt;sally@cloudflare.com&lt;/code&gt;, &lt;code&gt;rachel@cloudflare.com&lt;/code&gt;, etc.)&lt;/li&gt;
&lt;li&gt;Countries (US, CA, UK, FR, BR, CN, etc.)&lt;/li&gt;
&lt;li&gt;Source IP address&lt;/li&gt;
&lt;li&gt;App type (self-hosted, Infrastructure, RDP, etc.)&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2030,height=1720,format=webp/_astro/accessanalytics.DYXgwZCl.png&quot; alt=&quot;Access Analytics&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2030&quot; height=&quot;1720&quot;&gt;
&lt;p&gt;To access the new overview, log in to your Cloudflare &lt;a href=&quot;https://one.dash.cloudflare.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Zero Trust dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and find Analytics in the side navigation bar.&lt;/p&gt;</description><pubDate>Fri, 16 May 2025 00:00:00 GMT</pubDate><product>Access</product><category>Access</category><category>Cloudflare One</category></item><item><title>Workers, Durable Objects - Durable Objects are now supported in Python Workers</title><link>https://docs.infinitegaming.org/changelog/post/2025-05-14-python-worker-durable-object/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-05-14-python-worker-durable-object/</guid><description>
&lt;p&gt;You can now create &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/&quot;&gt;Durable Objects&lt;/a&gt; using
&lt;a href=&quot;https://docs.infinitegaming.org/workers/languages/python/&quot;&gt;Python Workers&lt;/a&gt;. A Durable Object is a special kind of
Cloudflare Worker which uniquely combines compute with storage, enabling stateful
long-running applications which run close to your users. For more info see
&lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/concepts/what-are-durable-objects/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can define a Durable Object in Python in a similar way to JavaScript:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;python&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot; data-nb-lang=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; workers &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; DurableObject, Response, WorkerEntrypoint&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; urllib.parse &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; urlparse&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; MyDurableObject&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;DurableObject&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    def&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; __init__&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(self, ctx, env):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;        self&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.ctx &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; ctx&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;        self&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.env &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    def&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(self, request):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;        result &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; self&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.ctx.storage.sql.exec(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;SELECT &apos;Hello, World!&apos; as greeting&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;).one()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;        return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; Response(result.greeting)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;WorkerEntrypoint&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; def&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(self, request):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;        url &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; urlparse(request.url)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;        id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;MY_DURABLE_OBJECT&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.idFromName(url.path)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;        stub &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;MY_DURABLE_OBJECT&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.get(&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;        greeting &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; stub.fetch(request.url)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;        return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; greeting&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Define the Durable Object in your Wrangler configuration file:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;durable_objects&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;bindings&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;				&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MY_DURABLE_OBJECT&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;				&quot;class_name&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MyDurableObject&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;durable_objects&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;bindings&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;name = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MY_DURABLE_OBJECT&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;class_name = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MyDurableObject&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;Then define the storage backend for your Durable Object:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;migrations&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;tag&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;v1&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// Should be unique for each entry&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;new_sqlite_classes&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [ &lt;/span&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// Array of new classes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;				&quot;MyDurableObject&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;migrations&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;tag = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;v1&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;new_sqlite_classes = [ &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MyDurableObject&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; ]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Then test your new Durable Object locally by running &lt;code&gt;wrangler dev&lt;/code&gt;:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;npx&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; dev&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Consult the &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/&quot;&gt;Durable Objects documentation&lt;/a&gt; for more details.&lt;/p&gt;</description><pubDate>Fri, 16 May 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category><category>Durable Objects</category></item><item><title>Email security - Open email attachments with Browser Isolation</title><link>https://docs.infinitegaming.org/changelog/post/2025-05-08-open-attachments-with-browser-isolation/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-05-08-open-attachments-with-browser-isolation/</guid><description>&lt;p&gt;You can now safely open email attachments to view and investigate them.&lt;/p&gt;
&lt;p&gt;What this means is that messages now have a &lt;strong&gt;Attachments&lt;/strong&gt; section. Here, you can view processed attachments and their classifications (for example, &lt;em&gt;Malicious&lt;/em&gt;, &lt;em&gt;Suspicious&lt;/em&gt;, &lt;em&gt;Encrypted&lt;/em&gt;). Next to each attachment, a &lt;strong&gt;Browser Isolation&lt;/strong&gt; icon allows your team to safely open the file in a &lt;strong&gt;clientless, isolated browser&lt;/strong&gt; with no risk to the analyst or your environment.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=517,height=155,format=webp/_astro/Attachment-RBI.U9Dp8dJO.png&quot; alt=&quot;Attachment-RBI&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;517&quot; height=&quot;155&quot;&gt;
&lt;p&gt;To use this feature, you must:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Turn on &lt;strong&gt;Allow users to open a remote browser without the device client&lt;/strong&gt; in your Zero Trust settings.&lt;/li&gt;
&lt;li&gt;Have &lt;strong&gt;Browser Isolation (BISO)&lt;/strong&gt; seats assigned.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more details, refer to our &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/remote-browser-isolation/setup/clientless-browser-isolation/&quot;&gt;setup guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Some attachment types may not render in Browser Isolation. If there is a file type that you would like to be opened with Browser Isolation, reach out to your Cloudflare contact.&lt;/p&gt;
&lt;p&gt;This feature is available across these Email security packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Advantage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise + PhishGuard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Thu, 15 May 2025 23:22:49 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Gateway - Domain Categories improvements</title><link>https://docs.infinitegaming.org/changelog/post/2025-05-14-domain-category-improvements/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-05-14-domain-category-improvements/</guid><description>&lt;p&gt;&lt;strong&gt;New categories added&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parent ID&lt;/th&gt;
&lt;th&gt;Parent Name&lt;/th&gt;
&lt;th&gt;Category ID&lt;/th&gt;
&lt;th&gt;Category Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Ads&lt;/td&gt;
&lt;td&gt;66&lt;/td&gt;
&lt;td&gt;Advertisements&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Business &amp;amp; Economy&lt;/td&gt;
&lt;td&gt;185&lt;/td&gt;
&lt;td&gt;Personal Finance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Business &amp;amp; Economy&lt;/td&gt;
&lt;td&gt;186&lt;/td&gt;
&lt;td&gt;Brokerage &amp;amp; Investing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Security Threats&lt;/td&gt;
&lt;td&gt;187&lt;/td&gt;
&lt;td&gt;Compromised Domain&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;td&gt;Security Threats&lt;/td&gt;
&lt;td&gt;188&lt;/td&gt;
&lt;td&gt;Potentially Unwanted Software&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Education&lt;/td&gt;
&lt;td&gt;189&lt;/td&gt;
&lt;td&gt;Reference&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Government &amp;amp; Politics&lt;/td&gt;
&lt;td&gt;190&lt;/td&gt;
&lt;td&gt;Charity and Non-profit&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Changes to existing categories&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Original Name&lt;/th&gt;
&lt;th&gt;New Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Religion&lt;/td&gt;
&lt;td&gt;Religion &amp;amp; Spirituality&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Government&lt;/td&gt;
&lt;td&gt;Government/Legal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Redirect&lt;/td&gt;
&lt;td&gt;URL Alias/Redirect&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/domain-categories/&quot;&gt;Gateway domain categories&lt;/a&gt; to learn more.&lt;/p&gt;</description><pubDate>Wed, 14 May 2025 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Stream - Introducing Origin Restrictions for Media Transformations</title><link>https://docs.infinitegaming.org/changelog/post/2025-05-14-media-transformations-origin-restrictions/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-05-14-media-transformations-origin-restrictions/</guid><description>&lt;p&gt;We are adding &lt;a href=&quot;https://docs.infinitegaming.org/stream/transform-videos/sources/&quot;&gt;source origin restrictions&lt;/a&gt; to
the Media Transformations beta. This allows customers to restrict what sources
can be used to fetch images and video for transformations. This feature is the
same as --- and uses the same settings as ---
&lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/transformations/sources/&quot;&gt;Image Transformations sources&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When transformations is first enabled, the default setting only allows
transformations on images and media from the same website or domain being used to make
the transformation request. In other words, by default, requests to
&lt;code&gt;example.com/cdn-cgi/media&lt;/code&gt; can only reference originals on &lt;code&gt;example.com&lt;/code&gt;.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1664,height=872,format=webp/_astro/allowed-origins.4hu5lHws.png&quot; alt=&quot;Enable allowed origins from the Cloudflare dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1664&quot; height=&quot;872&quot;&gt;
&lt;p&gt;Adding access to other sources, or allowing any source,
&lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/transformations/sources/&quot;&gt;is easy to do&lt;/a&gt;
in the &lt;strong&gt;Transformations&lt;/strong&gt; tab under &lt;strong&gt;Stream&lt;/strong&gt;. Click each domain enabled for
Transformations and set its sources list to match the needs of your content. The
user making this change will need permission to edit zone settings.&lt;/p&gt;
&lt;p&gt;For more information, learn about &lt;a href=&quot;https://docs.infinitegaming.org/stream/transform-videos/&quot;&gt;Transforming Videos&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 14 May 2025 00:00:00 GMT</pubDate><product>Stream</product><category>Stream</category></item><item><title>Browser Isolation - SAML HTTP-POST bindings support for RBI</title><link>https://docs.infinitegaming.org/changelog/post/2025-05-13-rbi-saml-post-support/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-05-13-rbi-saml-post-support/</guid><description>&lt;p&gt;Remote Browser Isolation (RBI) now supports SAML HTTP-POST bindings, enabling seamless authentication for SSO-enabled applications that rely on POST-based SAML responses from Identity Providers (IdPs) within a Remote Browser Isolation session. This update resolves a previous limitation that caused &lt;code&gt;405&lt;/code&gt; errors during login and improves compatibility with multi-factor authentication (MFA) flows.&lt;/p&gt;
&lt;p&gt;With expanded support for major IdPs like Okta and Azure AD, this enhancement delivers a more consistent and user-friendly experience across authentication workflows. Learn how to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/remote-browser-isolation/setup/&quot;&gt;set up Remote Browser Isolation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 13 May 2025 00:00:00 GMT</pubDate><product>Browser Isolation</product><category>Browser Isolation</category></item><item><title>Gateway - New Applications Added for DNS Filtering</title><link>https://docs.infinitegaming.org/changelog/post/2025-05-13-new-applications-added/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-05-13-new-applications-added/</guid><description>&lt;p&gt;You can now create DNS policies to manage outbound traffic for an expanded list of applications.
This update adds support for 273 new applications, giving you more control over your organization&apos;s outbound traffic.&lt;/p&gt;
&lt;p&gt;With this update, you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create DNS policies for a wider range of applications&lt;/li&gt;
&lt;li&gt;Manage outbound traffic more effectively&lt;/li&gt;
&lt;li&gt;Improve your organization&apos;s security and compliance posture&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information on creating DNS policies, see our &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/dns-policies/&quot;&gt;DNS policy documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 13 May 2025 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Data Loss Prevention - Case Sensitive Custom Word Lists</title><link>https://docs.infinitegaming.org/changelog/post/2025-05-12-case-sensitive-cwl/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-05-12-case-sensitive-cwl/</guid><description>&lt;p&gt;You can now configure &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/detection-entries/configure-detection-entries/#custom-wordlist-datasets&quot;&gt;custom word lists&lt;/a&gt; to enforce case sensitivity. This setting supports flexibility where needed and aims to reduce false positives where letter casing is critical.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1289,height=910,format=webp/_astro/case-sesitive-cwl.MPuOc_3r.png&quot; alt=&quot;dlp&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1289&quot; height=&quot;910&quot;&gt;</description><pubDate>Mon, 12 May 2025 00:00:00 GMT</pubDate><product>Data Loss Prevention</product><category>Data Loss Prevention</category></item><item><title>Email security - Open email links with Browser Isolation</title><link>https://docs.infinitegaming.org/changelog/post/2025-05-15-open-links-browser-isolation/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-05-15-open-links-browser-isolation/</guid><description>&lt;p&gt;You can now safely open links in emails to view and investigate them.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=558,height=204,format=webp/_astro/investigate-links.pYbpGkt5.jpg&quot; alt=&quot;Open links with Browser Isolation&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;558&quot; height=&quot;204&quot;&gt;
&lt;p&gt;From &lt;strong&gt;Investigation&lt;/strong&gt;, go to &lt;strong&gt;View details&lt;/strong&gt;, and look for the &lt;strong&gt;Links identified&lt;/strong&gt; section. Next to each link, the Cloudflare dashboard will display an &lt;strong&gt;Open in Browser Isolation&lt;/strong&gt; icon which allows your team to safely open the link in a clientless, isolated browser with no risk to the analyst or your environment. Refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/email-security/investigation/search-email/#open-links&quot;&gt;Open links&lt;/a&gt; to learn more about this feature.&lt;/p&gt;
&lt;p&gt;To use this feature, you must:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Turn on &lt;strong&gt;Allow users to open a remote browser without the device client&lt;/strong&gt; in your Zero Trust settings.&lt;/li&gt;
&lt;li&gt;Have &lt;strong&gt;Browser Isolation (RBI)&lt;/strong&gt; seats assigned.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more details, refer to our &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/remote-browser-isolation/setup/clientless-browser-isolation/&quot;&gt;setup guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This feature is available across these Email security packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Advantage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise + PhishGuard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Thu, 08 May 2025 23:22:49 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Workers - Improved memory efficiency for WebAssembly Workers</title><link>https://docs.infinitegaming.org/changelog/post/2025-05-08-finalization-registry/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-05-08-finalization-registry/</guid><description>&lt;p&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;FinalizationRegistry&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; is now available in Workers. You can opt-in using the &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/compatibility-flags/#enable-finalizationregistry-and-weakref&quot;&gt;&lt;code&gt;enable_weak_ref&lt;/code&gt;&lt;/a&gt; compatibility flag.&lt;/p&gt;
&lt;p&gt;This can reduce memory leaks when using WebAssembly-based Workers, which includes &lt;a href=&quot;https://docs.infinitegaming.org/workers/languages/python/&quot;&gt;Python Workers&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/workers/languages/rust/&quot;&gt;Rust Workers&lt;/a&gt;. The FinalizationRegistry works by enabling toolchains such as &lt;a href=&quot;https://emscripten.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Emscripten&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and &lt;a href=&quot;https://wasm-bindgen.github.io/wasm-bindgen/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;wasm-bindgen&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; to automatically free WebAssembly heap allocations. If you are using WASM and seeing Exceeded Memory errors and cannot determine a cause using &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/dev-tools/memory-usage/&quot;&gt;memory profiling&lt;/a&gt;, you may want to enable the FinalizationRegistry.&lt;/p&gt;
&lt;p&gt;For more information refer to the &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/compatibility-flags/#enable-finalizationregistry-and-weakref&quot;&gt;&lt;code&gt;enable_weak_ref&lt;/code&gt;&lt;/a&gt; compatibility flag documentation.&lt;/p&gt;</description><pubDate>Thu, 08 May 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Data Loss Prevention - Send forensic copies to storage without DLP profiles</title><link>https://docs.infinitegaming.org/changelog/post/2025-05-07-forensic-copy-update/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-05-07-forensic-copy-update/</guid><description>&lt;p&gt;You can now &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/dlp-policies/logging-options/#send-dlp-forensic-copies-to-logpush-destination&quot;&gt;send DLP forensic copies&lt;/a&gt; to third-party storage for any HTTP policy with an &lt;code&gt;Allow&lt;/code&gt; or &lt;code&gt;Block&lt;/code&gt; action, without needing to include a DLP profile. This change increases flexibility for data handling and forensic investigation use cases.&lt;/p&gt;
&lt;p&gt;By default, Gateway will send all matched HTTP requests to your configured DLP Forensic Copy jobs.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1324,height=636,format=webp/_astro/forensic-copies-for-all.fxeFrCY4.png&quot; alt=&quot;DLP&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1324&quot; height=&quot;636&quot;&gt;</description><pubDate>Wed, 07 May 2025 00:00:00 GMT</pubDate><product>Data Loss Prevention</product><category>Data Loss Prevention</category></item><item><title>Load Balancing - UDP and ICMP Monitor Support for Private Load Balancing Endpoints</title><link>https://docs.infinitegaming.org/changelog/post/2025-05-06-private-health-monitoring-methods/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-05-06-private-health-monitoring-methods/</guid><description>&lt;p&gt;Cloudflare Load Balancing now supports &lt;strong&gt;UDP (Layer 4)&lt;/strong&gt; and &lt;strong&gt;ICMP (Layer 3)&lt;/strong&gt; health monitors for &lt;strong&gt;private endpoints&lt;/strong&gt;. This makes it simple to track the health and availability of internal services that don’t respond to HTTP, TCP, or other protocol probes.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;what-you-can-do&quot;&gt;What you can do:&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#what-you-can-do&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Set up &lt;strong&gt;ICMP ping monitors&lt;/strong&gt; to check if your private endpoints are reachable.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;UDP monitors&lt;/strong&gt; for lightweight health checks on non-TCP workloads, such as DNS, VoIP, or custom UDP-based services.&lt;/li&gt;
&lt;li&gt;Gain better visibility and uptime guarantees for services running behind &lt;strong&gt;Private Network Load Balancing&lt;/strong&gt;, without requiring public IP addresses.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This enhancement is ideal for internal applications that rely on low-level protocols, especially when used in conjunction with &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/&quot;&gt;&lt;strong&gt;Cloudflare Tunnel&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/&quot;&gt;&lt;strong&gt;WARP&lt;/strong&gt;&lt;/a&gt;, and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/&quot;&gt;&lt;strong&gt;Magic WAN&lt;/strong&gt;&lt;/a&gt; to create a secure and observable private network.&lt;/p&gt;
&lt;p&gt;Learn more about &lt;a href=&quot;https://docs.infinitegaming.org/load-balancing/private-network/&quot;&gt;Private Network Load Balancing&lt;/a&gt; or view the full list of &lt;a href=&quot;https://docs.infinitegaming.org/load-balancing/monitors/#supported-protocols&quot;&gt;supported health monitor protocols&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 06 May 2025 00:00:00 GMT</pubDate><product>Load Balancing</product><category>Load Balancing</category></item><item><title>Browser Isolation - Browser Isolation Overview page for Zero Trust</title><link>https://docs.infinitegaming.org/changelog/post/2025-05-01-browser-isolation-overview-page/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-05-01-browser-isolation-overview-page/</guid><description>&lt;p&gt;A new &lt;strong&gt;Browser Isolation Overview&lt;/strong&gt; page is now available in the Cloudflare Zero Trust dashboard. This centralized view simplifies the management of &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/remote-browser-isolation/&quot;&gt;Remote Browser Isolation (RBI)&lt;/a&gt; deployments, providing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Streamlined Onboarding:&lt;/strong&gt; Easily set up and manage isolation policies from one location.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quick Testing:&lt;/strong&gt; Validate &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/remote-browser-isolation/setup/clientless-browser-isolation/&quot;&gt;clientless web application isolation&lt;/a&gt; with ease.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simplified Configuration:&lt;/strong&gt; Configure &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/policies/isolate-application/&quot;&gt;isolated access applications&lt;/a&gt; and policies efficiently.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Centralized Monitoring:&lt;/strong&gt; Track aggregate usage and blocked actions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This update consolidates previously disparate settings, accelerating deployment, improving visibility into isolation activity, and making it easier to ensure your protections are working effectively.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1717,height=1286,format=webp/_astro/browser-isolation-overview.Ljd5ax_O.png&quot; alt=&quot;Browser Isolation Overview&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1717&quot; height=&quot;1286&quot;&gt;
&lt;p&gt;To access the new overview, log in to your Cloudflare &lt;a href=&quot;https://one.dash.cloudflare.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Zero Trust dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and find Browser Isolation in the side navigation bar.&lt;/p&gt;</description><pubDate>Thu, 01 May 2025 00:00:00 GMT</pubDate><product>Browser Isolation</product><category>Browser Isolation</category></item><item><title>Cloudflare One - Dark Mode for Zero Trust Dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2025-04-30-zero-trust-dashboard-dark-mode/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-04-30-zero-trust-dashboard-dark-mode/</guid><description>
&lt;p&gt;The &lt;a href=&quot;https://one.dash.cloudflare.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Zero Trust dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; now supports Cloudflare&apos;s native dark mode for all accounts and plan types.&lt;/p&gt;
&lt;p&gt;Zero Trust Dashboard will automatically accept your user-level preferences for system settings, so if your Dashboard appearance is set to &apos;system&apos; or &apos;dark&apos;, the Zero Trust dashboard will enter dark mode whenever the rest of your Cloudflare account does.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=3456,height=1596,format=webp/_astro/dark-mode.DfLeS20d.png&quot; alt=&quot;Zero Trust dashboard supports dark mode&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;3456&quot; height=&quot;1596&quot;&gt;
&lt;div data-nb-tabs class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;Zero Trust Dashboard&quot; class&gt;&lt;p&gt;To update your view preference in the Zero Trust dashboard:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Log into the &lt;a href=&quot;https://one.dash.cloudflare.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Zero Trust dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Select your user icon.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Dark Mode&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;Core Dashboard&quot; class&gt;&lt;p&gt;To update your view preference in the Core dashboard:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Log into the &lt;a href=&quot;https://dash.cloudflare.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;My Profile&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;For &lt;strong&gt;Appearance&lt;/strong&gt;, choose &lt;strong&gt;Dark&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;</description><pubDate>Wed, 30 Apr 2025 00:00:00 GMT</pubDate><product>Cloudflare One</product><category>Cloudflare One</category></item><item><title>Cloudflare One Appliance, Cloudflare One, Cloudflare WAN - Cloudflare One Appliance supports multiple DNS server IPs</title><link>https://docs.infinitegaming.org/changelog/post/2025-04-30-appliance-multiple-dns-servers/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-04-30-appliance-multiple-dns-servers/</guid><description>&lt;p&gt;Cloudflare One Appliance DHCP server settings now support specifying multiple DNS server IP addresses in the DHCP pool.&lt;/p&gt;
&lt;p&gt;Previously, customers could only configure a single DNS server per DHCP pool. With this update, you can specify multiple DNS servers to provide redundancy for clients at branch locations.&lt;/p&gt;
&lt;p&gt;For configuration details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/network-options/dhcp/dhcp-server/&quot;&gt;DHCP server&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 30 Apr 2025 00:00:00 GMT</pubDate><product>Cloudflare One Appliance</product><category>Cloudflare One Appliance</category><category>Cloudflare One</category><category>Cloudflare WAN</category></item><item><title>Gateway - FQDN Filtering For Gateway Egress Policies</title><link>https://docs.infinitegaming.org/changelog/post/2025-04-28-FDQN-Filtering-Egress-Policies/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-04-28-FDQN-Filtering-Egress-Policies/</guid><description>&lt;p&gt;Cloudflare One administrators can now control which egress IP is used based on a destination&apos;s fully qualified domain name (FDQN) within Gateway Egress policies.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Host, Domain, Content Categories, and Application selectors are now available in the Gateway Egress policy builder in beta.&lt;/li&gt;
&lt;li&gt;During the beta period, you can use these selectors with traffic on-ramped to Gateway with the WARP client, proxy endpoints (commonly deployed with PAC files), or Cloudflare Browser Isolation.
&lt;ul&gt;
&lt;li&gt;For WARP client support, additional configuration is required. For more information, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/egress-policies/#limitations&quot;&gt;WARP client configuration documentation&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=841,height=1045,format=webp/_astro/Gateway-Egress-FQDN-Policy-preview.Civon5p8.png&quot; alt=&quot;Egress by FQDN and Hostname&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;841&quot; height=&quot;1045&quot;&gt;
&lt;p&gt;This will help apply egress IPs to your users&apos; traffic when an upstream application or network requires it, while the rest of their traffic can take the most performant egress path.&lt;/p&gt;</description><pubDate>Mon, 28 Apr 2025 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Workers - Cron triggers are now supported in Python Workers</title><link>https://docs.infinitegaming.org/changelog/post/2025-04-22-python-worker-cron-triggers/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-04-22-python-worker-cron-triggers/</guid><description>
&lt;p&gt;You can now create Python Workers which are executed via a cron trigger.&lt;/p&gt;
&lt;p&gt;This is similar to how it&apos;s done in JavaScript Workers, simply define a scheduled event
listener in your Worker:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;python&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot; data-nb-lang=&quot;python&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; workers &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; handler&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;@handler&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; def&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; on_scheduled&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(event, env, ctx):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  print&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;cron processed&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Define a cron trigger configuration in your Wrangler configuration file:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;triggers&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// Schedule cron triggers:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// - At every 3rd minute&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// - At 15:00 (UTC) on first day of the month&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// - At 23:59 (UTC) on the last weekday of the month&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;crons&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;			&quot;*/3 * * * *&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;			&quot;0 15 1 * *&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;			&quot;59 23 LW * *&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;triggers&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;crons = [ &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;*/3 * * * *&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;0 15 1 * *&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;59 23 LW * *&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; ]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;Then test your new handler by using Wrangler with the &lt;code&gt;--test-scheduled&lt;/code&gt; flag and
making a request to &lt;code&gt;/cdn-cgi/local/scheduled?cron=*+*+*+*+*&lt;/code&gt;:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;npx&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; dev&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --test-scheduled&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;http://localhost:8787/cdn-cgi/local/scheduled?cron=*+*+*+*+*&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Consult the &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/cron-triggers/&quot;&gt;Workers Cron Triggers page&lt;/a&gt; for full details on cron triggers in Workers.&lt;/p&gt;</description><pubDate>Thu, 24 Apr 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Access - Access bulk policy tester</title><link>https://docs.infinitegaming.org/changelog/post/2025-04-21-Access-Bulk-Policy-Tester/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-04-21-Access-Bulk-Policy-Tester/</guid><description>&lt;p&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/policies/policy-management/#test-all-policies-in-an-application&quot;&gt;Access bulk policy tester&lt;/a&gt; is now available in the Cloudflare Zero Trust dashboard. The bulk policy tester allows you to simulate Access policies against your entire user base before and after deploying any changes. The policy tester will simulate the configured policy against each user&apos;s last seen identity and device posture (if applicable).&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1531,height=693,format=webp/_astro/example-policy-tester.DCY8hQvx.png&quot; alt=&quot;Example policy tester&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1531&quot; height=&quot;693&quot;&gt;</description><pubDate>Mon, 21 Apr 2025 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Workers, Workers for Platforms - Fixed and documented Workers Routes and Secrets API</title><link>https://docs.infinitegaming.org/changelog/post/2025-04-15-workers-api-fixes/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-04-15-workers-api-fixes/</guid><description>&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;workers-routes-api&quot;&gt;Workers Routes API&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#workers-routes-api&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Previously, a request to the Workers &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/workers/subresources/routes/methods/create/&quot;&gt;Create Route API&lt;/a&gt; always returned &lt;code&gt;null&lt;/code&gt; for &quot;script&quot; and an empty string for &quot;pattern&quot; even if the request was successful.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;Example request&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;bash&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; https://api.cloudflare.com/client/v4/zones/&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$CF_ACCOUNT_ID&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;/workers/routes&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;-X &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;PUT&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;-H &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Authorization: Bearer &lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;$CF_API_TOKEN&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;-H &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;Content-Type: application/json&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;--data &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;{ &quot;pattern&quot;: &quot;example.com/*&quot;, &quot;script&quot;: &quot;hello-world-script&quot; }&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;json&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;Example bad response&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;json&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot; data-nb-lang=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;result&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;id&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;bf153a27ba2b464bb9f04dcf75de1ef9&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;pattern&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;script&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;request_limit_fail_open&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;false&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;success&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;errors&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;messages&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: []&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Now, it properly returns all values!&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;json&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;Example good response&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;json&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot; data-nb-lang=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;result&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;id&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;bf153a27ba2b464bb9f04dcf75de1ef9&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;pattern&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;example.com/*&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;script&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;hello-world-script&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;request_limit_fail_open&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;false&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;success&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;errors&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;messages&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: []&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;workers-secrets-api&quot;&gt;Workers Secrets API&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#workers-secrets-api&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/workers/subresources/scripts/subresources/secrets/&quot;&gt;Workers&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/workers_for_platforms/subresources/dispatch/subresources/namespaces/subresources/scripts/subresources/secrets/&quot;&gt;Workers for Platforms&lt;/a&gt; secrets APIs are now properly documented in the Cloudflare OpenAPI docs. Previously, these endpoints were not publicly documented, leaving users confused on how to directly manage their secrets via the API. Now, you can find the proper endpoints in our public documentation, as well as in our API Library SDKs such as &lt;a href=&quot;https://github.com/cloudflare/cloudflare-typescript&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;cloudflare-typescript&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; (&amp;gt;4.2.0) and &lt;a href=&quot;https://github.com/cloudflare/cloudflare-python&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;cloudflare-python&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; (&amp;gt;4.1.0).&lt;/p&gt;
&lt;p&gt;Note the &lt;code&gt;cloudflare_workers_secret&lt;/code&gt; and &lt;code&gt;cloudflare_workers_for_platforms_script_secret&lt;/code&gt; &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Terraform resources&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; are being removed in a future release. This resource is not recommended for managing secrets. Users should instead use the:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/api/resources/secrets_store/&quot;&gt;Secrets Store&lt;/a&gt; with the &quot;Secrets Store Secret&quot; binding on Workers and Workers for Platforms Script Upload&lt;/li&gt;
&lt;li&gt;&quot;Secret Text&quot; Binding on &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/workers/subresources/scripts/methods/update/&quot;&gt;Workers Script Upload&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/api/resources/workers_for_platforms/subresources/dispatch/subresources/namespaces/subresources/scripts/methods/update/&quot;&gt;Workers for Platforms Script Upload&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Workers (and WFP) Secrets API&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Tue, 15 Apr 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category><category>Workers for Platforms</category></item><item><title>Data Loss Prevention - New predefined detection entry for ICD-11</title><link>https://docs.infinitegaming.org/changelog/post/2025-04-14-icd11-support/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-04-14-icd11-support/</guid><description>&lt;p&gt;You now have access to the World Health Organization (WHO) 2025 edition of the &lt;a href=&quot;https://www.who.int/news/item/14-02-2025-who-releases-2025-update-to-the-international-classification-of-diseases-%28icd-11%29&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;International Classification of Diseases 11th Revision (ICD-11)&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; as a predefined detection entry. The new dataset can be found in the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/dlp-profiles/predefined-profiles/#health-information&quot;&gt;Health Information&lt;/a&gt; predefined profile.&lt;/p&gt;
&lt;p&gt;ICD-10 dataset remains available for use.&lt;/p&gt;</description><pubDate>Mon, 14 Apr 2025 00:00:00 GMT</pubDate><product>Data Loss Prevention</product><category>Data Loss Prevention</category></item><item><title>Gateway - HTTP redirect and custom block page redirect</title><link>https://docs.infinitegaming.org/changelog/post/2025-04-11-http-redirect-custom-block-page-redirect/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-04-11-http-redirect-custom-block-page-redirect/</guid><description>&lt;p&gt;You can now use more flexible redirect capabilities in Cloudflare One with Gateway.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A new &lt;strong&gt;Redirect&lt;/strong&gt; action is available in the HTTP policy builder, allowing admins to redirect users to any URL when their request matches a policy. You can choose to preserve the original URL and query string, and optionally include policy context via query parameters.&lt;/li&gt;
&lt;li&gt;For &lt;strong&gt;Block&lt;/strong&gt; actions, admins can now configure a custom URL to display when access is denied. This block page redirect is set at the account level and can be overridden in DNS or HTTP policies. Policy context can also be passed along in the URL.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Learn more in our documentation for &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/#redirect&quot;&gt;HTTP Redirect&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/reusable-components/custom-pages/gateway-block-page/#redirect-to-a-block-page&quot;&gt;Block page redirect&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 11 Apr 2025 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Stream - Signed URLs and Infrastructure Improvements on Stream Live WebRTC Beta</title><link>https://docs.infinitegaming.org/changelog/post/2025-04-14-webrtc-beta-signed-urls/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-04-14-webrtc-beta-signed-urls/</guid><description>&lt;p&gt;Cloudflare &lt;a href=&quot;https://docs.infinitegaming.org/stream/&quot;&gt;Stream&lt;/a&gt; has completed an infrastructure upgrade for our &lt;a href=&quot;https://docs.infinitegaming.org/stream/webrtc-beta/&quot;&gt;Live WebRTC beta&lt;/a&gt; support which brings increased scalability and improved playback performance to all customers. WebRTC allows broadcasting directly from a browser (or supported WHIP client) with ultra-low latency to tens of thousands of concurrent viewers across the globe.&lt;/p&gt;
&lt;p&gt;Additionally, as part of this upgrade, the WebRTC beta now supports Signed URLs to protect playback, just like our standard live stream options (HLS/DASH).&lt;/p&gt;
&lt;p&gt;For more information, learn about the &lt;a href=&quot;https://docs.infinitegaming.org/stream/webrtc-beta/&quot;&gt;Stream Live WebRTC beta&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 11 Apr 2025 00:00:00 GMT</pubDate><product>Stream</product><category>Stream</category></item><item><title>Access - Cloudflare Zero Trust SCIM User and Group Provisioning Logs</title><link>https://docs.infinitegaming.org/changelog/post/2025-04-09-SCIM-provisioning-logs/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-04-09-SCIM-provisioning-logs/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/users/scim&quot;&gt;Cloudflare Zero Trust SCIM provisioning&lt;/a&gt; now has a full audit log of all create, update and delete event from any SCIM Enabled IdP. The &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/logs/dashboard-logs/scim-logs/&quot;&gt;SCIM logs&lt;/a&gt; support filtering by IdP, Event type, Result and many more fields. This will help with debugging user and group update issues and questions.&lt;/p&gt;
&lt;p&gt;SCIM logs can be found on the Zero Trust Dashboard under &lt;strong&gt;Logs&lt;/strong&gt; -&amp;gt; &lt;strong&gt;SCIM provisioning&lt;/strong&gt;.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2318,height=1060,format=webp/_astro/example-scim-log.Bv5Zqckh.png&quot; alt=&quot;Example SCIM Logs&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2318&quot; height=&quot;1060&quot;&gt;</description><pubDate>Wed, 09 Apr 2025 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Workers - Investigate your Workers with the Query Builder in the new Observability dashboard</title><link>https://docs.infinitegaming.org/changelog/post/2025-04-09-qb-workers-logs-ga/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-04-09-qb-workers-logs-ga/</guid><description>
&lt;p&gt;The &lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/workers-and-pages/observability/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Workers Observability dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; offers a single place to investigate and explore your &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/logs/workers-logs&quot;&gt;Workers Logs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;Overview&lt;/strong&gt; tab shows logs from all your Workers in one place. The &lt;strong&gt;Invocations&lt;/strong&gt; view groups logs together by invocation, which refers to the specific trigger that started the execution of the Worker (i.e. fetch). The &lt;strong&gt;Events&lt;/strong&gt; view shows logs in the order they were produced, based on timestamp. Previously, you could only view logs for a single Worker.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1680,height=626,format=webp/_astro/2025-04-09-workers-observability-overview.BKVvdscp.png&quot; alt=&quot;Workers Observability Overview Tab&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1680&quot; height=&quot;626&quot;&gt;
&lt;p&gt;The &lt;strong&gt;Investigate&lt;/strong&gt; tab presents a Query Builder, which helps you write structured queries to investigate and visualize your logs. The Query Builder can help answer questions such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which paths are experiencing the most 5XX errors?&lt;/li&gt;
&lt;li&gt;What is the wall time distribution by status code for my Worker?&lt;/li&gt;
&lt;li&gt;What are the slowest requests, and where are they coming from?&lt;/li&gt;
&lt;li&gt;Who are my top N users?&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2650,height=1318,format=webp/_astro/2025-04-09-query-builder.CaW9IZza.png&quot; alt=&quot;Workers Observability Overview Tab&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2650&quot; height=&quot;1318&quot;&gt;
&lt;p&gt;The Query Builder can use any field that you store in your logs as a key to visualize, filter, and group by. Use the Query Builder to quickly access your data, build visualizations, save queries, and share them with your team.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;workers-logs-is-now-generally-available&quot;&gt;Workers Logs is now Generally Available&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#workers-logs-is-now-generally-available&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/logs/workers-logs&quot;&gt;Workers Logs&lt;/a&gt; is now Generally Available. With a &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/logs/workers-logs/#enable-workers-logs&quot;&gt;small change&lt;/a&gt; to your Wrangler configuration, Workers Logs ingests, indexes, and stores all logs emitted from your Workers for up to 7 days.&lt;/p&gt;
&lt;p&gt;We&apos;ve introduced a number of changes during our beta period, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dashboard enhancements with customizable fields as columns in the Logs view and support for invocation-based grouping&lt;/li&gt;
&lt;li&gt;Performance improvements to ensure no adverse impact&lt;/li&gt;
&lt;li&gt;Public &lt;a href=&quot;https://developers.cloudflare.com/api/resources/workers/subresources/observability/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;API endpoints&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; for broader consumption&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The API documents three endpoints: list the keys in the telemetry dataset, run a query, and list the unique values for a key. For more, visit our &lt;a href=&quot;https://developers.cloudflare.com/api/resources/workers/subresources/observability/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;REST API documentation&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Visit the &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/query-builder&quot;&gt;docs&lt;/a&gt; to learn more about the capabilities and methods exposed by the Query Builder. Start using Workers Logs and the Query Builder today by enabling observability for your Workers:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;observability&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;enabled&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;logs&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;invocation_logs&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;			&quot;head_sampling_rate&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt; // optional. default = 1.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;observability&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;enabled = &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  [&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;observability&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;logs&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  invocation_logs = &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  head_sampling_rate = &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;</description><pubDate>Wed, 09 Apr 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - CPU time and Wall time now published for Workers Invocations</title><link>https://docs.infinitegaming.org/changelog/post/2025-04-09-workers-timing/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-04-09-workers-timing/</guid><description>&lt;p&gt;You can now observe and investigate the CPU time and Wall time for every Workers Invocations.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/logs/workers-logs&quot;&gt;Workers Logs&lt;/a&gt;, CPU time and Wall time are surfaced in the &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/logs/workers-logs/#invocation-logs&quot;&gt;Invocation Log&lt;/a&gt;..&lt;/li&gt;
&lt;li&gt;For &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/logs/tail-workers&quot;&gt;Tail Workers&lt;/a&gt;, CPU time and Wall time are surfaced at the top level of the &lt;a href=&quot;https://docs.infinitegaming.org/logs/logpush/logpush-job/datasets/account/workers_trace_events&quot;&gt;Workers Trace Events object&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;For &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/logs/logpush&quot;&gt;Workers Logpush&lt;/a&gt;, CPU and Wall time are surfaced at the top level of the &lt;a href=&quot;https://docs.infinitegaming.org/logs/logpush/logpush-job/datasets/account/workers_trace_events&quot;&gt;Workers Trace Events object&lt;/a&gt;. All new jobs will have these new fields included by default. Existing jobs need to be updated to include CPU time and Wall time.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can use a Workers Logs filter to search for logs where Wall time exceeds 100ms.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=652,height=436,format=webp/_astro/2025-04-09-wall-time-filter.CT-VQyTS.png&quot; alt=&quot;Workers Logs Wall Time Filter&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;652&quot; height=&quot;436&quot;&gt;
&lt;p&gt;You can also use the Workers Observability &lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/workers-and-pages/observability/investigate&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Query Builder&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; to find the median CPU time and median Wall time for all of your Workers.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2650,height=1318,format=webp/_astro/2025-04-09-query-builder.CaW9IZza.png&quot; alt=&quot;Query Builder filter&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2650&quot; height=&quot;1318&quot;&gt;</description><pubDate>Wed, 09 Apr 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Deploy a Workers application in seconds with one-click</title><link>https://docs.infinitegaming.org/changelog/post/2025-04-08-deploy-to-cloudflare-button/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-04-08-deploy-to-cloudflare-button/</guid><description>&lt;p&gt;You can now add a &lt;a href=&quot;https://docs.infinitegaming.org/workers/platform/deploy-buttons/&quot;&gt;Deploy to Cloudflare&lt;/a&gt; button to the README of your Git repository containing a Workers application — making it simple for other developers to quickly set up and deploy your project!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://deploy.workers.cloudflare.com/?url=https://github.com/cloudflare/templates/tree/main/saas-admin-template&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;img src=&quot;https://deploy.workers.cloudflare.com/button&quot; alt=&quot;Deploy to Cloudflare&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Deploy to Cloudflare button:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Creates a new Git repository on your GitHub/ GitLab account&lt;/strong&gt;: Cloudflare will automatically clone and create a new repository on your account, so you can continue developing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatically provisions resources the app needs&lt;/strong&gt;: If your repository requires Cloudflare primitives like a &lt;a href=&quot;https://docs.infinitegaming.org/kv/&quot;&gt;Workers KV namespace&lt;/a&gt;, a &lt;a href=&quot;https://docs.infinitegaming.org/d1/&quot;&gt;D1 database&lt;/a&gt;, or an &lt;a href=&quot;https://docs.infinitegaming.org/r2/&quot;&gt;R2 bucket&lt;/a&gt;, Cloudflare will automatically provision them on your account and bind them to your Worker upon deployment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configures Workers Builds (CI/CD)&lt;/strong&gt;: Every new push to your production branch on your newly created repository will automatically build and deploy courtesy of &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/&quot;&gt;Workers Builds&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adds preview URLs to each pull request&lt;/strong&gt;: If you&apos;d like to test your changes before deploying, you can push changes to a &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/build-branches/#configure-non-production-branch-builds&quot;&gt;non-production branch&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/workers/versions-and-deployments/preview-urls/&quot;&gt;preview URLs&lt;/a&gt; will be generated and &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/git-integration/github-integration/#pull-request-comment&quot;&gt;posted back to GitHub as a comment&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=4306,height=1344,format=webp/_astro/dtw-user-flow.zgS3Y8iK.png&quot; alt=&quot;Import repo or choose template&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;4306&quot; height=&quot;1344&quot;&gt;
&lt;p&gt;To create a Deploy to Cloudflare button in your README, you can add the following snippet, including your Git repository URL:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;md&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;md&quot; data-nb-lang=&quot;md&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb-shiki-9m66vu&quot;&gt;![Deploy to Cloudflare](https://deploy.workers.cloudflare.com/button)&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;](&lt;/span&gt;&lt;span class=&quot;nb-shiki-1cpqx6&quot;&gt;https://deploy.workers.cloudflare.com/?url=&amp;lt;YOUR_GIT_REPO_URL&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Check out our &lt;a href=&quot;https://docs.infinitegaming.org/workers/platform/deploy-buttons/&quot;&gt;documentation&lt;/a&gt; for more information on how to set up a deploy button for your application and best practices to ensure a successful deployment for other developers.&lt;/p&gt;</description><pubDate>Tue, 08 Apr 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers, Workers for Platforms - Full-stack frameworks are now Generally Available on Cloudflare Workers</title><link>https://docs.infinitegaming.org/changelog/post/2025-04-08-fullstack-on-workers/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-04-08-fullstack-on-workers/</guid><description>&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1200,height=675,format=webp/_astro/fullstack-on-workers.D7fotYu2.png&quot; alt=&quot;Full-stack on Cloudflare Workers&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1200&quot; height=&quot;675&quot;&gt;
&lt;p&gt;The following full-stack frameworks now have Generally Available (&quot;GA&quot;) adapters for Cloudflare Workers, and are ready for you to use in production:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/framework-guides/web-apps/react-router/&quot;&gt;React Router v7 (Remix)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/framework-guides/web-apps/astro/&quot;&gt;Astro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/framework-guides/web-apps/more-web-frameworks/hono/&quot;&gt;Hono&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/framework-guides/web-apps/vue/&quot;&gt;Vue.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/framework-guides/web-apps/more-web-frameworks/nuxt/&quot;&gt;Nuxt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/framework-guides/web-apps/sveltekit/&quot;&gt;Svelte (SvelteKit)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;And &lt;a href=&quot;https://docs.infinitegaming.org/workers/framework-guides/&quot;&gt;more&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following frameworks are now in &lt;strong&gt;beta&lt;/strong&gt;, with GA support coming very soon:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/framework-guides/web-apps/nextjs/&quot;&gt;Next.js&lt;/a&gt;, supported through &lt;a href=&quot;https://opennext.js.org/cloudflare&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@opennextjs/cloudflare&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; is now &lt;code&gt;v1.0-beta&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/framework-guides/web-apps/more-web-frameworks/angular/&quot;&gt;Angular&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/framework-guides/web-apps/more-web-frameworks/solid/&quot;&gt;SolidJS (SolidStart)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can also build complete full-stack apps on Workers &lt;strong&gt;without a framework&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can &lt;a href=&quot;https://blog.cloudflare.com/introducing-the-cloudflare-vite-plugin&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;“just use Vite&quot;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and React together, and build a back-end API in the same Worker. Follow our &lt;a href=&quot;https://docs.infinitegaming.org/workers/vite-plugin/tutorial/&quot;&gt;React SPA with an API tutorial&lt;/a&gt; to learn how.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Get started building today with our &lt;a href=&quot;https://docs.infinitegaming.org/workers/framework-guides/&quot;&gt;framework guides&lt;/a&gt;&lt;/strong&gt;, or read our &lt;a href=&quot;https://blog.cloudflare.com/full-stack-development-on-cloudflare-workers&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Developer Week 2025 blog post&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; about all the updates to building full-stack applications on Workers.&lt;/p&gt;</description><pubDate>Tue, 08 Apr 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category><category>Workers for Platforms</category></item><item><title>Workers - Improved support for Node.js Crypto and TLS APIs in Workers</title><link>https://docs.infinitegaming.org/changelog/post/2025-04-08-nodejs-crypto-and-tls/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-04-08-nodejs-crypto-and-tls/</guid><description>
&lt;p&gt;When using a Worker with the &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/nodejs/&quot;&gt;&lt;code&gt;nodejs_compat&lt;/code&gt;&lt;/a&gt; compatibility flag enabled,
the following Node.js APIs are now available:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/nodejs/crypto/&quot;&gt;&lt;code&gt;node:crypto&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/nodejs/tls/&quot;&gt;&lt;code&gt;node:tls&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This make it easier to reuse existing Node.js code in Workers or use npm packages that depend on these APIs.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;nodecrypto&quot;&gt;node:crypto&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#nodecrypto&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The full &lt;a href=&quot;https://nodejs.org/api/crypto.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;node:crypto&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; API is now available in Workers.&lt;/p&gt;
&lt;p&gt;You can use it to verify and sign data:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { sign, verify } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;node:crypto&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; signature&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; sign&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;sha256&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;-data to sign-&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;PRIVATE_KEY&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; verified&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; verify&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;sha256&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;-data to sign-&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;PUBLIC_KEY&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, signature);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Or, to encrypt and decrypt data:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { publicEncrypt, privateDecrypt } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;node:crypto&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; encrypted&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; publicEncrypt&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;PUBLIC_KEY&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;some data&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; plaintext&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; privateDecrypt&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;PRIVATE_KEY&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, encrypted);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;See the &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/nodejs/crypto/&quot;&gt;&lt;code&gt;node:crypto&lt;/code&gt; documentation&lt;/a&gt; for more information.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;nodetls&quot;&gt;node:tls&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#nodetls&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The following APIs from &lt;code&gt;node:tls&lt;/code&gt; are now available:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://nodejs.org/api/tls.html#tlsconnectoptions-callback&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;connect&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://nodejs.org/api/tls.html#class-tlstlssocket&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;TLSSocket&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://nodejs.org/api/tls.html#tlscheckserveridentityhostname-cert&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;checkServerIdentity&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://nodejs.org/api/tls.html#tlscreatesecurecontextoptions&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;createSecureContext&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This enables secure connections over TLS (Transport Layer Security) to external services.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { connect } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;node:tls&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// ... in a request handler ...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; connectionOptions&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { key: env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;KEY&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, cert: env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;CERT&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; socket&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; connect&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(url, connectionOptions, () &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	if&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (socket.authorized) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		console.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Connection authorized&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;socket.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;data&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, (&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;data&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	console.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(data);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;socket.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;end&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, () &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	console.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;server ends connection&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;See the &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/nodejs/tls/&quot;&gt;&lt;code&gt;node:tls&lt;/code&gt; documentation&lt;/a&gt; for more information.&lt;/p&gt;</description><pubDate>Tue, 08 Apr 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - The Cloudflare Vite plugin is now Generally Available</title><link>https://docs.infinitegaming.org/changelog/post/2025-04-08-vite-plugin/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-04-08-vite-plugin/</guid><description>&lt;p&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/workers/vite-plugin/&quot;&gt;Cloudflare Vite plugin&lt;/a&gt; has &lt;a href=&quot;https://blog.cloudflare.com/introducing-the-cloudflare-vite-plugin&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;reached v1.0&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and is now Generally Available (&quot;GA&quot;).&lt;/p&gt;
&lt;p&gt;When you use &lt;code&gt;@cloudflare/vite-plugin&lt;/code&gt;, you can use Vite&apos;s local development server and build tooling, while ensuring that while developing, your code runs in &lt;a href=&quot;https://github.com/cloudflare/workerd&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;workerd&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, the open-source Workers runtime.&lt;/p&gt;
&lt;p&gt;This lets you get the best of both worlds for a full-stack app — you can use &lt;a href=&quot;https://vite.dev/guide/features.html#hot-module-replacement&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hot Module Replacement&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; from Vite right alongside &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/&quot;&gt;Durable Objects&lt;/a&gt; and other runtime APIs and bindings that are unique to Cloudflare Workers.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@cloudflare/vite-plugin&lt;/code&gt; is made possible by the new &lt;a href=&quot;https://vite.dev/guide/api-environment&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;environment API&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; in Vite, and was built &lt;a href=&quot;https://blog.cloudflare.com/introducing-the-cloudflare-vite-plugin&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;in partnership with the Vite team&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;framework-support&quot;&gt;Framework support&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#framework-support&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;You can build any type of application with &lt;code&gt;@cloudflare/vite-plugin&lt;/code&gt;, using any rendering mode, from single page applications (SPA) and static sites to server-side rendered (SSR) pages and API routes.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/framework-guides/web-apps/react-router/&quot;&gt;React Router v7 (Remix)&lt;/a&gt; is the first full-stack framework to provide full support for Cloudflare Vite plugin, allowing you to use all parts of Cloudflare&apos;s developer platform, without additional build steps.&lt;/p&gt;
&lt;p&gt;You can also build complete full-stack apps on Workers &lt;strong&gt;without a framework&lt;/strong&gt; — &lt;a href=&quot;https://blog.cloudflare.com/introducing-the-cloudflare-vite-plugin&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&quot;just use Vite&quot;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and React together, and build a back-end API in the same Worker. Follow our &lt;a href=&quot;https://docs.infinitegaming.org/workers/vite-plugin/tutorial/&quot;&gt;React SPA with an API tutorial&lt;/a&gt; to learn how.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;configuration&quot;&gt;Configuration&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#configuration&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;If you&apos;re already using &lt;a href=&quot;https://vite.dev/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Vite&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; in your build and development toolchain, you can start using our plugin with minimal changes to your &lt;code&gt;vite.config.ts&lt;/code&gt;:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;vite.config.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { defineConfig } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;vite&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { cloudflare } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;@cloudflare/vite-plugin&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; defineConfig&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	plugins: [&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;cloudflare&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;()],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Take a look at the &lt;a href=&quot;https://docs.infinitegaming.org/workers/vite-plugin/&quot;&gt;documentation for our Cloudflare Vite plugin&lt;/a&gt; for more information!&lt;/p&gt;</description><pubDate>Tue, 08 Apr 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Capture up to 256 KB of log events in each Workers Invocation</title><link>https://docs.infinitegaming.org/changelog/post/2025-04-07-increase-trace-events-limit/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-04-07-increase-trace-events-limit/</guid><description>&lt;p&gt;You can now capture a maximum of 256 KB of log events per Workers invocation, helping you gain better visibility into application behavior.&lt;/p&gt;
&lt;p&gt;All console.log() statements, exceptions, request metadata, and headers are automatically captured during the Worker invocation and emitted
as &lt;a href=&quot;https://docs.infinitegaming.org/logs/logpush/logpush-job/datasets/account/workers_trace_events&quot;&gt;JSON object&lt;/a&gt;. &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/logs/workers-logs&quot;&gt;Workers Logs&lt;/a&gt; deserializes
this object before indexing the fields and storing them. You can also capture, transform, and export the JSON object in a
&lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/logs/tail-workers&quot;&gt;Tail Worker&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;256 KB is a 2x increase from the previous 128 KB limit. After you exceed this limit, further context associated with the request will not be
recorded in your logs.&lt;/p&gt;
&lt;p&gt;This limit is automatically applied to all Workers.&lt;/p&gt;</description><pubDate>Mon, 07 Apr 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Email security - CASB and Email security</title><link>https://docs.infinitegaming.org/changelog/post/2025-04-01-casb-email-security/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-04-01-casb-email-security/</guid><description>&lt;p&gt;With Email security, you get two free CASB integrations.&lt;/p&gt;
&lt;p&gt;Use one SaaS integration for Email security to sync with your directory of users, take actions on delivered emails, automatically provide EMLs for reclassification requests for clean emails, discover CASB findings and more.&lt;/p&gt;
&lt;p&gt;With the other integration, you can have a separate SaaS integration for CASB findings for another SaaS provider.&lt;/p&gt;
&lt;p&gt;Refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/cloud-and-saas/&quot;&gt;Add an integration&lt;/a&gt; to learn more about this feature.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=727,height=502,format=webp/_astro/CASB-EmailSecurity.B1wd9be2.png&quot; alt=&quot;CASB-EmailSecurity&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;727&quot; height=&quot;502&quot;&gt;
&lt;p&gt;This feature is available across these Email security packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise + PhishGuard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Tue, 01 Apr 2025 23:22:49 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Workers - Run Workers for up to 5 minutes of CPU-time</title><link>https://docs.infinitegaming.org/changelog/post/2025-03-25-higher-cpu-limits/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-03-25-higher-cpu-limits/</guid><description>
&lt;p&gt;You can now run a Worker for up to 5 minutes of CPU time for each request.&lt;/p&gt;
&lt;p&gt;Previously, each Workers request ran for a maximum of 30 seconds of CPU time — that is the time that a Worker is actually performing a task (we still allowed unlimited wall-clock time, in case you were waiting on slow resources). This
meant that some compute-intensive tasks were impossible to do with a Worker. For instance,
you might want to take the cryptographic hash of a large file from R2. If
this computation ran for over 30 seconds, the Worker request would have timed out.&lt;/p&gt;
&lt;p&gt;By default, Workers are still limited to 30 seconds of CPU time. This protects developers
from incurring accidental cost due to buggy code.&lt;/p&gt;
&lt;p&gt;By changing the &lt;code&gt;cpu_ms&lt;/code&gt; value in your Wrangler configuration, you can opt in to
any value up to 300,000 (5 minutes).&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;	// ...rest of your configuration...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;limits&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;cpu_ms&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;300000&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;	// ...rest of your configuration...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;limits&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;cpu_ms = &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;300_000&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;aside role=&quot;note&quot; aria-label=&quot;Note&quot; class=&quot;aside-card flex items-start gap-3 rounded-lg px-4 py-3 my-4&quot; style=&quot;--_c: var(--nb-info); --_t: var(--nb-info-muted);&quot; data-astro-cid-znle5jil&gt;&lt;span class=&quot;flex h-[1.375em] shrink-0 items-center&quot; aria-hidden=&quot;true&quot; data-astro-cid-znle5jil&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[1em] w-[1em]&quot; data-astro-cid-znle5jil=&quot;true&quot; data-icon=&quot;ph:info&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24m0 192a88 88 0 1 1 88-88a88.1 88.1 0 0 1-88 88m16-40a8 8 0 0 1-8 8a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 8 8m-32-92a12 12 0 1 1 12 12a12 12 0 0 1-12-12&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div class=&quot;flex min-w-0 flex-1 flex-col gap-0.5&quot; data-astro-cid-znle5jil&gt;&lt;p class=&quot;m-0 text-base leading-snug font-semibold&quot; data-astro-cid-znle5jil&gt;Note&lt;/p&gt;&lt;div class=&quot;aside-card-body text-sm leading-normal&quot; data-astro-cid-znle5jil&gt;&lt;p&gt;CPU time is the amount of time the CPU actually spends doing work during a given request.
If a Worker&apos;s request makes a sub-request and waits for that request to come back before
doing additional work, this time spent waiting &lt;strong&gt;is not&lt;/strong&gt; counted towards CPU time.&lt;/p&gt;&lt;p&gt;Worker requests could run for more than 30 seconds of total time prior to this change — only
CPU time was limited.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;For more information on the updates limits, see the documentation on &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/configuration/#limits&quot;&gt;Wrangler configuration for &lt;code&gt;cpu_ms&lt;/code&gt;&lt;/a&gt;
and on &lt;a href=&quot;https://docs.infinitegaming.org/workers/platform/limits/#cpu-time&quot;&gt;Workers CPU time limits&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For building long-running tasks on Cloudflare, we also recommend checking out &lt;a href=&quot;https://docs.infinitegaming.org/workflows/&quot;&gt;Workflows&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/queues/&quot;&gt;Queues&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 26 Mar 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Source Maps are Generally Available</title><link>https://docs.infinitegaming.org/changelog/post/2025-03-25-gzip-source-maps/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-03-25-gzip-source-maps/</guid><description>
&lt;p&gt;Source maps are now Generally Available (GA). You can now be uploaded with a maximum gzipped size of 15 MB.
Previously, the maximum size limit was 15 MB uncompressed.&lt;/p&gt;
&lt;p&gt;Source maps help map between the original source code and the transformed/minified code that gets deployed
to production. By uploading your source map, you allow Cloudflare to map the stack trace from exceptions
onto the original source code making it easier to debug.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1908,height=198,format=webp/_astro/without-source-map.ByYR83oU.png&quot; alt=&quot;Stack Trace without Source Map remapping&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1908&quot; height=&quot;198&quot;&gt;
&lt;p&gt;With &lt;strong&gt;no source maps uploaded&lt;/strong&gt;: notice how all the Javascript has been minified to one file, so the stack trace is missing information on file name, shows incorrect line numbers, and incorrectly references &lt;code&gt;js&lt;/code&gt; instead of &lt;code&gt;ts&lt;/code&gt;.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1850,height=238,format=webp/_astro/with-source-map.PipytmVe.png&quot; alt=&quot;Stack Trace with Source Map remapping&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1850&quot; height=&quot;238&quot;&gt;
&lt;p&gt;With &lt;strong&gt;source maps uploaded&lt;/strong&gt;: all methods reference the correct files and line numbers.&lt;/p&gt;
&lt;p&gt;Uploading source maps and stack trace remapping happens out of band from the Worker execution,
so source maps do not affect upload speed, bundle size, or cold starts. The remapped stack
traces are accessible through Tail Workers, Workers Logs, and Workers Logpush.&lt;/p&gt;
&lt;p&gt;To enable source maps, add the following to your
&lt;a href=&quot;https://docs.infinitegaming.org/pages/functions/source-maps/&quot;&gt;Pages Function&apos;s&lt;/a&gt; or &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/source-maps/&quot;&gt;Worker&apos;s&lt;/a&gt; wrangler configuration:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;upload_source_maps&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;upload_source_maps = &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;</description><pubDate>Tue, 25 Mar 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers, Pages, WAF - New Managed WAF rule for Next.js CVE-2025-29927.</title><link>https://docs.infinitegaming.org/changelog/post/2025-03-22-next-js-vulnerability-waf/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-03-22-next-js-vulnerability-waf/</guid><description>
&lt;p&gt;&lt;strong&gt;Update: Mon Mar 24th, 11PM UTC&lt;/strong&gt;: Next.js has made further changes to address a smaller vulnerability introduced in the patches made to its middleware handling. Users should upgrade to Next.js versions &lt;code&gt;15.2.4&lt;/code&gt;, &lt;code&gt;14.2.26&lt;/code&gt;, &lt;code&gt;13.5.10&lt;/code&gt; or &lt;code&gt;12.3.6&lt;/code&gt;. &lt;strong&gt;If you are unable to immediately upgrade or are running an older version of Next.js, you can enable the WAF rule described in this changelog as a mitigation&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update: Mon Mar 24th, 8PM UTC&lt;/strong&gt;: Next.js has now &lt;a href=&quot;https://github.com/advisories/GHSA-f82v-jwr5-mffw&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;backported the patch for this vulnerability&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; to cover Next.js v12 and v13. Users on those versions will need to patch to &lt;code&gt;13.5.9&lt;/code&gt; and &lt;code&gt;12.3.5&lt;/code&gt; (respectively) to mitigate the vulnerability.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update: Sat Mar 22nd, 4PM UTC&lt;/strong&gt;: We have changed this WAF rule to opt-in only, as sites that use auth middleware with third-party auth vendors were observing failing requests.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We strongly recommend updating your version of Next.js (if eligible)&lt;/strong&gt; to the patched versions, as your app will otherwise be vulnerable to an authentication bypass attack regardless of auth provider.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;enable-the-managed-rule-strongly-recommended&quot;&gt;Enable the Managed Rule (strongly recommended)&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#enable-the-managed-rule-strongly-recommended&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;This rule is opt-in only for sites on the Pro plan or above in the &lt;a href=&quot;https://docs.infinitegaming.org/waf/managed-rules/&quot;&gt;WAF managed ruleset&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To enable the rule:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Head to Security &amp;gt; WAF &amp;gt; Managed rules in the Cloudflare dashboard for the zone (website) you want to protect.&lt;/li&gt;
&lt;li&gt;Click the three dots next to &lt;strong&gt;Cloudflare Managed Ruleset&lt;/strong&gt; and choose &lt;strong&gt;Edit&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Scroll down and choose &lt;strong&gt;Browse Rules&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Search for &lt;strong&gt;CVE-2025-29927&lt;/strong&gt; (ruleId: &lt;code&gt;34583778093748cc83ff7b38f472013e&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Change the &lt;strong&gt;Status&lt;/strong&gt; to &lt;strong&gt;Enabled&lt;/strong&gt; and the &lt;strong&gt;Action&lt;/strong&gt; to &lt;strong&gt;Block&lt;/strong&gt;. You can optionally set the rule to Log, to validate potential impact before enabling it. Log will not block requests.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Next&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Scroll down and choose &lt;strong&gt;Save&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This will enable the WAF rule and block requests with the &lt;code&gt;x-middleware-subrequest&lt;/code&gt; header regardless of Next.js version.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;create-a-waf-rule-manual&quot;&gt;Create a WAF rule (manual)&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#create-a-waf-rule-manual&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;For users on the Free plan, or who want to define a more specific rule, you can create a &lt;a href=&quot;https://docs.infinitegaming.org/waf/custom-rules/create-dashboard/&quot;&gt;Custom WAF rule&lt;/a&gt; to block requests with the &lt;code&gt;x-middleware-subrequest&lt;/code&gt; header regardless of Next.js version.&lt;/p&gt;
&lt;p&gt;To create a custom rule:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Head to Security &amp;gt; WAF &amp;gt; Custom rules in the Cloudflare dashboard for the zone (website) you want to protect.&lt;/li&gt;
&lt;li&gt;Give the rule a name - e.g. &lt;code&gt;next-js-CVE-2025-29927&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Set the matching parameters for the rule match any request where the &lt;code&gt;x-middleware-subrequest&lt;/code&gt; header &lt;code&gt;exists&lt;/code&gt; per the rule expression below.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;len(http.request.headers[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;&quot;x-middleware-subrequest&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; 0&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;Set the action to &apos;block&apos;. If you want to observe the impact before blocking requests, set the action to &apos;log&apos; (and edit the rule later).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deploy&lt;/strong&gt; the rule.&lt;/li&gt;
&lt;/ol&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2116,height=1148,format=webp/_astro/waf-rule-cve-2025-29927.0i0XiweZ.png&quot; alt=&quot;Next.js CVE-2025-29927 WAF rule&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2116&quot; height=&quot;1148&quot;&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;nextjs-cve-2025-29927&quot;&gt;Next.js CVE-2025-29927&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#nextjs-cve-2025-29927&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;We&apos;ve made a WAF (Web Application Firewall) rule available to all sites on Cloudflare to protect against the &lt;a href=&quot;https://github.com/advisories/GHSA-f82v-jwr5-mffw&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Next.js authentication bypass vulnerability&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; (&lt;code&gt;CVE-2025-29927&lt;/code&gt;) published on March 21st, 2025.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: This rule is not enabled by default as it blocked requests across sites for specific authentication middleware.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This managed rule protects sites using Next.js on Workers and Pages, as well as sites using Cloudflare to protect Next.js applications hosted elsewhere.&lt;/li&gt;
&lt;li&gt;This rule has been made available (but not enabled by default) to all sites as part of our &lt;a href=&quot;https://docs.infinitegaming.org/waf/managed-rules/reference/cloudflare-managed-ruleset/&quot;&gt;WAF Managed Ruleset&lt;/a&gt; and blocks requests that attempt to bypass authentication in Next.js applications.&lt;/li&gt;
&lt;li&gt;The vulnerability affects almost all Next.js versions, and has been fully patched in Next.js &lt;code&gt;14.2.26&lt;/code&gt; and &lt;code&gt;15.2.4&lt;/code&gt;. Earlier, interim releases did not fully patch this vulnerability.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Users on older versions of Next.js (&lt;code&gt;11.1.4&lt;/code&gt; to &lt;code&gt;13.5.6&lt;/code&gt;) did not originally have a patch available&lt;/strong&gt;, but this the patch for this vulnerability and a subsequent additional patch have been backported to Next.js versions &lt;code&gt;12.3.6&lt;/code&gt; and &lt;code&gt;13.5.10&lt;/code&gt; as of Monday, March 24th. Users on Next.js v11 will need to deploy the stated workaround or enable the WAF rule.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The managed WAF rule mitigates this by blocking &lt;em&gt;external&lt;/em&gt; user requests with the &lt;code&gt;x-middleware-subrequest&lt;/code&gt; header regardless of Next.js version, but we recommend users using Next.js 14 and 15 upgrade to the patched versions of Next.js as an additional mitigation.&lt;/p&gt;</description><pubDate>Sat, 22 Mar 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category><category>Pages</category><category>WAF</category></item><item><title>Workers, Pages - Smart Placement is smarter about running Workers and Pages Functions in the best locations</title><link>https://docs.infinitegaming.org/changelog/post/2025-03-22-smart-placement-stablization/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-03-22-smart-placement-stablization/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/placement/&quot;&gt;Smart Placement&lt;/a&gt; is a unique Cloudflare feature that can make decisions to move your Worker to run in a more optimal location (such as closer to a database). Instead of always running in the default location (the one closest to where the request is received), Smart Placement uses certain “heuristics” (rules and thresholds) to decide if a different location might be faster or more efficient.&lt;/p&gt;
&lt;p&gt;Previously, if these heuristics weren&apos;t consistently met, your Worker would revert to running in the default location—even after it had been optimally placed. This meant that if your Worker received minimal traffic for a period of time, the system would reset to the default location, rather than remaining in the optimal one.&lt;/p&gt;
&lt;p&gt;Now, once Smart Placement has identified and assigned an optimal location, temporarily dropping below the heuristic thresholds will not force a return to default locations. For example in the previous algorithm, a drop in requests for a few days might return to default locations and heuristics would have to be met again. This was problematic for workloads that made requests to a geographically located resource every few days or longer. In this scenario, your Worker would never get placed optimally. This is no longer the case.&lt;/p&gt;</description><pubDate>Sat, 22 Mar 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category><category>Pages</category></item><item><title>Gateway - Secure DNS Locations Management User Role</title><link>https://docs.infinitegaming.org/changelog/post/2025-03-21-pdns-user-locations-role/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-03-21-pdns-user-locations-role/</guid><description>&lt;p&gt;We&apos;re excited to introduce the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/resolvers-and-proxies/dns/locations/#secure-dns-locations&quot;&gt;&lt;strong&gt;Cloudflare Zero Trust Secure DNS Locations Write role&lt;/strong&gt;&lt;/a&gt;, designed to provide DNS filtering customers with granular control over third-party access when configuring their Protective DNS (PDNS) solutions.&lt;/p&gt;
&lt;p&gt;Many DNS filtering customers rely on external service partners to manage their DNS location endpoints. This role allows you to grant access to external parties to administer DNS locations without overprovisioning their permissions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Secure DNS Location Requirements:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Mandate usage of &lt;a href=&quot;https://developers.cloudflare.com/cloudflare-one/networks/resolvers-and-proxies/dns/locations/dns-resolver-ips/#bring-your-own-dns-resolver-ip&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bring your own DNS resolver IP addresses&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; if available on the account.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Require source network filtering for IPv4/IPv6/DoT endpoints; token authentication or source network filtering for the DoH endpoint.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can assign the new role via Cloudflare Dashboard (&lt;code&gt;Manage Accounts &amp;gt; Members&lt;/code&gt;) or via API. For more information, refer to the &lt;a href=&quot;https://developers.cloudflare.com/cloudflare-one/networks/resolvers-and-proxies/dns/locations/#secure-dns-locations&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Secure DNS Locations documentation&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 21 Mar 2025 00:00:00 GMT</pubDate><product>Gateway</product><category>Gateway</category></item><item><title>Cloudflare One Client - Cloudflare One Agent for Android (version 2.4)</title><link>https://docs.infinitegaming.org/changelog/post/2025-03-17-warp-ga-android/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-03-17-warp-ga-android/</guid><description>&lt;p&gt;A new GA release for the Android Cloudflare One Agent is now available in the &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.cloudflare.cloudflareoneagent&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Google Play Store&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. This release includes a new feature allowing &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/manual-deployment/#enroll-using-a-url&quot;&gt;team name insertion by URL&lt;/a&gt; during enrollment, as well as fixes and minor improvements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improved in-app error messages.&lt;/li&gt;
&lt;li&gt;Improved mobile client login with support for &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/manual-deployment/#enroll-using-a-url&quot;&gt;team name insertion by URL&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Fixed an issue preventing admin split tunnel settings taking priority for traffic from certain applications.&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Mon, 17 Mar 2025 00:00:00 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Cloudflare One Client - Cloudflare One Agent for iOS (version 1.10)</title><link>https://docs.infinitegaming.org/changelog/post/2025-03-17-warp-ga-ios/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-03-17-warp-ga-ios/</guid><description>&lt;p&gt;A new GA release for the iOS Cloudflare One Agent is now available in the &lt;a href=&quot;https://apps.apple.com/us/app/cloudflare-one-agent/id6443476492&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;iOS App Store&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. This release includes a new feature allowing &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/manual-deployment/#enroll-using-a-url&quot;&gt;team name insertion by URL&lt;/a&gt; during enrollment, as well as fixes and minor improvements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes and improvements&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improved in-app error messages.&lt;/li&gt;
&lt;li&gt;Improved mobile client login with support for &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/devices/cloudflare-one-client/deployment/manual-deployment/#enroll-using-a-url&quot;&gt;team name insertion by URL&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Bug fixes and performance improvements.&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Mon, 17 Mar 2025 00:00:00 GMT</pubDate><product>Cloudflare One Client</product><category>Cloudflare One Client</category></item><item><title>Workers - Import `env` to access bindings in your Worker&apos;s global scope</title><link>https://docs.infinitegaming.org/changelog/post/2025-03-17-importable-env/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-03-17-importable-env/</guid><description>
&lt;p&gt;You can now access &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/bindings/&quot;&gt;bindings&lt;/a&gt;
from anywhere in your Worker by importing the &lt;code&gt;env&lt;/code&gt; object from &lt;code&gt;cloudflare:workers&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Previously, &lt;code&gt;env&lt;/code&gt; could only be accessed during a request. This meant that
bindings could not be used in the top-level context of a Worker.&lt;/p&gt;
&lt;p&gt;Now, you can import &lt;code&gt;env&lt;/code&gt; and access bindings such as &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/secrets/&quot;&gt;secrets&lt;/a&gt;
or &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/environment-variables/&quot;&gt;environment variables&lt;/a&gt; in the
initial setup for your Worker:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { env } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;cloudflare:workers&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; ApiClient &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;example-api-client&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// API_KEY and LOG_LEVEL now usable in top-level scope&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; apiClient&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; ApiClient.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({ apiKey: env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;API_KEY&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; LOG_LEVEL&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;LOG_LEVEL&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; ||&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;info&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;	fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// you can use apiClient or LOG_LEVEL, configured before any request is handled&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;aside role=&quot;note&quot; aria-label=&quot;Note&quot; class=&quot;aside-card flex items-start gap-3 rounded-lg px-4 py-3 my-4&quot; style=&quot;--_c: var(--nb-info); --_t: var(--nb-info-muted);&quot; data-astro-cid-znle5jil&gt;&lt;span class=&quot;flex h-[1.375em] shrink-0 items-center&quot; aria-hidden=&quot;true&quot; data-astro-cid-znle5jil&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[1em] w-[1em]&quot; data-astro-cid-znle5jil=&quot;true&quot; data-icon=&quot;ph:info&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24m0 192a88 88 0 1 1 88-88a88.1 88.1 0 0 1-88 88m16-40a8 8 0 0 1-8 8a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 8 8m-32-92a12 12 0 1 1 12 12a12 12 0 0 1-12-12&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div class=&quot;flex min-w-0 flex-1 flex-col gap-0.5&quot; data-astro-cid-znle5jil&gt;&lt;p class=&quot;m-0 text-base leading-snug font-semibold&quot; data-astro-cid-znle5jil&gt;Note&lt;/p&gt;&lt;div class=&quot;aside-card-body text-sm leading-normal&quot; data-astro-cid-znle5jil&gt;&lt;p&gt;Workers do not allow I/O from outside a request context. This means that even
though &lt;code&gt;env&lt;/code&gt; is accessible from the top-level scope, you will not be able to access
every binding&apos;s methods.&lt;/p&gt;&lt;p&gt;For instance, environment variables and secrets are accessible, and you are able to
call &lt;code&gt;env.NAMESPACE.get&lt;/code&gt; to get a &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/api/stub/&quot;&gt;Durable Object stub&lt;/a&gt; in the
top-level context. However, calling methods on the Durable Object stub, making &lt;a href=&quot;https://docs.infinitegaming.org/kv/api/&quot;&gt;calls to a KV store&lt;/a&gt;,
and &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/bindings/service-bindings&quot;&gt;calling to other Workers&lt;/a&gt; will not work.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;Additionally, &lt;code&gt;env&lt;/code&gt; was normally accessed as a argument to a Worker&apos;s entrypoint handler,
such as &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/fetch/&quot;&gt;&lt;code&gt;fetch&lt;/code&gt;&lt;/a&gt;.
This meant that if you needed to access a binding from a deeply nested function,
you had to pass &lt;code&gt;env&lt;/code&gt; as an argument through many functions to get it to the
right spot. This could be cumbersome in complex codebases.&lt;/p&gt;
&lt;p&gt;Now, you can access the bindings from anywhere in your codebase
without passing &lt;code&gt;env&lt;/code&gt; as an argument:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// helpers.js&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { env } &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;cloudflare:workers&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// env is *not* an argument to this function&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; function&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; getValue&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	let&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; prefix &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;KV_PREFIX&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;KV&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;`${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;prefix&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;}-${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;}`&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;For more information, see &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/bindings#how-to-access-env&quot;&gt;documentation on accessing &lt;code&gt;env&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 17 Mar 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers, Pages - Retry Pages &amp; Workers Builds Directly from GitHub</title><link>https://docs.infinitegaming.org/changelog/post/2025-03-17-rerun-build/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-03-17-rerun-build/</guid><description>&lt;p&gt;You can now retry your Cloudflare Pages and Workers builds directly from GitHub. No need to switch to the Cloudflare Dashboard for a simple retry!&lt;/p&gt;
&lt;p&gt;Let\u2019s say you push a commit, but your build fails due to a spurious error like a network timeout. Instead of going to the Cloudflare Dashboard to manually retry, you can now rerun the build with just a few clicks inside GitHub, keeping you inside your workflow.&lt;/p&gt;
&lt;p&gt;For Pages and Workers projects connected to a GitHub repository:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;When a build fails, go to your GitHub repository or pull request&lt;/li&gt;
&lt;li&gt;Select the failed Check Run for the build&lt;/li&gt;
&lt;li&gt;Select &quot;Details&quot; on the Check Run&lt;/li&gt;
&lt;li&gt;Select &quot;Rerun&quot; to trigger a retry build for that commit&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Learn more about &lt;a href=&quot;https://docs.infinitegaming.org/pages/configuration/git-integration/github-integration/&quot;&gt;Pages Builds&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/git-integration/github-integration/&quot;&gt;Workers Builds&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 17 Mar 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category><category>Pages</category></item><item><title>Cloudflare Network Firewall - Cloudflare IP Ranges List</title><link>https://docs.infinitegaming.org/changelog/post/2025-03-13-new-managed-iplist/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-03-13-new-managed-iplist/</guid><description>&lt;p&gt;Magic Firewall now supports a new managed list of Cloudflare IP ranges. This list is available as an option when creating a Magic Firewall policy based on IP source/destination addresses. When selecting &quot;is in list&quot; or &quot;is not in list&quot;, the option &quot;&lt;strong&gt;Cloudflare IP Ranges&lt;/strong&gt;&quot; will appear in the dropdown menu.&lt;/p&gt;
&lt;p&gt;This list is based on the IPs listed in the Cloudflare &lt;a href=&quot;https://www.cloudflare.com/en-gb/ips/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;IP ranges&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.
Updates to this managed list are applied automatically.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1102,height=677,format=webp/_astro/cloudflare-ips.DetyOndL.png&quot; alt=&quot;Cloudflare IPs Managed List&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1102&quot; height=&quot;677&quot;&gt;
&lt;p&gt;Note: IP Lists require a Cloudflare Advanced Network Firewall subscription. For more details about Cloudflare Network Firewall plans, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-network-firewall/plans&quot;&gt;Plans&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 13 Mar 2025 00:00:00 GMT</pubDate><product>Cloudflare Network Firewall</product><category>Cloudflare Network Firewall</category></item><item><title>Workers - Use the latest JavaScript features with Wrangler CLI v4</title><link>https://docs.infinitegaming.org/changelog/post/2025-03-13-wrangler-v4/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-03-13-wrangler-v4/</guid><description>
&lt;p&gt;We&apos;ve released the next major version of &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/&quot;&gt;Wrangler&lt;/a&gt;, the CLI for Cloudflare Workers — &lt;code&gt;wrangler@4.0.0&lt;/code&gt;. Wrangler v4 is a major release focused on updates to underlying systems and dependencies, along with improvements to keep Wrangler commands consistent and clear.&lt;/p&gt;
&lt;p&gt;You can run the following command to install it in your projects:&lt;/p&gt;
&lt;script&gt;
	if (!customElements.get(&quot;nb-pm-restore&quot;)) {
		customElements.define(
			&quot;nb-pm-restore&quot;,
			class extends HTMLElement {
				connectedCallback() {
					const card = this.closest(&quot;[data-nb-pm]&quot;);
					if (!card) return;
					let saved;
					try {
						saved = sessionStorage.getItem(&quot;ui-pm-tab&quot;);
					} catch {
						return;
					}
					if (!saved) return;
					const tabs = card.querySelectorAll(&quot;[data-nb-pm-tab]&quot;);
					let idx = -1;
					tabs.forEach(function (t, i) {
						if (t.textContent.trim() === saved) idx = i;
					});
					if (idx &lt; 1) return;
					tabs.forEach(function (t, i) {
						t.setAttribute(&quot;aria-selected&quot;, String(i === idx));
					});
					card.querySelectorAll(&quot;[data-nb-pm-panel]&quot;).forEach(function (p, i) {
						p.hidden = i !== idx;
					});
				}
			},
		);
	}
&lt;/script&gt;&lt;div data-nb-pm class=&quot;w-full&quot;&gt;&lt;div class=&quot;flex w-full flex-col overflow-hidden rounded-lg text-sm ring ring-border bg-card&quot;&gt;&lt;div class=&quot;flex items-center gap-2 px-3 py-2 text-[0.8125rem] font-medium leading-5 text-muted-foreground bg-[var(--nb-surface-sunken)]&quot; role=&quot;tablist&quot; aria-label=&quot;Package manager&quot;&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;true&quot; aria-controls=&quot;pm-panel-pm-9ff03b66-c2e5-4920-a7e0-9cc90b76f392-npm&quot; id=&quot;pm-tab-pm-9ff03b66-c2e5-4920-a7e0-9cc90b76f392-npm&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;npm&lt;/button&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;false&quot; aria-controls=&quot;pm-panel-pm-9ff03b66-c2e5-4920-a7e0-9cc90b76f392-yarn&quot; id=&quot;pm-tab-pm-9ff03b66-c2e5-4920-a7e0-9cc90b76f392-yarn&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;yarn&lt;/button&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;false&quot; aria-controls=&quot;pm-panel-pm-9ff03b66-c2e5-4920-a7e0-9cc90b76f392-pnpm&quot; id=&quot;pm-tab-pm-9ff03b66-c2e5-4920-a7e0-9cc90b76f392-pnpm&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;pnpm&lt;/button&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;false&quot; aria-controls=&quot;pm-panel-pm-9ff03b66-c2e5-4920-a7e0-9cc90b76f392-bun&quot; id=&quot;pm-tab-pm-9ff03b66-c2e5-4920-a7e0-9cc90b76f392-bun&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;bun&lt;/button&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-9ff03b66-c2e5-4920-a7e0-9cc90b76f392-npm&quot; aria-labelledby=&quot;pm-tab-pm-9ff03b66-c2e5-4920-a7e0-9cc90b76f392-npm&quot; data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;npm&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; i wrangler@latest&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;npm i wrangler@latest&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-9ff03b66-c2e5-4920-a7e0-9cc90b76f392-yarn&quot; aria-labelledby=&quot;pm-tab-pm-9ff03b66-c2e5-4920-a7e0-9cc90b76f392-yarn&quot; hidden data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;yarn&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; add wrangler@latest&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;yarn add wrangler@latest&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-9ff03b66-c2e5-4920-a7e0-9cc90b76f392-pnpm&quot; aria-labelledby=&quot;pm-tab-pm-9ff03b66-c2e5-4920-a7e0-9cc90b76f392-pnpm&quot; hidden data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;pnpm&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; add wrangler@latest&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;pnpm add wrangler@latest&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-9ff03b66-c2e5-4920-a7e0-9cc90b76f392-bun&quot; aria-labelledby=&quot;pm-tab-pm-9ff03b66-c2e5-4920-a7e0-9cc90b76f392-bun&quot; hidden data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;bun&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; add wrangler@latest&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;bun add wrangler@latest&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;nb-pm-restore style=&quot;display:contents&quot;&gt;&lt;/nb-pm-restore&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/package-managers/PackageManagerTabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;Unlike previous major versions of Wrangler, which were &lt;a href=&quot;https://blog.cloudflare.com/wrangler-v2-beta/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;foundational rewrites&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and &lt;a href=&quot;https://blog.cloudflare.com/wrangler3/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;rearchitectures&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; — Version 4 of Wrangler includes a much smaller set of changes. If you use Wrangler today, your workflow is very unlikely to change.&lt;/p&gt;
&lt;p&gt;A &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/migration/update-v3-to-v4&quot;&gt;detailed migration guide&lt;/a&gt; is available and if you find a bug or hit a roadblock when upgrading to Wrangler v4, &lt;a href=&quot;https://github.com/cloudflare/workers-sdk/issues/new?template=bug-template.yaml&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;open an issue on the &lt;code&gt;cloudflare/workers-sdk&lt;/code&gt; repository on GitHub&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Going forward, we&apos;ll continue supporting Wrangler v3 with bug fixes and security updates until Q1 2026, and with critical security updates until Q1 2027, at which point it will be out of support.&lt;/p&gt;</description><pubDate>Thu, 13 Mar 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Set breakpoints and debug your Workers tests with @cloudflare/vitest-pool-workers</title><link>https://docs.infinitegaming.org/changelog/post/2025-03-14-breakpoint-debugging-with-vitest/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-03-14-breakpoint-debugging-with-vitest/</guid><description>&lt;p&gt;You can now debug your Workers tests with our &lt;a href=&quot;https://docs.infinitegaming.org/workers/testing/vitest-integration/&quot;&gt;Vitest integration&lt;/a&gt; by running the following command:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot; data-nb-lang=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;vitest&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --inspect&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --no-file-parallelism&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Attach a debugger to the port 9229 and you can start stepping through your Workers tests. This is available with &lt;code&gt;@cloudflare/vitest-pool-workers&lt;/code&gt; v0.7.5 or later.&lt;/p&gt;
&lt;p&gt;Learn more in our &lt;a href=&quot;https://docs.infinitegaming.org/workers/testing/vitest-integration/debugging/&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 13 Mar 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Access your Worker&apos;s environment variables from process.env</title><link>https://docs.infinitegaming.org/changelog/post/2025-03-11-process-env-support/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-03-11-process-env-support/</guid><description>
&lt;p&gt;You can now access &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/environment-variables/&quot;&gt;environment variables&lt;/a&gt; and
&lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/secrets/&quot;&gt;secrets&lt;/a&gt; on &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/nodejs/process/#processenv&quot;&gt;&lt;code&gt;process.env&lt;/code&gt;&lt;/a&gt;
when using the &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/compatibility-flags/#nodejs-compatibility-flag&quot;&gt;&lt;code&gt;nodejs_compat&lt;/code&gt; compatibility flag&lt;/a&gt;.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; apiClient&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; ApiClient.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({ apiKey: process.env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;API_KEY&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; LOG_LEVEL&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; process.env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;LOG_LEVEL&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; ||&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;info&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;In Node.js, environment variables are exposed via the global &lt;code&gt;process.env&lt;/code&gt; object. Some libraries
assume that this object will be populated, and many developers may be used to accessing variables
in this way.&lt;/p&gt;
&lt;p&gt;Previously, the &lt;code&gt;process.env&lt;/code&gt; object was always empty unless written to in Worker code. This could
cause unexpected errors or friction when developing Workers using code previously written for Node.js.&lt;/p&gt;
&lt;p&gt;Now, &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/environment-variables/&quot;&gt;environment variables&lt;/a&gt;,
&lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/secrets/&quot;&gt;secrets&lt;/a&gt;, and &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/bindings/version-metadata/&quot;&gt;version metadata&lt;/a&gt;
can all be accessed on &lt;code&gt;process.env&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;To opt-in to the new &lt;code&gt;process.env&lt;/code&gt; behaviour now, add the &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/compatibility-flags/#enable-auto-populating-processenv&quot;&gt;&lt;code&gt;nodejs_compat_populate_process_env&lt;/code&gt;&lt;/a&gt; compatibility flag to your
&lt;code&gt;wrangler.json&lt;/code&gt; configuration:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;	// Rest of your configuration&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;	// Add &quot;nodejs_compat_populate_process_env&quot; to your compatibility_flags array&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;compatibility_flags&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;nodejs_compat&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;nodejs_compat_populate_process_env&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;	// Rest of your configuration&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;compatibility_flags = [ &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;nodejs_compat&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;nodejs_compat_populate_process_env&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; ]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;After April 1, 2025, populating &lt;code&gt;process.env&lt;/code&gt; will become the default behavior when both &lt;code&gt;nodejs_compat&lt;/code&gt; is enabled and
your Worker&apos;s &lt;code&gt;compatibility_date&lt;/code&gt; is after &quot;2025-04-01&quot;.&lt;/p&gt;</description><pubDate>Tue, 11 Mar 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Digital Experience Monitoring - Cloudflare One Agent now supports Endpoint Monitoring</title><link>https://docs.infinitegaming.org/changelog/post/2025-03-07-cloudflare-one-device-health-monitoring/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-03-07-cloudflare-one-device-health-monitoring/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/dex/&quot;&gt;Digital Experience Monitoring (DEX)&lt;/a&gt; provides visibility into device, network, and application performance across your Cloudflare SASE deployment. The latest release of the Cloudflare One agent (v2025.1.861) now includes device endpoint monitoring capabilities
to provide deeper visibility into end-user device performance which can be analyzed directly from the dashboard.&lt;/p&gt;
&lt;p&gt;Device health metrics are now automatically collected, allowing administrators to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;View the last network a user was connected to&lt;/li&gt;
&lt;li&gt;Monitor CPU and RAM utilization on devices&lt;/li&gt;
&lt;li&gt;Identify resource-intensive processes running on endpoints&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1226,height=675,format=webp/_astro/cloudflare-one-agent-health-monitoring.XXtiRuOp.gif&quot; alt=&quot;Device endpoint monitoring dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1226&quot; height=&quot;675&quot;&gt;
&lt;p&gt;This feature complements existing DEX features like &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/dex/tests/&quot;&gt;synthetic application monitoring&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/dex/tests/traceroute/&quot;&gt;network path visualization&lt;/a&gt;, creating a comprehensive troubleshooting workflow that connects application performance with device state.&lt;/p&gt;
&lt;p&gt;For more details refer to our &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/dex/&quot;&gt;DEX&lt;/a&gt; documentation.&lt;/p&gt;</description><pubDate>Fri, 07 Mar 2025 00:00:00 GMT</pubDate><product>Digital Experience Monitoring</product><category>Digital Experience Monitoring</category></item><item><title>Stream - Introducing Media Transformations from Cloudflare Stream</title><link>https://docs.infinitegaming.org/changelog/post/2025-03-06-media-transformations/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-03-06-media-transformations/</guid><description>&lt;p&gt;Today, we are thrilled to announce Media Transformations, a new service that
brings the magic of &lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/transformations/overview/&quot;&gt;Image Transformations&lt;/a&gt; to
&lt;em&gt;short-form video files,&lt;/em&gt; wherever they are stored!&lt;/p&gt;
&lt;p&gt;For customers with a huge volume of short video — generative AI output,
e-commerce product videos, social media clips, or short marketing content —
uploading those assets to Stream is not always practical. Sometimes, the
greatest friction to getting started was the thought of all that migrating.
Customers want a simpler solution that retains their current storage strategy to
deliver small, optimized MP4 files. Now you can do that with Media
Transformations.&lt;/p&gt;
&lt;p&gt;To transform a video or image,
&lt;a href=&quot;https://docs.infinitegaming.org/stream/transform-videos/#getting-started&quot;&gt;enable transformations&lt;/a&gt; for your
zone, then make a simple request with a specially formatted URL. The result is
an MP4 that can be used in an HTML video element without a player library.
If your zone already has Image Transformations enabled, then it is ready to
optimize videos with Media Transformations, too.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;text&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;URL format&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;text&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot; data-nb-lang=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-wvjl67&quot;&gt;https://example.com/cdn-cgi/media/&amp;lt;OPTIONS&amp;gt;/&amp;lt;SOURCE-VIDEO&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;For example, we have a short video of the mobile in Austin&apos;s office. The
original is nearly 30 megabytes and wider than necessary for this layout.
Consider a simple width adjustment:&lt;/p&gt;
&lt;video controls&gt;&lt;source src=&quot;https://developers.cloudflare.com/cdn-cgi/media/width=640/https://middlecache.ced.cloudflare.com/v1/aus-mobile/aus-mobile.mp4&quot;/&gt;&lt;/video&gt;
&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;text&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;Example URL&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;text&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot; data-nb-lang=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-wvjl67&quot;&gt;https://example.com/cdn-cgi/media/width=640/&amp;lt;SOURCE-VIDEO&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-wvjl67&quot;&gt;https://developers.cloudflare.com/cdn-cgi/media/width=640/https://middlecache.ced.cloudflare.com/v1/aus-mobile/aus-mobile.mp4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;The result is less than 3 megabytes, properly sized, and delivered dynamically
so that customers do not have to manage the creation and storage of these
transformed assets.&lt;/p&gt;
&lt;p&gt;For more information, learn about &lt;a href=&quot;https://docs.infinitegaming.org/stream/transform-videos/&quot;&gt;Transforming Videos&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 06 Mar 2025 00:00:00 GMT</pubDate><product>Stream</product><category>Stream</category></item><item><title>Browser Isolation - Gain visibility into user actions in Zero Trust Browser Isolation sessions</title><link>https://docs.infinitegaming.org/changelog/post/2025-03-03-user-action-logging/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-03-03-user-action-logging/</guid><description>&lt;p&gt;We&apos;re excited to announce that new logging capabilities for &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/remote-browser-isolation/&quot;&gt;Remote Browser Isolation (RBI)&lt;/a&gt; through &lt;a href=&quot;https://docs.infinitegaming.org/logs/logpush/logpush-job/datasets/account/&quot;&gt;Logpush&lt;/a&gt; are available in Beta starting today!&lt;/p&gt;
&lt;p&gt;With these enhanced logs, administrators can gain visibility into end user behavior in the remote browser and track blocked data extraction attempts, along with the websites that triggered them, in an isolated session.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;json&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot; data-nb-lang=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;AccountID&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;$ACCOUNT_ID&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;Decision&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;block&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;DomainName&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;www.example.com&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;Timestamp&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;2025-02-27T23:15:06Z&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;Type&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;copy&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;UserID&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;$USER_ID&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;User Actions available:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Copy &amp;amp; Paste&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Downloads &amp;amp; Uploads&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Printing&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Learn more about how to get started with Logpush in our &lt;a href=&quot;https://docs.infinitegaming.org/logs/logpush/&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 04 Mar 2025 00:00:00 GMT</pubDate><product>Browser Isolation</product><category>Browser Isolation</category></item><item><title>Access - New SAML and OIDC Fields and SAML transforms for Access for SaaS</title><link>https://docs.infinitegaming.org/changelog/post/2025-03-03-saml-oidc-fields-saml-transformations/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-03-03-saml-oidc-fields-saml-transformations/</guid><description>&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/http-apps/saas-apps/&quot;&gt;Access for SaaS applications&lt;/a&gt; now include more configuration options to support a wider array of SaaS applications.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SAML and OIDC Field Additions&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;OIDC apps now include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Group Filtering via RegEx&lt;/li&gt;
&lt;li&gt;OIDC Claim mapping from an IdP&lt;/li&gt;
&lt;li&gt;OIDC token lifetime control&lt;/li&gt;
&lt;li&gt;Advanced OIDC auth flows including hybrid and implicit flows&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1021,height=192,format=webp/_astro/oidc-claims.2di8l9Lv.png&quot; alt=&quot;OIDC field additions&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1021&quot; height=&quot;192&quot;&gt;
&lt;p&gt;SAML apps now include improved SAML attribute mapping from an IdP.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1051,height=202,format=webp/_astro/saml-attribute-statements.CW45j5Qi.png&quot; alt=&quot;SAML field additions&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1051&quot; height=&quot;202&quot;&gt;
&lt;p&gt;&lt;strong&gt;SAML transformations&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;SAML identities sent to Access applications can be fully customized using JSONata expressions. This allows admins to configure the precise identity SAML statement sent to a SaaS application.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1030,height=254,format=webp/_astro/transformation-box.DyKn-DdN.png&quot; alt=&quot;Configured SAML statement sent to application&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1030&quot; height=&quot;254&quot;&gt;</description><pubDate>Mon, 03 Mar 2025 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Email security - Use Logpush for Email security detections</title><link>https://docs.infinitegaming.org/changelog/post/2025-03-01-logpush-detections/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-03-01-logpush-detections/</guid><description>&lt;p&gt;You can now send detection logs to an endpoint of your choice with Cloudflare Logpush.&lt;/p&gt;
&lt;p&gt;Filter logs matching specific criteria you have set and select from over 25 fields you want to send. When creating a new Logpush job, remember to select &lt;strong&gt;Email security alerts&lt;/strong&gt; as the dataset.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=927,height=688,format=webp/_astro/Logpush-Detections.Dc5tHta3.png&quot; alt=&quot;logpush-detections&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;927&quot; height=&quot;688&quot;&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/logs/logpush/email-security-logs/#enable-detection-logs&quot;&gt;Enable detection logs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This feature is available across these Email security packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise + PhishGuard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Sat, 01 Mar 2025 23:22:49 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Workers - Use the latest JavaScript features with Wrangler CLI v4.0.0-rc.0</title><link>https://docs.infinitegaming.org/changelog/post/2025-02-28-wrangler-v4-rc/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-02-28-wrangler-v4-rc/</guid><description>
&lt;p&gt;We&apos;ve released a release candidate of the next major version of &lt;a href=&quot;https://docs.infinitegaming.org/workers/wrangler/&quot;&gt;Wrangler&lt;/a&gt;, the CLI for Cloudflare Workers — &lt;code&gt;wrangler@4.0.0-rc.0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You can run the following command to install it and be one of the first to try it out:&lt;/p&gt;
&lt;script&gt;
	if (!customElements.get(&quot;nb-pm-restore&quot;)) {
		customElements.define(
			&quot;nb-pm-restore&quot;,
			class extends HTMLElement {
				connectedCallback() {
					const card = this.closest(&quot;[data-nb-pm]&quot;);
					if (!card) return;
					let saved;
					try {
						saved = sessionStorage.getItem(&quot;ui-pm-tab&quot;);
					} catch {
						return;
					}
					if (!saved) return;
					const tabs = card.querySelectorAll(&quot;[data-nb-pm-tab]&quot;);
					let idx = -1;
					tabs.forEach(function (t, i) {
						if (t.textContent.trim() === saved) idx = i;
					});
					if (idx &lt; 1) return;
					tabs.forEach(function (t, i) {
						t.setAttribute(&quot;aria-selected&quot;, String(i === idx));
					});
					card.querySelectorAll(&quot;[data-nb-pm-panel]&quot;).forEach(function (p, i) {
						p.hidden = i !== idx;
					});
				}
			},
		);
	}
&lt;/script&gt;&lt;div data-nb-pm class=&quot;w-full&quot;&gt;&lt;div class=&quot;flex w-full flex-col overflow-hidden rounded-lg text-sm ring ring-border bg-card&quot;&gt;&lt;div class=&quot;flex items-center gap-2 px-3 py-2 text-[0.8125rem] font-medium leading-5 text-muted-foreground bg-[var(--nb-surface-sunken)]&quot; role=&quot;tablist&quot; aria-label=&quot;Package manager&quot;&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;true&quot; aria-controls=&quot;pm-panel-pm-ae476fdc-4fe8-4623-b46b-065be317c193-npm&quot; id=&quot;pm-tab-pm-ae476fdc-4fe8-4623-b46b-065be317c193-npm&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;npm&lt;/button&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;false&quot; aria-controls=&quot;pm-panel-pm-ae476fdc-4fe8-4623-b46b-065be317c193-yarn&quot; id=&quot;pm-tab-pm-ae476fdc-4fe8-4623-b46b-065be317c193-yarn&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;yarn&lt;/button&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;false&quot; aria-controls=&quot;pm-panel-pm-ae476fdc-4fe8-4623-b46b-065be317c193-pnpm&quot; id=&quot;pm-tab-pm-ae476fdc-4fe8-4623-b46b-065be317c193-pnpm&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;pnpm&lt;/button&gt;&lt;button role=&quot;tab&quot; type=&quot;button&quot; aria-selected=&quot;false&quot; aria-controls=&quot;pm-panel-pm-ae476fdc-4fe8-4623-b46b-065be317c193-bun&quot; id=&quot;pm-tab-pm-ae476fdc-4fe8-4623-b46b-065be317c193-bun&quot; data-nb-pm-tab class=&quot;text-muted-foreground hover:bg-accent hover:text-foreground aria-selected:bg-selected aria-selected:text-foreground focus-visible:outline-ring m-0 cursor-pointer rounded-md border-0 bg-transparent px-2 py-0.5 text-xs leading-5 font-medium transition-colors focus-visible:outline-2 focus-visible:outline-offset-2&quot;&gt;bun&lt;/button&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-ae476fdc-4fe8-4623-b46b-065be317c193-npm&quot; aria-labelledby=&quot;pm-tab-pm-ae476fdc-4fe8-4623-b46b-065be317c193-npm&quot; data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;npm&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; i wrangler@v4-rc&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;npm i wrangler@v4-rc&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-ae476fdc-4fe8-4623-b46b-065be317c193-yarn&quot; aria-labelledby=&quot;pm-tab-pm-ae476fdc-4fe8-4623-b46b-065be317c193-yarn&quot; hidden data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;yarn&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; add wrangler@v4-rc&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;yarn add wrangler@v4-rc&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-ae476fdc-4fe8-4623-b46b-065be317c193-pnpm&quot; aria-labelledby=&quot;pm-tab-pm-ae476fdc-4fe8-4623-b46b-065be317c193-pnpm&quot; hidden data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;pnpm&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; add wrangler@v4-rc&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;pnpm add wrangler@v4-rc&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; id=&quot;pm-panel-pm-ae476fdc-4fe8-4623-b46b-065be317c193-bun&quot; aria-labelledby=&quot;pm-tab-pm-ae476fdc-4fe8-4623-b46b-065be317c193-bun&quot; hidden data-nb-pm-panel class=&quot;bg-card ring-border relative overflow-hidden rounded-lg text-inherit ring&quot;&gt;&lt;div class=&quot;flex items-stretch&quot;&gt;&lt;pre class=&quot;text-foreground my-0 min-w-0 grow overflow-x-auto border-0 bg-transparent px-4 py-3 font-mono text-sm leading-relaxed whitespace-pre&quot;&gt;&lt;code data-nb-pm-code&gt;&lt;span class=&quot;text-success&quot;&gt;bun&lt;/span&gt;&lt;span class=&quot;text-warning&quot;&gt; add wrangler@v4-rc&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;button type=&quot;button&quot; data-nb-pm-copy data-nb-command=&quot;bun add wrangler@v4-rc&quot; aria-label=&quot;Copy to clipboard&quot; class=&quot;border-border text-muted-foreground hover:text-foreground focus-visible:outline-ring m-0 flex shrink-0 cursor-pointer items-center justify-center border-0 border-l border-solid bg-transparent px-3 transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2&quot;&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[18px] w-[18px]&quot; data-icon=&quot;ph:copy&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M216 32H88a8 8 0 0 0-8 8v40H40a8 8 0 0 0-8 8v128a8 8 0 0 0 8 8h128a8 8 0 0 0 8-8v-40h40a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8m-56 176H48V96h112Zm48-48h-32V88a8 8 0 0 0-8-8H96V48h112Z&quot;/&gt;&lt;/svg&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;hidden h-[18px] w-[18px]&quot; data-icon=&quot;ph:check&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69L218.34 66.34a8 8 0 0 1 11.32 11.32&quot;/&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;nb-pm-restore style=&quot;display:contents&quot;&gt;&lt;/nb-pm-restore&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/package-managers/PackageManagerTabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;Unlike previous major versions of Wrangler, which were &lt;a href=&quot;https://blog.cloudflare.com/wrangler-v2-beta/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;foundational rewrites&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and &lt;a href=&quot;https://blog.cloudflare.com/wrangler3/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;rearchitectures&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; — Version 4 of Wrangler includes a much smaller set of changes. If you use Wrangler today, your workflow is very unlikely to change. Before we release Wrangler v4 and advance past the release candidate stage, we&apos;ll share a detailed migration guide in the Workers developer docs. But for the vast majority of cases, you won&apos;t need to do anything to migrate — things will just work as they do today. We are sharing this release candidate in advance of the official release of v4, so that you can try it out early and share feedback.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;new-javascript-language-features-that-you-can-now-use-with-wrangler-v4&quot;&gt;New JavaScript language features that you can now use with Wrangler v4&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#new-javascript-language-features-that-you-can-now-use-with-wrangler-v4&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Version 4 of Wrangler updates the version of &lt;a href=&quot;https://esbuild.github.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;esbuild&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; that Wrangler uses internally, allowing you to use modern JavaScript language features, including:&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h5&quot;&gt;&lt;h5 id=&quot;the-using-keyword-from-explicit-resource-management&quot;&gt;The &lt;code&gt;using&lt;/code&gt; keyword from Explicit Resource Management&lt;/h5&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#the-using-keyword-from-explicit-resource-management&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;The &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/rpc/lifecycle/#explicit-resource-management&quot;&gt;&lt;code&gt;using&lt;/code&gt; keyword from the Explicit Resource Management standard&lt;/a&gt; makes it easier to work with the &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/rpc/&quot;&gt;JavaScript-native RPC system built into Workers&lt;/a&gt;. This means that when you obtain a stub, you can ensure that it is automatically disposed when you exit scope it was created in:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; sendEmail&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;message&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  using&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; user&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;USER_SERVICE&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;findUser&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(id);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; user.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;sendEmail&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(message);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;  // user[Symbol.dispose]() is implicitly called at the end of the scope.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h5&quot;&gt;&lt;h5 id=&quot;import-attributes&quot;&gt;Import attributes&lt;/h5&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#import-attributes&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import/with&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Import attributes&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; allow you to denote the type or other attributes of the module that your code imports. For example, you can import a JSON module, using the following syntax:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;js&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; data &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;./data.json&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; with&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { type: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;json&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; };&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;other-changes&quot;&gt;Other changes&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#other-changes&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h5&quot;&gt;&lt;h5 id=&quot;--local-is-now-the-default-for-all-cli-commands&quot;&gt;&lt;code&gt;--local&lt;/code&gt; is now the default for all CLI commands&lt;/h5&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#--local-is-now-the-default-for-all-cli-commands&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;All commands that access resources (for example, &lt;code&gt;wrangler kv&lt;/code&gt;, &lt;code&gt;wrangler r2&lt;/code&gt;, &lt;code&gt;wrangler d1&lt;/code&gt;) now access local datastores by default, ensuring consistent behavior.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h5&quot;&gt;&lt;h5 id=&quot;clearer-policy-for-the-minimum-required-version-of-nodejs-required-to-run-wrangler&quot;&gt;Clearer policy for the minimum required version of Node.js required to run Wrangler&lt;/h5&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#clearer-policy-for-the-minimum-required-version-of-nodejs-required-to-run-wrangler&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Moving forward, the &lt;a href=&quot;https://nodejs.org/en/about/previous-releases&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;active, maintenance, and current versions of Node.js&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; will be officially supported by Wrangler. This means the minimum officially supported version of Node.js you must have installed for Wrangler v4 will be Node.js v18 or later. This policy mirrors how many other packages and CLIs support older versions of Node.js, and ensures that as long as you are using a version of Node.js that the Node.js project itself supports, this will be supported by Wrangler as well.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h5&quot;&gt;&lt;h5 id=&quot;features-previously-deprecated-in-wrangler-v3-are-now-removed-in-wrangler-v4&quot;&gt;Features previously deprecated in Wrangler v3 are now removed in Wrangler v4&lt;/h5&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#features-previously-deprecated-in-wrangler-v3-are-now-removed-in-wrangler-v4&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;All previously deprecated features in &lt;a href=&quot;https://developers.cloudflare.com/workers/wrangler/deprecations/#wrangler-v2&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Wrangler v2&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and in &lt;a href=&quot;https://developers.cloudflare.com/workers/wrangler/deprecations/#wrangler-v3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Wrangler v3&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; have now been removed. Additionally, the following features that were deprecated during the Wrangler v3 release have been removed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Legacy Assets (using &lt;code&gt;wrangler dev/deploy --legacy-assets&lt;/code&gt; or the &lt;code&gt;legacy_assets&lt;/code&gt; config file property). Instead, we recommend you &lt;a href=&quot;https://developers.cloudflare.com/workers/static-assets/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;migrate to Workers assets&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Legacy Node.js compatibility (using &lt;code&gt;wrangler dev/deploy --node-compat&lt;/code&gt; or the &lt;code&gt;node_compat&lt;/code&gt; config file property). Instead, use the &lt;a href=&quot;https://developers.cloudflare.com/workers/runtime-apis/nodejs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;nodejs_compat&lt;/code&gt; compatibility flag&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;. This includes the functionality from legacy &lt;code&gt;node_compat&lt;/code&gt; polyfills and natively implemented Node.js APIs.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wrangler version&lt;/code&gt;. Instead, use &lt;code&gt;wrangler --version&lt;/code&gt; to check the current version of Wrangler.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;getBindingsProxy()&lt;/code&gt; (via &lt;code&gt;import { getBindingsProxy } from &quot;wrangler&quot;&lt;/code&gt;). Instead, use the &lt;a href=&quot;https://developers.cloudflare.com/workers/wrangler/api/#getplatformproxy&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;getPlatformProxy()&lt;/code&gt; API&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, which takes exactly the same arguments.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;usage_model&lt;/code&gt;. This no longer has any effect, after the &lt;a href=&quot;https://blog.cloudflare.com/workers-pricing-scale-to-zero/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;rollout of Workers Standard Pricing&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We&apos;d love your feedback! If you find a bug or hit a roadblock when upgrading to Wrangler v4, &lt;a href=&quot;https://github.com/cloudflare/workers-sdk/issues/new?template=bug-template.yaml&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;open an issue on the &lt;code&gt;cloudflare/workers-sdk&lt;/code&gt; repository on GitHub&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 28 Feb 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Email security - Check status of Email security or Area 1</title><link>https://docs.infinitegaming.org/changelog/post/2025-02-07-check-status/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-02-07-check-status/</guid><description>&lt;p&gt;Concerns about performance for Email security or Area 1? You can now check the operational status of both on the &lt;a href=&quot;https://www.cloudflarestatus.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Status page&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For Email security, look under &lt;strong&gt;Cloudflare Sites and Services&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dashboard&lt;/strong&gt; is the dashboard for Cloudflare, including Email security&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Email security (Zero Trust)&lt;/strong&gt; is the processing of email&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API&lt;/strong&gt; are the Cloudflare endpoints, including the ones for Email security&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For Area 1, under &lt;strong&gt;Cloudflare Sites and Services&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Area 1 - Dash&lt;/strong&gt; is the dashboard for Cloudflare, including Email security&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Email security (Area1)&lt;/strong&gt; is the processing of email&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Area 1 - API&lt;/strong&gt; are the Area 1 endpoints&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=792,height=348,format=webp/_astro/Status-Page.DcFJ1286.png&quot; alt=&quot;Status-page&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;792&quot; height=&quot;348&quot;&gt;
&lt;p&gt;This feature is available across these Email security packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Advantage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise + PhishGuard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Thu, 27 Feb 2025 23:22:49 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Email security - Use DLP Assist for M365</title><link>https://docs.infinitegaming.org/changelog/post/2025-02-25-dlp-assist-for-m365/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-02-25-dlp-assist-for-m365/</guid><description>&lt;p&gt;Cloudflare Email security customers who have Microsoft 365 environments can quickly deploy an Email DLP (Data Loss Prevention) solution for free.&lt;/p&gt;
&lt;p&gt;Simply deploy our add-in, create a DLP policy in Cloudflare, and configure Outlook to trigger behaviors like displaying a banner, alerting end users before sending, or preventing delivery entirely.&lt;/p&gt;
&lt;p&gt;Refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/email-security/outbound-dlp/&quot;&gt;Outbound Data Loss Prevention&lt;/a&gt; to learn more about this feature.&lt;/p&gt;
&lt;p&gt;In GUI alert:&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1357,height=212,format=webp/_astro/DLP-Alert.5s-fbKn3.png&quot; alt=&quot;DLP-Alert&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1357&quot; height=&quot;212&quot;&gt;
&lt;p&gt;Alert before sending:&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1362,height=479,format=webp/_astro/DLP-Pop-up.0gkYy7o5.png&quot; alt=&quot;DLP-Pop-up&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1362&quot; height=&quot;479&quot;&gt;
&lt;p&gt;Prevent delivery:&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1353,height=329,format=webp/_astro/DLP-Blocked.CmQkGrnM.png&quot; alt=&quot;DLP-Blocked&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1353&quot; height=&quot;329&quot;&gt;
&lt;p&gt;This feature is available across these Email security packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise + PhishGuard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Tue, 25 Feb 2025 23:22:49 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Cloudflare Images - Bind the Images API to your Worker</title><link>https://docs.infinitegaming.org/changelog/post/2025-02-21-images-bindings-in-workers/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-02-21-images-bindings-in-workers/</guid><description>
&lt;p&gt;You can now &lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/binding/&quot;&gt;interact with the Images API&lt;/a&gt; directly in your Worker.&lt;/p&gt;
&lt;p&gt;This allows more fine-grained control over transformation request flows and cache behavior. For example, you can resize, manipulate, and overlay images without requiring them to be accessible through a URL.&lt;/p&gt;
&lt;p&gt;The Images binding can be configured in the Cloudflare dashboard for your Worker or in the Wrangler configuration file in your project&apos;s directory:&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;	&quot;images&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;		&quot;binding&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;IMAGES&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// i.e. available in your Worker on env.IMAGES&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;images&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;binding = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;IMAGES&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;Within your Worker code, you can interact with this binding by using &lt;code&gt;env.IMAGES&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Here&apos;s how you can rotate, resize, and blur an image, then output the image as AVIF:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; info&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;IMAGES&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;info&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(stream);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;// stream contains a valid image, and width/height is available on the info object&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; response&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; env.&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;IMAGES&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;input&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(stream)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({ rotate: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;90&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; })&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({ width: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;128&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; })&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({ blur: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; })&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;output&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;({ format: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;image/avif&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; })&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; response;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/images/optimization/binding/&quot;&gt;Images Bindings&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 24 Feb 2025 00:00:00 GMT</pubDate><product>Cloudflare Images</product><category>Cloudflare Images</category></item><item><title>Workers - Autofix Worker name configuration errors at build time</title><link>https://docs.infinitegaming.org/changelog/post/2025-02-20-builds-name-conflict/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-02-20-builds-name-conflict/</guid><description>&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2416,height=1128,format=webp/_astro/gh-auto-pr-name.BHTtigEg.png&quot; alt=&quot;Auto-fixing Workers Name in Git Repo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2416&quot; height=&quot;1128&quot;&gt;
&lt;p&gt;Small misconfigurations shouldn’t break your deployments. Cloudflare is introducing automatic error detection and fixes in &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/&quot;&gt;Workers Builds&lt;/a&gt;, identifying common issues in your wrangler.toml or wrangler.jsonc and proactively offering fixes, so you spend less time debugging and more time shipping.&lt;/p&gt;
&lt;p&gt;Here&apos;s how it works:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Before running your build, Cloudflare checks your Worker&apos;s Wrangler configuration file (wrangler.toml or wrangler.jsonc) for common errors.&lt;/li&gt;
&lt;li&gt;Once you submit a build, if Cloudflare finds an error it can fix, it will submit a pull request to your repository that fixes it.&lt;/li&gt;
&lt;li&gt;Once you merge this pull request, Cloudflare will run another build.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;We&apos;re starting with fixing name mismatches between your Wrangler file and the Cloudflare dashboard, a top cause of build failures.&lt;/p&gt;
&lt;p&gt;This is just the beginning, we want your feedback on what other errors we should catch and fix next. Let us know in the Cloudflare Developers Discord, &lt;a href=&quot;https://discord.com/channels/595317990191398933/1064502845061210152&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#workers-and-pages-feature-suggestions&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 20 Feb 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Cloudflare One Appliance, Cloudflare One, Cloudflare WAN - Configure your Magic WAN Connector to connect via static IP assignment</title><link>https://docs.infinitegaming.org/changelog/post/2025-02-14-local-console-access/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-02-14-local-console-access/</guid><description>&lt;p&gt;You can now locally configure your &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/&quot;&gt;Magic WAN Connector&lt;/a&gt; to work in a static IP configuration.&lt;/p&gt;
&lt;p&gt;This local method does not require having access to a DHCP Internet connection. However, it does require being comfortable with using tools to access the serial port on Magic WAN Connector as well as using a serial terminal client to access the Connector&apos;s environment.&lt;/p&gt;
&lt;p&gt;For more details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/appliance/configure-hardware-appliance/#bootstrap-via-serial-console&quot;&gt;WAN with a static IP address&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 14 Feb 2025 00:00:00 GMT</pubDate><product>Cloudflare One Appliance</product><category>Cloudflare One Appliance</category><category>Cloudflare One</category><category>Cloudflare WAN</category></item><item><title>Stream - Rewind, Replay, Resume: Introducing DVR for Stream Live</title><link>https://docs.infinitegaming.org/changelog/post/2025-02-14-introducing-dvr-for-stream-live/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-02-14-introducing-dvr-for-stream-live/</guid><description>&lt;p&gt;Previously, all viewers watched &quot;the live edge,&quot; or the latest content of the
broadcast, synchronously. If a viewer paused for more than a few seconds,
the player would automatically &quot;catch up&quot; when playback started again. Seeking
through the broadcast was only available once the recording was available after
it concluded.&lt;/p&gt;
&lt;p&gt;Starting today, customers can make a small adjustment to the player
embed or manifest URL to enable the DVR experience for their viewers. By
offering this feature as an opt-in adjustment, our customers are empowered to
pick the best experiences for their applications.&lt;/p&gt;
&lt;p&gt;When building a player embed code or manifest URL, just add &lt;code&gt;dvrEnabled=true&lt;/code&gt; as
a query parameter. There are some things to be aware of when using this option.
For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/stream/stream-live/dvr-for-live/&quot;&gt;DVR for Live&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 14 Feb 2025 00:00:00 GMT</pubDate><product>Stream</product><category>Stream</category></item><item><title>Email security - Open email links with Security Center</title><link>https://docs.infinitegaming.org/changelog/post/2025-02-07-open-links-security-center/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-02-07-open-links-security-center/</guid><description>&lt;p&gt;You can now investigate links in emails with Cloudflare Security Center to generate a report containing a myriad of technical details: a phishing scan, SSL certificate data, HTTP request and response data, page performance data, DNS records, what technologies and libraries the page uses, and more.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1118,height=402,format=webp/_astro/Open-Links-Security-Center.b-LJU4YB.png&quot; alt=&quot;Open links in Security Center&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1118&quot; height=&quot;402&quot;&gt;
&lt;p&gt;From &lt;strong&gt;Investigation&lt;/strong&gt;, go to &lt;strong&gt;View details&lt;/strong&gt;, and look for the &lt;strong&gt;Links identified&lt;/strong&gt; section. Select &lt;strong&gt;Open in Security Center&lt;/strong&gt; next to each link. &lt;strong&gt;Open in Security Center&lt;/strong&gt; allows your team to quickly generate a detailed report about the link with no risk to the analyst or your environment.&lt;/p&gt;
&lt;p&gt;For more details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/email-security/investigation/search-email/#open-links&quot;&gt;Open links&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This feature is available across these Email security packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Advantage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise + PhishGuard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Fri, 07 Feb 2025 23:22:49 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Workers - Create and deploy Workers from Git repositories</title><link>https://docs.infinitegaming.org/changelog/post/2025-02-07-new-ways-to-get-started-on-workers/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-02-07-new-ways-to-get-started-on-workers/</guid><description>&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=3607,height=1312,format=webp/_astro/choose-template-import-repo.Ci4KQPnT.png&quot; alt=&quot;Import repo or choose template&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;3607&quot; height=&quot;1312&quot;&gt;
&lt;p&gt;You can now create a Worker by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Importing a Git repository&lt;/strong&gt;: Choose an existing Git repo on your GitHub/GitLab account and set up &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/configuration/&quot;&gt;Workers Builds&lt;/a&gt; to deploy your Worker.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deploying a template with Git&lt;/strong&gt;: Choose from a brand new selection of production ready &lt;a href=&quot;https://github.com/cloudflare/templates&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;examples&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; to help you get started with popular frameworks like &lt;a href=&quot;https://astro.build/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Astro&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, &lt;a href=&quot;https://remix.run/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Remix&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and &lt;a href=&quot;https://nextjs.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Next&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; or build stateful applications with Cloudflare resources like &lt;a href=&quot;https://docs.infinitegaming.org/d1/&quot;&gt;D1 databases&lt;/a&gt;, &lt;a href=&quot;https://docs.infinitegaming.org/workers-ai/&quot;&gt;Workers AI&lt;/a&gt; or &lt;a href=&quot;https://docs.infinitegaming.org/durable-objects/&quot;&gt;Durable Objects&lt;/a&gt;! When you&apos;re ready to deploy, Cloudflare will set up your project by cloning the template to your GitHub/GitLab account, provisioning any required &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/bindings/&quot;&gt;resources&lt;/a&gt; and deploying your Worker.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With every push to your chosen branch, Cloudflare will automatically build and deploy your Worker.&lt;/p&gt;
&lt;p&gt;To get started, go to the &lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/workers-and-pages/create&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Workers dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;These new features are available today in the Cloudflare dashboard to a subset of Cloudflare customers, and will be coming to all customers in the next few weeks. Don&apos;t see it in your dashboard, but want early access? Add your Cloudflare Account ID to &lt;a href=&quot;https://forms.gle/U1qhkF2snNJDGJJa9&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;this form&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 07 Feb 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Data Loss Prevention, Gateway - Block files that are password-protected, compressed, or otherwise unscannable.</title><link>https://docs.infinitegaming.org/changelog/post/2025-02-13-improvements-unscannable-files/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-02-13-improvements-unscannable-files/</guid><description>
&lt;p&gt;Gateway HTTP policies can now block files that are password-protected, compressed, or otherwise unscannable.&lt;/p&gt;
&lt;p&gt;These unscannable files are now matched with the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/http-policies/#download-and-upload-file-types&quot;&gt;Download and Upload File Types traffic selectors&lt;/a&gt; for HTTP policies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Password-protected Microsoft Office document&lt;/li&gt;
&lt;li&gt;Password-protected PDF&lt;/li&gt;
&lt;li&gt;Password-protected ZIP archive&lt;/li&gt;
&lt;li&gt;Unscannable ZIP archive&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To get started inspecting and modifying behavior based on these and other rules, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/traffic-policies/get-started/http/&quot;&gt;HTTP filtering&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 03 Feb 2025 00:00:00 GMT</pubDate><product>Data Loss Prevention</product><category>Data Loss Prevention</category><category>Gateway</category></item><item><title>Workers - Revamped Workers Metrics</title><link>https://docs.infinitegaming.org/changelog/post/2025-02-03-workers-metrics-revamp/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-02-03-workers-metrics-revamp/</guid><description>&lt;p&gt;We&apos;ve revamped the &lt;a href=&quot;https://dash.cloudflare.com/?to=/:account/workers/services/view/:worker/production/metrics/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Workers Metrics dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=3032,height=1756,format=webp/_astro/workers-metrics.IxYk9yF0.png&quot; alt=&quot;Workers Metrics dashboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;3032&quot; height=&quot;1756&quot;&gt;
&lt;p&gt;Now you can easily compare metrics across Worker versions, understand the current state of a &lt;a href=&quot;https://docs.infinitegaming.org/workers/versions-and-deployments/gradual-deployments/&quot;&gt;gradual deployment&lt;/a&gt;, and review key Workers metrics in a single view. This new interface enables you to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Drag-and-select using a graphical timepicker for precise metric selection.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1944,height=932,format=webp/_astro/metrics-graphical-timepicker.tzLlEF5U.png&quot; alt=&quot;Workers Metrics graphical timepicker&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1944&quot; height=&quot;932&quot;&gt;
&lt;ul&gt;
&lt;li&gt;Use histograms to visualize cumulative metrics, allowing you to bucket and compare rates over time.&lt;/li&gt;
&lt;li&gt;Focus on Worker versions by directly interacting with the version numbers in the legend.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=2308,height=1068,format=webp/_astro/metrics-legend-selector.B2GY90Hn.png&quot; alt=&quot;Workers Metrics legend selector&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2308&quot; height=&quot;1068&quot;&gt;
&lt;ul&gt;
&lt;li&gt;Monitor and compare active gradual deployments.&lt;/li&gt;
&lt;li&gt;Track error rates across versions with grouping both by version and by invocation status.&lt;/li&gt;
&lt;li&gt;Measure how &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/placement/&quot;&gt;Smart Placement&lt;/a&gt; improves request duration.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Learn more about &lt;a href=&quot;https://docs.infinitegaming.org/workers/observability/metrics-and-analytics&quot;&gt;metrics&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 03 Feb 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Workers - Transform HTML quickly with streaming content</title><link>https://docs.infinitegaming.org/changelog/post/2025-01-31-html-rewriter-streaming/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-01-31-html-rewriter-streaming/</guid><description>
&lt;p&gt;You can now transform HTML elements with streamed content using &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/html-rewriter&quot;&gt;&lt;code&gt;HTMLRewriter&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Methods like &lt;code&gt;replace&lt;/code&gt;, &lt;code&gt;append&lt;/code&gt;, and &lt;code&gt;prepend&lt;/code&gt; now accept &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/response/&quot;&gt;&lt;code&gt;Response&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/streams/readablestream/&quot;&gt;&lt;code&gt;ReadableStream&lt;/code&gt;&lt;/a&gt;
values as &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/html-rewriter/#global-types&quot;&gt;&lt;code&gt;Content&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This can be helpful in a variety of situations. For instance, you may have a Worker in front of an origin,
and want to replace an element with content from a different source. Prior to this change, you would have to load
all of the content from the upstream URL and convert it into a string before replacing the element. This slowed
down overall response times.&lt;/p&gt;
&lt;p&gt;Now, you can pass the &lt;code&gt;Response&lt;/code&gt; object directly into the &lt;code&gt;replace&lt;/code&gt; method, and HTMLRewriter will immediately
start replacing the content as it is streamed in. This makes responses faster.&lt;/p&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;js&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;index.js&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; ElementRewriter&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; element&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;element&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// able to replace elements while streaming content&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// the fetched body is not buffered into memory as part&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// of the replace&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		let&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; res &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;https://upstream-content-provider.example&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		element.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;replace&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(res);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		let&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; response &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;https://site-to-replace.com&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; HTMLRewriter&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;[data-to-replace]&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; ElementRewriter&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;())&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(response);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;index.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; ElementRewriter&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; element&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;element&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; any&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// able to replace elements while streaming content&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// the fetched body is not buffered into memory as part&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-21nrsd&quot;&gt;		// of the replace&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		let&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; res &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;https://upstream-content-provider.example&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		element.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;replace&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(res);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Promise&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		let&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; response &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;https://site-to-replace.com&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; HTMLRewriter&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;[data-to-replace]&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; ElementRewriter&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;()).&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;transform&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(response);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;} &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;satisfies&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; ExportedHandler&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;&lt;/div&gt;
&lt;p&gt;For more information, see the &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/html-rewriter&quot;&gt;&lt;code&gt;HTMLRewriter&lt;/code&gt; documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 31 Jan 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Stream - Expanded language support for Stream AI Generated Captions</title><link>https://docs.infinitegaming.org/changelog/post/2025-01-30-stream-generated-captions-new-languages/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-01-30-stream-generated-captions-new-languages/</guid><description>&lt;p&gt;Stream&apos;s &lt;a href=&quot;https://docs.infinitegaming.org/stream/edit-videos/adding-captions/#generate-a-caption&quot;&gt;generated captions&lt;/a&gt;
leverage Workers AI to automatically transcribe audio and provide captions to
the player experience. We have added support for these languages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cs&lt;/code&gt; - Czech&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nl&lt;/code&gt; - Dutch&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fr&lt;/code&gt; - French&lt;/li&gt;
&lt;li&gt;&lt;code&gt;de&lt;/code&gt; - German&lt;/li&gt;
&lt;li&gt;&lt;code&gt;it&lt;/code&gt; - Italian&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ja&lt;/code&gt; - Japanese&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ko&lt;/code&gt; - Korean&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pl&lt;/code&gt; - Polish&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pt&lt;/code&gt; - Portuguese&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ru&lt;/code&gt; - Russian&lt;/li&gt;
&lt;li&gt;&lt;code&gt;es&lt;/code&gt; - Spanish&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information, learn about &lt;a href=&quot;https://docs.infinitegaming.org/stream/edit-videos/adding-captions/&quot;&gt;adding captions to videos&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 30 Jan 2025 00:00:00 GMT</pubDate><product>Stream</product><category>Stream</category></item><item><title>Workers - Support for Node.js DNS, Net, and Timer APIs in Workers</title><link>https://docs.infinitegaming.org/changelog/post/2025-01-28-nodejs-compat-improvements/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-01-28-nodejs-compat-improvements/</guid><description>
&lt;p&gt;When using a Worker with the &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/nodejs/&quot;&gt;&lt;code&gt;nodejs_compat&lt;/code&gt;&lt;/a&gt; compatibility flag enabled, you can now use the following Node.js APIs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/nodejs/net/&quot;&gt;&lt;code&gt;node:net&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/nodejs/dns/&quot;&gt;&lt;code&gt;node:dns&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/nodejs/timers/&quot;&gt;&lt;code&gt;node:timers&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;nodenet&quot;&gt;node:net&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#nodenet&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;You can use &lt;a href=&quot;https://nodejs.org/api/net.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;node:net&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; to create a direct connection to servers via a TCP sockets
with &lt;a href=&quot;https://nodejs.org/api/net.html#class-netsocket&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;net.Socket&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;js&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;index.js&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; net &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;node:net&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; exampleIP&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;127.0.0.1&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; socket&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; net.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Socket&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		socket.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;4000&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, exampleIP, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; () {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			console.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Connected&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		socket.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Hello, Server!&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		socket.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Wrote to server&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, { status: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;index.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; net &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;node:net&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; exampleIP&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;127.0.0.1&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Promise&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; socket&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; net.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Socket&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    socket.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;4000&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, exampleIP, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; () {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;      console.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Connected&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    socket.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Hello, Server!&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    socket.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    return&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;Wrote to server&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, { status: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;} &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;satisfies&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; ExportedHandler&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;&lt;/div&gt;
&lt;p&gt;Additionally, you can now use other APIs including &lt;a href=&quot;https://nodejs.org/api/net.html#class-netblocklist&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;net.BlockList&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and
&lt;a href=&quot;https://nodejs.org/api/net.html#class-netsocketaddress&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;net.SocketAddress&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Note that &lt;a href=&quot;https://nodejs.org/api/net.html#class-netserver&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;net.Server&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; is not supported.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;nodedns&quot;&gt;node:dns&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#nodedns&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;You can use &lt;a href=&quot;https://nodejs.org/api/dns.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;node:dns&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; for name resolution via &lt;a href=&quot;https://docs.infinitegaming.org/1.1.1.1/encryption/dns-over-https/&quot;&gt;DNS over HTTPS&lt;/a&gt; using
&lt;a href=&quot;https://www.cloudflare.com/application-services/products/dns/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare DNS&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; at 1.1.1.1.&lt;/p&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;js&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;index.js&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; dns &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;node:dns&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;let&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; response &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; dns.promises.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;resolve4&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;cloudflare.com&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;NS&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;index.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; dns &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &apos;node:dns&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;let&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; response &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; dns.promises.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;resolve4&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;cloudflare.com&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;NS&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;All &lt;code&gt;node:dns&lt;/code&gt; functions are available, except &lt;code&gt;lookup&lt;/code&gt;, &lt;code&gt;lookupService&lt;/code&gt;, and &lt;code&gt;resolve&lt;/code&gt; which throw &quot;Not implemented&quot; errors when called.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;nodetimers&quot;&gt;node:timers&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#nodetimers&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;You can use &lt;a href=&quot;https://nodejs.org/api/timers.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;node:timers&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; to schedule functions to be called at some future period of time.&lt;/p&gt;
&lt;p&gt;This includes &lt;a href=&quot;https://nodejs.org/api/timers.html#settimeoutcallback-delay-args&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;setTimeout&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; for calling a function after a delay,
&lt;a href=&quot;https://nodejs.org/api/timers.html#setintervalcallback-delay-args&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;setInterval&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; for calling a function repeatedly,
and &lt;a href=&quot;https://nodejs.org/api/timers.html#setimmediatecallback-args&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;setImmediate&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; for calling a function in the next iteration of the event loop.&lt;/p&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;js&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;index.js&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; timers &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;node:timers&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;console.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;first&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;timers.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;setTimeout&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(() &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	console.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;last&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;timers.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;setTimeout&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(() &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	console.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;next&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;index.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; timers &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;node:timers&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;console.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;first&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;timers.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;setTimeout&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(() &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  console.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;last&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}, &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;timers.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;setTimeout&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(() &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&gt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  console.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;next&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description><pubDate>Tue, 28 Jan 2025 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Data Loss Prevention - Detect source code leaks with Data Loss Prevention</title><link>https://docs.infinitegaming.org/changelog/post/2025-01-03-source-code-confidence-level/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-01-03-source-code-confidence-level/</guid><description>
&lt;p&gt;You can now detect source code leaks with Data Loss Prevention (DLP) with predefined checks against common programming languages.&lt;/p&gt;
&lt;p&gt;The following programming languages are validated with natural language processing (NLP).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;C&lt;/li&gt;
&lt;li&gt;C++&lt;/li&gt;
&lt;li&gt;C#&lt;/li&gt;
&lt;li&gt;Go&lt;/li&gt;
&lt;li&gt;Haskell&lt;/li&gt;
&lt;li&gt;Java&lt;/li&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;li&gt;Lua&lt;/li&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;R&lt;/li&gt;
&lt;li&gt;Rust&lt;/li&gt;
&lt;li&gt;Swift&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;DLP also supports confidence level for &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/dlp-profiles/predefined-profiles/#source-code&quot;&gt;source code profiles&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For more details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/dlp-profiles/&quot;&gt;DLP profiles&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 20 Jan 2025 00:00:00 GMT</pubDate><product>Data Loss Prevention</product><category>Data Loss Prevention</category></item><item><title>Access - Export SSH command logs with Access for Infrastructure using Logpush</title><link>https://docs.infinitegaming.org/changelog/post/2025-01-15-ssh-logs-and-logpush/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2025-01-15-ssh-logs-and-logpush/</guid><description>&lt;aside role=&quot;note&quot; aria-label=&quot;Availability&quot; class=&quot;aside-card flex items-start gap-3 rounded-lg px-4 py-3 my-4&quot; style=&quot;--_c: var(--nb-info); --_t: var(--nb-info-muted);&quot; data-astro-cid-znle5jil&gt;&lt;span class=&quot;flex h-[1.375em] shrink-0 items-center&quot; aria-hidden=&quot;true&quot; data-astro-cid-znle5jil&gt;&lt;svg width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 256 256&quot; class=&quot;h-[1em] w-[1em]&quot; data-astro-cid-znle5jil=&quot;true&quot; data-icon=&quot;ph:info&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M128 24a104 104 0 1 0 104 104A104.11 104.11 0 0 0 128 24m0 192a88 88 0 1 1 88-88a88.1 88.1 0 0 1-88 88m16-40a8 8 0 0 1-8 8a16 16 0 0 1-16-16v-40a8 8 0 0 1 0-16a16 16 0 0 1 16 16v40a8 8 0 0 1 8 8m-32-92a12 12 0 1 1 12 12a12 12 0 0 1-12-12&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div class=&quot;flex min-w-0 flex-1 flex-col gap-0.5&quot; data-astro-cid-znle5jil&gt;&lt;p class=&quot;m-0 text-base leading-snug font-semibold&quot; data-astro-cid-znle5jil&gt;Availability&lt;/p&gt;&lt;div class=&quot;aside-card-body text-sm leading-normal&quot; data-astro-cid-znle5jil&gt;&lt;p&gt;Only available on Enterprise plans.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;Cloudflare now allows you to send SSH command logs to storage destinations configured in &lt;a href=&quot;https://docs.infinitegaming.org/logs/logpush/&quot;&gt;Logpush&lt;/a&gt;, including third-party destinations. Once exported, analyze and audit the data as best fits your organization! For a list of available data fields, refer to the &lt;a href=&quot;https://docs.infinitegaming.org/logs/logpush/logpush-job/datasets/account/ssh_logs/&quot;&gt;SSH logs dataset&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To set up a Logpush job, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/logs/logpush/&quot;&gt;Logpush integration&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Wed, 15 Jan 2025 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Workers - Faster Workers Builds with Build Caching and Watch Paths</title><link>https://docs.infinitegaming.org/changelog/post/2024-12-29-faster-builds/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2024-12-29-faster-builds/</guid><description>&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1494,height=140,format=webp/_astro/workers-build-caching.DWEh3Tj1.png&quot; alt=&quot;Build caching settings&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1494&quot; height=&quot;140&quot;&gt;&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1494,height=190,format=webp/_astro/workers-build-watch-paths.ClqD-iNq.png&quot; alt=&quot;Build watch path settings&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1494&quot; height=&quot;190&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/&quot;&gt;&lt;strong&gt;Workers Builds&lt;/strong&gt;&lt;/a&gt;, the integrated CI/CD system for Workers (currently in beta), now lets you cache artifacts across builds, speeding up build jobs by eliminating repeated work, such as downloading dependencies at the start of each build.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/build-caching/&quot;&gt;Build Caching&lt;/a&gt;&lt;/strong&gt;: Cache dependencies and build outputs between builds with a shared project-wide cache, ensuring faster builds for the entire team.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/build-watch-paths/&quot;&gt;Build Watch Paths&lt;/a&gt;&lt;/strong&gt;: Define paths to include or exclude from the build process, ideal for &lt;a href=&quot;https://docs.infinitegaming.org/workers/ci-cd/builds/advanced-setups/#monorepos&quot;&gt;monorepos&lt;/a&gt; to target only the files that need to be rebuilt per Workers project.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To get started, select your Worker on the &lt;a href=&quot;https://dash.cloudflare.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; then go to &lt;strong&gt;Settings&lt;/strong&gt; &amp;gt; &lt;strong&gt;Builds&lt;/strong&gt;, and connect a GitHub or GitLab repository. Once connected, you&apos;ll see options to configure Build Caching and Build Watch Paths.&lt;/p&gt;</description><pubDate>Sun, 29 Dec 2024 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Email security - Escalate user submissions</title><link>https://docs.infinitegaming.org/changelog/post/2024-12-19-escalate-user-submissions/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2024-12-19-escalate-user-submissions/</guid><description>&lt;p&gt;After you triage your users&apos; submissions (that are machine reviewed), you can now escalate them to our team for reclassification (which are instead human reviewed). User submissions from the submission alias, PhishNet, and our API can all be escalated.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=897,height=434,format=webp/_astro/Escalate.CwXPIyM3.png&quot; alt=&quot;Escalate&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;897&quot; height=&quot;434&quot;&gt;
&lt;p&gt;From &lt;strong&gt;Reclassifications&lt;/strong&gt;, go to &lt;strong&gt;User submissions&lt;/strong&gt;. Select the three dots next to any of the user submissions, then select &lt;strong&gt;Escalate&lt;/strong&gt; to create a team request for reclassification. The Cloudflare dashboard will then show you the submissions on the &lt;strong&gt;Team Submissions&lt;/strong&gt; tab.&lt;/p&gt;
&lt;p&gt;Refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/email-security/submissions/user-submissions/&quot;&gt;User submissions&lt;/a&gt; to learn more about this feature.&lt;/p&gt;
&lt;p&gt;This feature is available across these Email security packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Advantage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise + PhishGuard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Thu, 19 Dec 2024 23:22:49 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Email security - Increased transparency for phishing email submissions</title><link>https://docs.infinitegaming.org/changelog/post/2024-12-19-reclassification-tab/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2024-12-19-reclassification-tab/</guid><description>
&lt;p&gt;You now have more transparency about team and user submissions for phishing emails through a &lt;strong&gt;Reclassification&lt;/strong&gt; tab in the Zero Trust dashboard.&lt;/p&gt;
&lt;p&gt;Reclassifications happen when users or admins &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/email-security/settings/phish-submissions/&quot;&gt;submit a phish&lt;/a&gt; to Email security. Cloudflare reviews and - in some cases - reclassifies these emails based on improvements to our machine learning models.&lt;/p&gt;
&lt;p&gt;This new tab increases your visibility into this process, allowing you to view what submissions you have made and what the outcomes of those submissions are.&lt;/p&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1645,height=758,format=webp/_astro/reclassifications-tab.yDgtjG51.png&quot; alt=&quot;Use the Reclassification area to review submitted phishing emails&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1645&quot; height=&quot;758&quot;&gt;</description><pubDate>Thu, 19 Dec 2024 00:00:00 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Cloudflare Tunnel, Cloudflare Tunnel for SASE - Troubleshoot tunnels with diagnostic logs</title><link>https://docs.infinitegaming.org/changelog/post/2024-12-19-diagnostic-logs/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2024-12-19-diagnostic-logs/</guid><description>
&lt;p&gt;The latest &lt;code&gt;cloudflared&lt;/code&gt; build &lt;a href=&quot;https://github.com/cloudflare/cloudflared/releases/tag/2024.12.2&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.12.2&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; introduces the ability to collect all the diagnostic logs needed to troubleshoot a &lt;code&gt;cloudflared&lt;/code&gt; instance.&lt;/p&gt;
&lt;p&gt;A diagnostic report collects data from a single instance of &lt;code&gt;cloudflared&lt;/code&gt; running on the local machine and outputs it to a &lt;code&gt;cloudflared-diag&lt;/code&gt; file.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/troubleshoot-tunnels/diag-logs/&quot;&gt;Diagnostic logs&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 19 Dec 2024 00:00:00 GMT</pubDate><product>Cloudflare Tunnel</product><category>Cloudflare Tunnel</category><category>Cloudflare Tunnel for SASE</category></item><item><title>Magic Transit, Cloudflare WAN, Network Interconnect - Establish BGP peering over Direct CNI circuits</title><link>https://docs.infinitegaming.org/changelog/post/2024-12-17-bgp-support-cni/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2024-12-17-bgp-support-cni/</guid><description>&lt;p&gt;Magic WAN and Magic Transit customers can use the Cloudflare dashboard to configure and manage BGP peering between their networks and their Magic routing table when using a Direct CNI on-ramp.&lt;/p&gt;
&lt;p&gt;Using BGP peering allows customers to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automate the process of adding or removing networks and subnets.&lt;/li&gt;
&lt;li&gt;Take advantage of failure detection and session recovery features.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With this functionality, customers can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Establish an eBGP session between their devices and the Magic WAN / Magic Transit service when connected via CNI.&lt;/li&gt;
&lt;li&gt;Secure the session by MD5 authentication to prevent misconfigurations.&lt;/li&gt;
&lt;li&gt;Exchange routes dynamically between their devices and their Magic routing table.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/configuration/how-to/configure-routes/#configure-bgp-routes&quot;&gt;Magic WAN BGP peering&lt;/a&gt; or &lt;a href=&quot;https://docs.infinitegaming.org/magic-transit/how-to/configure-routes/#configure-bgp-routes&quot;&gt;Magic Transit BGP peering&lt;/a&gt; to learn more about this feature and how to set it up.&lt;/p&gt;</description><pubDate>Tue, 17 Dec 2024 00:00:00 GMT</pubDate><product>Magic Transit</product><category>Magic Transit</category><category>Cloudflare WAN</category><category>Network Interconnect</category></item><item><title>Multi-Cloud Networking - Generate customized terraform files for building cloud network on-ramps</title><link>https://docs.infinitegaming.org/changelog/post/2024-12-05-cloud-onramp-terraform/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2024-12-05-cloud-onramp-terraform/</guid><description>
&lt;p&gt;You can now generate customized terraform files for building cloud network on-ramps to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/&quot;&gt;Magic WAN&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.infinitegaming.org/multi-cloud-networking/&quot;&gt;Magic Cloud&lt;/a&gt; can scan and discover existing network resources and generate the required terraform files to automate cloud resource deployment using their existing infrastructure-as-code workflows for cloud automation.&lt;/p&gt;
&lt;p&gt;You might want to do this to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Review the proposed configuration for an on-ramp before deploying it with Cloudflare.&lt;/li&gt;
&lt;li&gt;Deploy the on-ramp using your own infrastructure-as-code pipeline instead of deploying it with Cloudflare.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more details, refer to &lt;a href=&quot;https://docs.infinitegaming.org/multi-cloud-networking/cloud-on-ramps/#set-up-with-terraform&quot;&gt;Set up with Terraform&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 05 Dec 2024 00:00:00 GMT</pubDate><product>Multi-Cloud Networking</product><category>Multi-Cloud Networking</category></item><item><title>CASB - Find security misconfigurations in your AWS cloud environment</title><link>https://docs.infinitegaming.org/changelog/post/2024-11-22-cloud-data-extraction-aws/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2024-11-22-cloud-data-extraction-aws/</guid><description>
&lt;p&gt;You can now use CASB to find security misconfigurations in your AWS cloud environment using &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/data-loss-prevention/&quot;&gt;Data Loss Prevention&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can also &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/cloud-and-saas/aws-s3/#compute-account&quot;&gt;connect your AWS compute account&lt;/a&gt; to extract and scan your S3 buckets for sensitive data while avoiding egress fees. CASB will scan any objects that exist in the bucket at the time of configuration.&lt;/p&gt;
&lt;p&gt;To connect a compute account to your AWS integration:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In &lt;a href=&quot;https://one.dash.cloudflare.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare One&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, go to &lt;strong&gt;Cloud &amp;amp; SaaS findings&lt;/strong&gt; &amp;gt; &lt;strong&gt;Integrations&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Find and select your AWS integration.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Open connection instructions&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Follow the instructions provided to connect a new compute account.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Refresh&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;</description><pubDate>Fri, 22 Nov 2024 00:00:00 GMT</pubDate><product>CASB</product><category>CASB</category></item><item><title>Browser Isolation - Improved non-English keyboard support</title><link>https://docs.infinitegaming.org/changelog/post/2024-11-21-non-english-keyboard/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2024-11-21-non-english-keyboard/</guid><description>&lt;p&gt;You can now type in languages that use diacritics (like á or ç) and character-based scripts (such as Chinese, Japanese, and Korean) directly within the remote browser. The isolated browser now properly recognizes non-English keyboard input, eliminating the need to copy and paste content from a local browser or device.&lt;/p&gt;</description><pubDate>Thu, 21 Nov 2024 00:00:00 GMT</pubDate><product>Browser Isolation</product><category>Browser Isolation</category></item><item><title>Workers - Bypass caching for subrequests made from Cloudflare Workers, with Request.cache</title><link>https://docs.infinitegaming.org/changelog/post/2024-11-11-cache-no-store/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2024-11-11-cache-no-store/</guid><description>
&lt;p&gt;You can now use the &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/request/#options&quot;&gt;&lt;code&gt;cache&lt;/code&gt;&lt;/a&gt; property of the &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/request/&quot;&gt;&lt;code&gt;Request&lt;/code&gt;&lt;/a&gt; interface to bypass &lt;a href=&quot;https://docs.infinitegaming.org/workers/reference/how-the-cache-works/&quot;&gt;Cloudflare&apos;s cache&lt;/a&gt; when making subrequests from &lt;a href=&quot;https://docs.infinitegaming.org/workers&quot;&gt;Cloudflare Workers&lt;/a&gt;, by setting its value to &lt;code&gt;no-store&lt;/code&gt;.&lt;/p&gt;
&lt;div&gt;&lt;div data-nb-tabs data-nb-sync-key=&quot;workersExamples&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;JavaScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;js&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;index.js&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot; data-nb-lang=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; request&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;https://cloudflare.com&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			cache: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;no-store&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; response&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(request);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; response;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;TypeScript&quot; class&gt;&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;index.ts&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;ts&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;export&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; default&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  async&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;ctx&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Promise&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Response&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; request&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; new&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Request&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;https://cloudflare.com&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, { cache: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;no-store&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;		const&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; response&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; await&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; fetch&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(request);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;    return&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; response;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;} &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;satisfies&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; ExportedHandler&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Environment&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;F:/docs/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;&lt;/div&gt;
&lt;p&gt;When you set the value to &lt;code&gt;no-store&lt;/code&gt; on a subrequest made from a Worker, the Cloudflare Workers runtime will not check whether a match exists in the cache, and not add the response to the cache, even if the response includes directives in the &lt;code&gt;Cache-Control&lt;/code&gt; HTTP header that otherwise indicate that the response is cacheable.&lt;/p&gt;
&lt;p&gt;This increases compatibility with NPM packages and JavaScript frameworks that rely on setting the &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/request/#options&quot;&gt;&lt;code&gt;cache&lt;/code&gt;&lt;/a&gt; property, which is a cross-platform standard part of the &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/request/&quot;&gt;&lt;code&gt;Request&lt;/code&gt;&lt;/a&gt; interface. Previously, if you set the &lt;code&gt;cache&lt;/code&gt; property on &lt;code&gt;Request&lt;/code&gt;, the Workers runtime threw an exception.&lt;/p&gt;
&lt;p&gt;If you&apos;ve tried to use &lt;code&gt;@planetscale/database&lt;/code&gt;, &lt;code&gt;redis-js&lt;/code&gt;, &lt;code&gt;stytch-node&lt;/code&gt;, &lt;code&gt;supabase&lt;/code&gt;, &lt;code&gt;axiom-js&lt;/code&gt; or have seen the error message &lt;code&gt;The cache field on RequestInitializerDict is not implemented in fetch&lt;/code&gt; — you should try again, making sure that the &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/compatibility-dates/&quot;&gt;Compatibility Date&lt;/a&gt; of your Worker is set to on or after &lt;code&gt;2024-11-11&lt;/code&gt;, or the &lt;a href=&quot;https://docs.infinitegaming.org/workers/configuration/compatibility-flags/#enable-cache-no-store-http-standard-api&quot;&gt;&lt;code&gt;cache_option_enabled&lt;/code&gt; compatibility flag&lt;/a&gt; is enabled for your Worker.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Learn &lt;a href=&quot;https://docs.infinitegaming.org/workers/reference/how-the-cache-works/&quot;&gt;how the Cache works with Cloudflare Workers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Enable &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/nodejs/&quot;&gt;Node.js compatibility&lt;/a&gt; for your Cloudflare Worker&lt;/li&gt;
&lt;li&gt;Explore &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/&quot;&gt;Runtime APIs&lt;/a&gt; and &lt;a href=&quot;https://docs.infinitegaming.org/workers/runtime-apis/bindings/&quot;&gt;Bindings&lt;/a&gt; available in Cloudflare Workers&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Mon, 11 Nov 2024 00:00:00 GMT</pubDate><product>Workers</product><category>Workers</category></item><item><title>Email security - Use Logpush for Email security user actions</title><link>https://docs.infinitegaming.org/changelog/post/2024-11-07-logpush-user-actions/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2024-11-07-logpush-user-actions/</guid><description>&lt;p&gt;You can now send user action logs for Email security to an endpoint of your choice with Cloudflare Logpush.&lt;/p&gt;
&lt;p&gt;Filter logs matching specific criteria you have set or select from multiple fields you want to send. For all users, we will log the date and time, user ID, IP address, details about the message they accessed, and what actions they took.&lt;/p&gt;
&lt;p&gt;When creating a new Logpush job, remember to select &lt;strong&gt;Audit logs&lt;/strong&gt; as the dataset and filter by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Field&lt;/strong&gt;: &lt;code&gt;&quot;ResourceType&quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operator&lt;/strong&gt;: &lt;code&gt;&quot;starts with&quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Value&lt;/strong&gt;: &lt;code&gt;&quot;email_security&quot;&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=829,height=454,format=webp/_astro/Logpush-User-Actions.D14fWgmq.png&quot; alt=&quot;Logpush-user-actions&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;829&quot; height=&quot;454&quot;&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/insights/logs/logpush/email-security-logs/#enable-user-action-logs&quot;&gt;Enable user action logs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This feature is available across all Email security packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise + PhishGuard&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Thu, 07 Nov 2024 23:22:49 GMT</pubDate><product>Email security</product><category>Email security</category></item><item><title>Cloudflare Network Firewall - Search for custom rules using rule name and/or ID</title><link>https://docs.infinitegaming.org/changelog/post/2024-10-02-custom-rule-search/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2024-10-02-custom-rule-search/</guid><description>&lt;p&gt;The Magic Firewall dashboard now allows you to search custom rules using the rule name and/or ID.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Log into the &lt;a href=&quot;https://dash.cloudflare.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt; and select your account.&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;Analytics &amp;amp; Logs&lt;/strong&gt; &amp;gt; &lt;strong&gt;Network Analytics&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Magic Firewall&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Add a filter for &lt;strong&gt;Rule ID&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1032,height=801,format=webp/_astro/search-with-rule-id.DJgzqgKk.png&quot; alt=&quot;Search for firewall rules with rule IDs&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1032&quot; height=&quot;801&quot;&gt;
&lt;p&gt;Additionally, the rule ID URL link has been added to Network Analytics.&lt;/p&gt;</description><pubDate>Wed, 02 Oct 2024 00:00:00 GMT</pubDate><product>Cloudflare Network Firewall</product><category>Cloudflare Network Firewall</category></item><item><title>Access - Eliminate long-lived credentials and enhance SSH security with Cloudflare Access for Infrastructure</title><link>https://docs.infinitegaming.org/changelog/post/2024-10-01-ssh-with-access-for-infrastructure/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2024-10-01-ssh-with-access-for-infrastructure/</guid><description>&lt;p&gt;Organizations can now eliminate long-lived credentials from their SSH setup and enable strong multi-factor authentication for SSH access, similar to other Access applications, all while generating access and command logs.&lt;/p&gt;
&lt;p&gt;SSH with &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/access-controls/applications/non-http/infrastructure-apps/&quot;&gt;Access for Infrastructure&lt;/a&gt; uses short-lived SSH certificates from Cloudflare, eliminating SSH key management and reducing the security risks associated with lost or stolen keys. It also leverages a common deployment model for Cloudflare One customers: &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/use-cases/ssh/ssh-device-client/&quot;&gt;WARP-to-Tunnel&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;SSH with Access for Infrastructure enables you to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Author fine-grained policy&lt;/strong&gt; to control who may access your SSH servers, including specific ports, protocols, and SSH users.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitor infrastructure access&lt;/strong&gt; with Access and SSH command logs, supporting regulatory compliance and providing visibility in case of security breach.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Preserve your end users&apos; workflows.&lt;/strong&gt; SSH with Access for Infrastructure supports native SSH clients and does not require any modifications to users’ SSH configs.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;https://docs.infinitegaming.org/cdn-cgi/image/onerror=redirect,width=1916,height=1714,format=webp/_astro/infrastructure-app.BhpJOgxs.png&quot; alt=&quot;Example of an infrastructure Access application&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1916&quot; height=&quot;1714&quot;&gt;
&lt;p&gt;To get started, refer to &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/networks/connectors/cloudflare-tunnel/use-cases/ssh/ssh-infrastructure-access/&quot;&gt;SSH with Access for Infrastructure&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 01 Oct 2024 00:00:00 GMT</pubDate><product>Access</product><category>Access</category></item><item><title>Risk Score - Exchange user risk scores with Okta</title><link>https://docs.infinitegaming.org/changelog/post/2024-06-17-okta-risk-exchange/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2024-06-17-okta-risk-exchange/</guid><description>
&lt;p&gt;Beyond the controls in &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/&quot;&gt;Zero Trust&lt;/a&gt;, you can now &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/team-and-resources/users/risk-score/#send-risk-score-to-okta&quot;&gt;exchange user risk scores&lt;/a&gt; with Okta to inform SSO-level policies.&lt;/p&gt;
&lt;p&gt;First, configure Cloudflare One to send user risk scores to Okta.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Set up the &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/integrations/identity-providers/okta/&quot;&gt;Okta SSO integration&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;In the &lt;a href=&quot;https://dash.cloudflare.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare dashboard&lt;span class=&quot;external-link&quot;&gt; ↗︎&lt;/span&gt;&lt;/a&gt;, go to &lt;strong&gt;Zero Trust&lt;/strong&gt; &amp;gt; &lt;strong&gt;Integrations&lt;/strong&gt; &amp;gt; &lt;strong&gt;Identity providers&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In &lt;strong&gt;Your identity providers&lt;/strong&gt;, locate your Okta integration and select &lt;strong&gt;Edit&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Turn on &lt;strong&gt;Send risk score to Okta&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Save&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Upon saving, Cloudflare One will display the well-known URL for your organization. Copy the value.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Next, configure Okta to receive your risk scores.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;On your Okta admin dashboard, go to &lt;strong&gt;Security&lt;/strong&gt; &amp;gt; &lt;strong&gt;Device Integrations&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;Receive shared signals&lt;/strong&gt;, then select &lt;strong&gt;Create stream&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Name your integration. In &lt;strong&gt;Set up integration with&lt;/strong&gt;, choose &lt;em&gt;Well-known URL&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;In &lt;strong&gt;Well-known URL&lt;/strong&gt;, enter the well-known URL value provided by Cloudflare One.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Create&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;</description><pubDate>Mon, 17 Jun 2024 00:00:00 GMT</pubDate><product>Risk Score</product><category>Risk Score</category></item><item><title>Access, Browser Isolation, CASB, Cloudflare Tunnel for SASE, Digital Experience Monitoring, Data Loss Prevention, Email security, Gateway, Multi-Cloud Networking, Cloudflare Network Firewall, Network Flow, Magic Transit, Cloudflare WAN, Network Interconnect, Risk Score, Cloudflare One Client - Explore product updates for Cloudflare One</title><link>https://docs.infinitegaming.org/changelog/post/2024-06-16-cloudflare-one/</link><guid isPermaLink="true">https://docs.infinitegaming.org/changelog/post/2024-06-16-cloudflare-one/</guid><description>
&lt;p&gt;Welcome to your new home for product updates on &lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/&quot;&gt;Cloudflare One&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Our &lt;a href=&quot;https://docs.infinitegaming.org/changelog/&quot;&gt;new changelog&lt;/a&gt; lets you read about changes in much more depth, offering in-depth examples, images, code samples, and even gifs.&lt;/p&gt;
&lt;p&gt;If you are looking for older product updates, refer to the following locations.&lt;/p&gt;
&lt;details open class=&quot;border-border my-4 rounded-lg border px-4 py-2&quot; data-astro-cid-nziubcoq&gt;&lt;summary class=&quot;cursor-pointer font-medium&quot; data-astro-cid-nziubcoq&gt;&lt;p&gt;Older product updates&lt;/p&gt;
&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/changelog/access/&quot;&gt;Access&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/changelog/browser-isolation/&quot;&gt;Browser Isolation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/changelog/casb/&quot;&gt;CASB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/changelog/tunnel/&quot;&gt;Cloudflare Tunnel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/changelog/dlp/&quot;&gt;Data Loss Prevention&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/changelog/dex/&quot;&gt;Digital Experience Monitoring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/changelog/email-security/&quot;&gt;Email security&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/changelog/gateway/&quot;&gt;Gateway&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/multi-cloud-networking/changelog/&quot;&gt;Multi-Cloud Networking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-network-firewall/changelog/&quot;&gt;Cloudflare Network Firewall&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/network-flow/changelog/&quot;&gt;Magic Network Monitoring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/magic-transit/changelog/&quot;&gt;Magic Transit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-wan/changelog/&quot;&gt;Magic WAN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/network-interconnect/changelog/&quot;&gt;Network Interconnect&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/cloudflare-one/changelog/risk-score/&quot;&gt;Risk score&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.infinitegaming.org/changelog/cloudflare-one-client/&quot;&gt;Cloudflare One Client&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/details&gt;</description><pubDate>Sun, 16 Jun 2024 00:00:00 GMT</pubDate><product>Access</product><category>Access</category><category>Browser Isolation</category><category>CASB</category><category>Cloudflare Tunnel for SASE</category><category>Digital Experience Monitoring</category><category>Data Loss Prevention</category><category>Email security</category><category>Gateway</category><category>Multi-Cloud Networking</category><category>Cloudflare Network Firewall</category><category>Network Flow</category><category>Magic Transit</category><category>Cloudflare WAN</category><category>Network Interconnect</category><category>Risk Score</category><category>Cloudflare One Client</category></item></channel></rss>