Skip to content

Changelog

New updates and improvements at Cloudflare.

Core platform
hero image
  1. Cloudflare has updated Logpush datasets:

    Updated fields in existing datasets

    • DEX Device State Events (added): DeviceRegistrationProfileID.
    • Gateway HTTP (added): AddedHeaders, DeletedHeaders, and SetHeaders.
    • HTTP requests (added): MatchedRules.

    For the complete field definitions for each dataset, refer to Logpush datasets.

  1. Starting with cloudflared version 2026.5.2, Cloudflare Tunnel automates the entire connectivity pre-checks workflow directly inside the binary. Previously, customers had to install dig and netcat and run those commands by hand to verify their environment. Now cloudflared does it natively at startup — and surfaces actionable remediation when something is blocked.

    cloudflared connectivity pre-checks output

    On every cloudflared tunnel run (and cloudflared tunnel diag), the binary now natively checks:

    • DNS resolutionregion1.v2.argotunnel.com and region2.v2.argotunnel.com resolve to valid Cloudflare IPs.
    • Transport connectivity — outbound UDP (QUIC) and TCP (HTTP/2) on port 7844.
    • Management API — outbound TCP/443 to api.cloudflare.com for software updates.

    Results are printed in a scannable CLI table with three states:

    • Pass — the check succeeded.
    • ⚠️ Warn — a non-blocking issue, for example the Management API is unreachable so automatic updates will not work, but the tunnel will still come up.
    • Fail — a blocking issue, with a specific remediation hint (for example, Allow outbound UDP on port 7844).

    If DNS is unresolvable, or both UDP and TCP fail on port 7844, cloudflared exits early with the failure rather than looping on opaque failed to dial errors.

    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.

    To get the new behavior, upgrade cloudflared to version 2026.5.2 or later. For more details, refer to the Connectivity pre-checks documentation.

  1. The Billing Profile now has a modern UI and a single space that unifies billing information, payment method management and an enhanced subscriptions view under a single Subscriptions tab.

    What changed

    The Subscriptions tab brings billing information, payment method management, and your subscriptions together in one place. The payment management and Pay overdue balances flows now use the latest checkout as product purchase flows, so you can pay with Apple Pay, Google Pay, Link, and Instant Bank Payments via Link alongside cards and PayPal.

    New cards complete 3D Secure authentication when the issuer requires it — for example, the EU under PSD2 and India under RBI.

    Modernized Billing Profile with the Subscriptions tab

    For details, refer to the Billing Home documentation.

  1. You can now scope Cloudflare permissions to individual Cloudflare Tunnel instances and Cloudflare Mesh nodes. Administrators can delegate access to specific Tunnels or Mesh nodes without granting account-wide control over private networking.

    What is new

    When you add a member or create a permission policy, the resource picker now lists Cloudflare Tunnel instances and Cloudflare Mesh nodes as scopable resource types. You can:

    • 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.
    • 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.
    • Scope a single policy to one or many Tunnels and Mesh nodes at once.

    How it works

    Granular permissions are a parallel layer to existing account-level roles — they do not replace them.

    • Existing account-level roles continue to work. A member with Cloudflare Access or Cloudflare Zero Trust retains write access to every Tunnel and Mesh node in the account. This ensures backward compatibility for existing automation and tokens.
    • Granular permissions are additive. For any API request on a specific Tunnel or Mesh node, access is granted if the principal has either the account-level role or a granular permission for that resource.
    • Resource enumeration is authorization-aware. Listing endpoints (GET /accounts/{id}/cfd_tunnel, GET /accounts/{id}/warp_connector) return only the resources the principal has at least read access to.

    Get started

  1. Cloudflare has updated Logpush datasets:

    New datasets

    • Email Security Post-Delivery Events: A new dataset with fields including AlertID, CompletedAt, Destination, FinalDisposition, Folder, From, FromName, MessageID, MessageTimestamp, MicrosoftTenantID, Operation, PostfixID, Reasons, Recipient, RequestedAt, RequestedBy, RequestedDisposition, Status, Subject, Success, and To.
    • Magic Network Monitoring Flow Logs: A new dataset with fields including AWSVPCFlowJSON, Bits, DestinationAS, DestinationAddress, DestinationPort, DeviceID, EgressBits, EgressPackets, Ethertype, FlowProtocol, FlowTimestamp, NumFlows, PacketID, Packets, Protocol, RuleIDs, SampleRate, SampleRateType, SamplerAddress, SourceAS, SourceAddress, SourcePort, TcpFlags, and Timestamp.

    Updated fields in existing datasets

    • Firewall events (added): AISecurityInjectionScore, AISecurityPIICategories, AISecurityTokenCount, and AISecurityUnsafeTopicCategories.
    • HTTP requests (added): AISecurityInjectionScore, AISecurityPIICategories, AISecurityTokenCount, AISecurityUnsafeTopicCategories, and Subrequests.

    For the complete field definitions for each dataset, refer to Logpush datasets.

  1. You can now navigate, switch context, and take common actions in the Cloudflare dashboard without leaving your keyboard. Press ? anywhere to see the full list. Keyboard shortcuts can be disabled by visiting your profile settings.

    ShortcutAction
    g hGo to Home
    g aGo to account overview
    g zGo to zone overview
    g pGo to your profile
    g wGo to Workers & Pages
    g oGo to Zero Trust
    g bGo to billing
    g 1g 5Go to a recent or pinned item (by position in sidebar)
    t →Move to the next tab
    t ←Move to the previous tab
    p →Move to the next page of a table
    p ←Move to the previous page of a table

    Take action

    ShortcutAction
    /Open quick search
    ?Show keyboard shortcuts
    s aSwitch account
    s zSwitch zone
    s .Star or unstar the current zone
    p .Pin or unpin the current page
    t sToggle the sidebar open or closed
    t mExpand or collapse all sidebar menus
    t aToggle Ask AI sidebar
    d .Toggle dark mode
    c uCopy the current URL
    c dCopy a deep link URL
  1. Full Changelog: v6.10.0...v7.0.0

    This is a major version release that includes breaking changes to three packages: ai_search, email_security, and workers. These changes reflect upstream API specification updates that improve type correctness and consistency.

    Please ensure you read through the list of changes below before moving to this version - this will help you understand any down or upstream issues it may cause to your environments.

    Breaking Changes

    See the v7.0.0 Migration Guide for before/after code examples and actions needed for each change.

    AI Search - SearchForAgents Metadata Removed

    The SearchForAgents nested type has been removed from all instance metadata structs. This field is no longer part of the API specification.

    Removed Types:

    • InstanceNewResponseMetadataSearchForAgents
    • InstanceUpdateResponseMetadataSearchForAgents
    • InstanceListResponseMetadataSearchForAgents
    • InstanceDeleteResponseMetadataSearchForAgents
    • InstanceReadResponseMetadataSearchForAgents
    • InstanceNewParamsMetadataSearchForAgents
    • InstanceUpdateParamsMetadataSearchForAgents
    • NamespaceInstanceNewResponseMetadataSearchForAgents
    • NamespaceInstanceUpdateResponseMetadataSearchForAgents
    • NamespaceInstanceListResponseMetadataSearchForAgents
    • NamespaceInstanceDeleteResponseMetadataSearchForAgents
    • NamespaceInstanceReadResponseMetadataSearchForAgents
    • NamespaceInstanceNewParamsMetadataSearchForAgents
    • NamespaceInstanceUpdateParamsMetadataSearchForAgents

    Email Security - Path Parameter Type Changes

    Multiple Email Security settings sub-resources have changed their path parameter types from int64 to string:

    • AllowPolicies (policyID int64 -> policyID string)
    • BlockSenders (patternID int64 -> patternID string)
    • Domains (domainID int64 -> domainID string)
    • ImpersonationRegistry (displayNameID int64 -> impersonationRegistryID string)
    • TrustedDomains (trustedDomainID int64 -> trustedDomainID string)

    Email Security - Investigate Parameter Rename

    The Investigate.Get, Investigate.Move.New, and Investigate.Reclassify.New methods now use investigateID instead of postfixID as the path parameter name.

    Email Security - Domains BulkDelete Method Removed

    The SettingDomainService.BulkDelete method and its associated types have been removed:

    • SettingDomainBulkDeleteResponse
    • SettingDomainBulkDeleteParams

    Email Security - TrustedDomains Return Type Change

    SettingTrustedDomainService.New now returns *SettingTrustedDomainNewResponse instead of *SettingTrustedDomainNewResponseUnion.

    Email Security - Investigate.Move Return Type Change

    InvestigateMoveService.New now returns *pagination.SinglePage[InvestigateMoveNewResponse] instead of *[]InvestigateMoveNewResponse.

    Workers - Observability Telemetry Filter Restructuring

    The observability telemetry filter parameter types have been restructured to support nested filter groups. New discriminated union types replace the previous flat filter arrays:

    • ObservabilityTelemetryKeysParams.Filters now accepts FiltersObjectFilterUnion (was []interface\{\})
    • ObservabilityTelemetryQueryParams.Parameters.Filters now accepts FiltersObjectFilterUnion
    • ObservabilityTelemetryValuesParams.Filters now accepts FiltersObjectFilterUnion

    New types include FiltersObjectFiltersObject (for group filters with FilterCombination) and FiltersWorkersObservabilityFilterLeaf (for leaf filters with typed Operation, Type, and Value fields).

    Features

    Organizations - Audit Logs (client.Organizations.Logs.Audit)

    NEW SERVICE: Query organization audit logs with cursor-based pagination.

    • List() - Retrieve audit logs

    Browser Rendering (client.BrowserRendering)

    • client.BrowserRendering.Devtools.Browser.Targets.Close() - Close a specific browser target (tab, page) by ID

    Queues (client.Queues)

    • client.Queues.GetMetrics() - Retrieve queue metrics for a specific queue

    AI Search (client.AISearch)

    • Added WaitForCompletion parameter to NamespaceInstanceItemNewOrUpdateParams and NamespaceInstanceItemSyncParams for synchronous indexing confirmation

    Bug Fixes

    • Magic Transit: ConnectorService.List parameter name corrected from query to params (non-functional, affects generated documentation only)

    Deprecations

    None in this release.

    Get started

  1. Full Changelog: v4.3.1...v5.0.0

    This is a major release of the Cloudflare Python SDK. It drops support for Python 3.8, adds 11 new API services, introduces optional aiohttp backend support for improved async concurrency, and includes hundreds of type and method updates across the entire API surface.

    Please review the breaking changes below before upgrading. A migration guide is available at v5.0.0 Migration Guide.

    Breaking Changes

    • Python 3.8 is no longer supported. The minimum required version is now Python 3.9.
    • typing-extensions minimum version bumped from >=4.10 to >=4.14.

    The following resources have breaking changes. See the v5.0.0 Migration Guide for detailed migration instructions.

    • abusereports
    • acm.totaltls
    • apigateway.configurations
    • cloudforceone.threatevents
    • d1.database
    • intel.indicatorfeeds
    • logpush.edge
    • origintlsclientauth.hostnames
    • queues.consumers
    • radar.bgp
    • rulesets.rules
    • schemavalidation.schemas
    • snippets
    • zerotrust.dlp
    • zerotrust.networks

    Features

    aiohttp Backend Support

    The async client now supports an optional aiohttp HTTP backend for improved concurrency performance. Install with pip install cloudflare[aiohttp] and use DefaultAioHttpClient() as the http_client parameter.

    Python 3.13 and 3.14 Support

    Python 3.13 and 3.14 are now tested and supported.

    New Services

    The following top-level resources are new in this release:

    ResourceClient PathDescription
    AI SearchaisearchAI-powered search capabilities
    ConnectivityconnectivityConnectivity testing and diagnostics
    Email Sendingemail_sendingEmail send and send_raw endpoints
    FraudfraudFraud detection and prevention
    Google Tag Gatewaygoogle_tag_gatewayGoogle Tag Gateway management
    OrganizationsorganizationsOrganization audit logs and management
    R2 Data Catalogr2_data_catalogR2 Data Catalog operations
    Realtime Kitrealtime_kitRealtime communication (Calls/TURN)
    Resource Taggingresource_taggingResource tagging and labeling
    Token Validationtoken_validationToken validation configuration and rules
    Vulnerability Scannervulnerability_scannerVulnerability scanning, credential sets, and target environments

    New Endpoints on Existing Services

    • api_gateway: Labels endpoints
    • billing: Billable usage PayGo endpoint
    • brand_protection: v2 endpoints
    • browser_rendering: DevTools methods
    • cache: Origin cloud regions resource
    • custom_origin_trust_store: Custom origin trust store
    • dns: dns_records/usage endpoints
    • email_security: Phishguard reports endpoint
    • iam: User groups and user group members resources
    • radar: Botnet Threat Feed and Post-Quantum endpoints
    • workers: Observability Destinations resources
    • zero_trust: Access Users, DEX rules, Device IP Profile, Device Subnet, WARP Connector connections and failover, WARP Subnet, Gateway PAC files
    • zones: Zone environments endpoints

    Bug Fixes

    • Fixed polymorphic_serialization parameter in model_dump overrides
    • Added BaseModel base to response SchemaFieldStruct/SchemaFieldList stubs in Pipelines
    • Added missing model_rebuild/update_forward_refs for SharedEntryCustomEntry classes in DLP
    • Made RunQueryParametersNeedleValue a BaseModel with arbitrary_types_allowed in Workers
    • Removed duplicate notification_url field in webhook response types for Stream
    • Resolved pre-existing codegen type errors
    • Fixed type: ignore[call-arg] placement for mypy compatibility in Radar

    Deprecations

    Resources with @deprecated annotations on some methods include: accounts, addressing, ai-gateway, aisearch, api-gateway, billing, cloudforce-one, dns, email-routing, email-security, filters, firewall, images, intel, kv, logpush, origin-tls-client-auth, pages, pipelines, radar, rate-limits, registrar, rulesets, ssl, user, workers, workers-for-platforms, zero-trust, zones

    Get started

  1. Full Changelog: v6.0.0-beta.2...v6.0.0

    This is a major version release of the Cloudflare TypeScript SDK. It includes 11 entirely new top-level API resources, new sub-resources and methods across 50+ existing resources, SDK infrastructure improvements, and breaking changes to the generated API surface from the v5.x line.

    Please ensure you read through the list of changes below before moving to this version - this will help you understand any down or upstream issues it may cause to your environments.

    Breaking Changes

    SDK Infrastructure

    • Retry-After handling changed: The SDK now respects any server-specified Retry-After value for rate-limited requests. Previously, values over 60 seconds were ignored and a default backoff was used instead.
    • Empty response handling: Responses with content-length: 0 now return undefined instead of attempting to parse the body.
    • Environment variable reading: Empty string env vars (for example, CLOUDFLARE_API_TOKEN="") are now treated as unset.
    • Path query parameter merging: URL search params embedded in endpoint paths are now extracted and merged into the query object.

    Removed Endpoints (17)

    17 HTTP endpoints were removed from the SDK, affecting abuse-reports, cloudforce-one, dlp/profiles/predefined, email-security/investigate, email-security/settings, and intel/ip-list.

    Method Signature Changes

    • client.ai.toMarkdown.transform(file, \{ ...params \}) -> client.ai.toMarkdown.transform(\{ ...params \}) -- file moved from positional arg into params body
    • client.radar.ai.toMarkdown.create(body, \{ ...params \}) -> client.radar.ai.toMarkdown.create(\{ ...params \}) -- body moved from positional arg into params
    • client.abuseReports.create(reportType, \{ ...params \}) -> client.abuseReports.create(reportParam, \{ ...params \}) -- positional arg renamed
    • client.iam.userGroups.members.create(userGroupId, [ ...body ]) -> client.iam.userGroups.members.create(userGroupId, [ ...members ]) -- body array param renamed

    Renamed Client Paths

    • client.originTLSClientAuth.hostnames.certificates -> client.originTLSClientAuth.zoneCertificates
    • client.radar.netflows -> client.radar.netFlows (casing change)

    Return Type Changes (179)

    • 133 methods now return null instead of a typed response object. This primarily affects delete operations across accounts, cache, d1, filters, firewall, hyperdrive, iam, kv, logpush, logs, r2, stream, workers, zero-trust, zones, and others.
    • 17 methods changed pagination type (for example, KeysCursorPaginationAfter -> KeysCursorLimitPagination).
    • 29 methods changed to a different named type (for example, CloudflaredCreateResponse -> CloudflareTunnel).

    Removed Types (43)

    24 shared types removed from root namespace (ASN, AuditLog, Member, Permission, Role, Subscription, Token, etc.). 19 response types consolidated or renamed.

    Resource Restructuring

    19 resources were restructured from single files to directories. Public API client paths are unchanged, but deep imports may break.

    New Top-Level Resources

    11 entirely new resources added to the client:

    ResourceClient PathMethodsDescription
    AI Searchclient.aiSearch46Instances, namespaces, tokens, and items
    Connectivityclient.connectivity5Directory service APIs
    Email Sendingclient.emailSending7Send and send_raw endpoints
    Fraudclient.fraud2Fraud detection API
    Google Tag Gatewayclient.googleTagGateway2Google Tag Gateway management
    Organizationsclient.organizations8Organization profiles and audit logs
    R2 Data Catalogclient.r2DataCatalog11R2 Data Catalog routes
    Realtime Kitclient.realtimeKit54Realtime Kit APIs
    Resource Taggingclient.resourceTagging9Resource tagging routes
    Token Validationclient.tokenValidation13Token validation rules
    Vulnerability Scannerclient.vulnerabilityScanner21Vulnerability scanning

    New Sub-Resources on Existing Resources

    • browser-rendering: crawl, devtools - Crawl endpoints and DevTools methods
    • cache: origin-cloud-regions - Origin cloud regions resource
    • dns: usage - DNS records usage endpoints
    • d1: time-travel - Time travel get_bookmark and restore
    • email-security: phishguard - Phishguard reports endpoint
    • pipelines: sinks, streams - Pipelines restructure
    • radar: agent-readiness, geolocations, post-quantum - New analytics endpoints
    • workers: observability - Observability destinations
    • zones: environments - Zone environments endpoints
    • api-gateway: labels - Labels endpoints
    • brand-protection: v2 - V2 endpoints
    • alerting: silences - Alert silencing API
    • billing: usage - Billable usage PayGo endpoint
    • iam: sso - SSO Connectors resource
    • queues: getMetrics method - Queues metrics endpoint
    • registrar: registration-status, update-status - Registrar API convergence
    • zero-trust: DLP settings, DEX rules, Access Users, WARP Connector, WARP Subnets, Gateway PAC files, Gateway tenants

    Bug Fixes

    • Resolved type errors from codegen overwriting manual fixes
    • Fixed post() usage for to-markdown endpoints to resolve async type error
    • Added least-privilege permissions to all workflow jobs
    • Reverted erroneous removal of rulesets resource methods and types
    • Resolved prettier formatting errors in codegen output

    Deprecations

    The following resources now include @deprecated annotations on some methods:

    accounts, addressing, ai-gateway, aisearch, api-gateway, billing, cloudforce-one, custom-nameservers, dns, email-routing, email-security, filters, firewall, images, intel, keyless-certificates, kv, logpush, origin-tls-client-auth, page-shield, pages, pipelines, radar, rate-limits, registrar, rulesets, ssl, user, workers, workers-for-platforms, zero-trust, zones

    Get started

  1. You can now pay for Cloudflare services directly from your bank account using Instant Bank Payments via Link.

    What changed

    Link now supports bank account payments in addition to cards. If you have a bank account saved in Link, it appears as a payment option at checkout. If not, you can connect one during the checkout flow.

    Instant Bank Payments via Link at checkout

    How to use it

    1. During checkout, select your bank account from your saved Link payment methods.
    2. Confirm the payment.

    After your first Link authentication, your bank account is available for future purchases without re-entering details.

    Who is eligible

    Instant Bank Payments via Link is available to US-based self-serve accounts across all Cloudflare products. Your existing cards remain available at checkout.

    Bank-based Link payments appear in your billing history with the payment method shown as link and last four digits as 0000. For details, refer to the Instant Bank Payments via Link documentation.

  1. Direct access to Support from the dashboard

    The Support button in the dashboard global navigation header now takes you directly to the Cloudflare Support Portal, eliminating the previous dropdown menu.

    This change ensures that when you need help, you spend less time navigating the UI and more time getting the answers you need.

    What changed?

    • Previous behavior: Selecting ? Support opened a dropdown menu with various links (Help Center, Cloudflare Community, etc.).
    • New behavior: Selecting Support immediately redirects your current tab to the Support Portal.

    To learn more about the resources available to you, refer to the Cloudflare Support documentation.

  1. Cloudflare-generated 5xx error responses now return structured JSON and Markdown when agents request them, matching the format already available for 1xxx errors. Responses follow RFC 9457 (Problem Details for HTTP APIs) and include a Retry-After HTTP header on retryable codes.

    Changes

    5xx coverage. Ten Cloudflare-generated error codes (500, 502, 504, 520-526) now serve structured responses. These are errors Cloudflare itself generates when it cannot reach or understand the origin server. Origin-generated 5xx responses that Cloudflare passes through are not affected.

    Fault attribution. The error_category field tells agents where the fault lies:

    • origin (502, 504, 520-524) — the origin server is responsible. Transient; retry with the backoff in retry_after.
    • cloudflare (500) — Cloudflare's fault, not the website or the request. Short retry.
    • ssl (525, 526) — the origin's TLS configuration is broken. Do not retry.

    Retry-After header. Retryable codes (500, 502, 504, 520-524) include a Retry-After HTTP header matching the retry_after body field. Non-retryable codes (525, 526) do not include the header.

    Negotiation behavior

    Request header sentResponse format
    Accept: application/jsonJSON (application/json content type)
    Accept: application/problem+jsonJSON (application/problem+json content type)
    Accept: application/json, text/markdown;q=0.9JSON
    Accept: text/markdownMarkdown
    Accept: text/markdown, application/jsonMarkdown (equal q, first-listed wins)
    Accept: */*HTML (default)

    Availability

    Available now for all zones on all plans.

    Get started

    Get JSON response for error 522:

    Terminal window
    curl -s --compressed -H "Accept: application/json" -A "TestAgent/1.0" -H "Accept-Encoding: gzip, deflate" "<YOUR_DOMAIN>/cdn-cgi/error/522" | jq .

    Check presence of the Retry-After HTTP header associated with the JSON response for error 521:

    Terminal window
    curl -s --compressed -D - -o /dev/null -H "Accept: application/json" -A "TestAgent/1.0" -H "Accept-Encoding: gzip, deflate" "<YOUR_DOMAIN>/cdn-cgi/error/521" | grep -i retry-after

    References:

  1. Resource Tagging is now in public beta and rolling out to all Cloudflare accounts over the coming days. You can attach custom key-value metadata to your Cloudflare resources and query across your entire account to find what you need.

    What's included

    • Broad resource type support — Tag zones, custom hostnames, Cloudflare Tunnels, Workers, D1 databases, R2 buckets, KV namespaces, Durable Object namespaces, Queues, Stream videos, Images, Access applications, Gateway rules, AI Gateways, and more. Refer to the full list of supported resource types.
    • Powerful filtering — Query tagged resources using AND/OR logic, negation, and key-only matching. Combine up to 20 filters per query to build precise resource views.
    • Account and zone-level endpoints — Full CRUD operations across both scopes.
    • Token-based authentication — Tagging supports Account Owned Tokens that persist independently of individual users, so your automation keeps running through credential rotations and team changes.
    • Flexible role support — Super Administrators, Workers Admins, and Tag Admins can all manage tags.

    API-first by design

    The API is the primary interface for Resource Tagging and the recommended path for all workflows — scripting tag assignments, building CI/CD pipelines, or integrating with your infrastructure-as-code toolchain.

    Dashboard UI

    You can also view and manage tagged resources directly in the Cloudflare dashboard. Navigate to Manage Account > Resource Tagging to see all tagged resources across your account, filter by resource name or tag, and add or edit tags inline.

    Tagged Resources dashboard

    What's coming next

    In future releases, expect support for additional resource types across the Cloudflare platform, tag-based access control policies for scoping user permissions to tagged resources, billing and usage attribution by tag for breaking down costs by team, project, or environment, and Terraform provider support for managing tags declaratively.

    Current limitations

    • PUT replaces all tags on a resource (no partial update). Use the GET, merge, PUT workflow to modify individual tags safely.
    • DELETE removes all tags from a resource. To remove a single tag, PUT the remaining tags back.
    • Querying tags for a resource that has never been tagged returns 500 instead of 404. This is a known beta limitation.

    To get started, refer to the Resource Tagging documentation.

  1. Terraform Provider v5.19.0 introduces 14 new resources spanning AI Gateway, Pipelines, R2 Data Catalog, User Groups, Vulnerability Scanner, Workers Observability, and Zero Trust capabilities. This release significantly improves the v4 to v5 migration experience with automatic state upgraders for 26 resources, working seamlessly with the new tf-migrate CLI tool to automate resource renames, attribute updates, and moved block generation. Together, these enhancements reduce manual migration effort and minimize risk when upgrading from v4 to v5.

    Note: cmd/migrate is deprecated in favor of tf-migrate and will be removed in a future release (#7062)

    New Resources

    • cloudflare_ai_gateway: Manage AI Gateway instances
    • cloudflare_certificate_authorities_hostname_associations: Manage mTLS certificate hostname associations
    • cloudflare_custom_page_asset: Manage custom page assets
    • cloudflare_pipeline: Manage Cloudflare Pipelines
    • cloudflare_r2_data_catalog: Manage R2 Data Catalog
    • cloudflare_user_group: Manage user groups
    • cloudflare_user_group_members: Manage user group memberships
    • cloudflare_vulnerability_scanner_credential: Manage vulnerability scanner credentials
    • cloudflare_vulnerability_scanner_credential_set: Manage vulnerability scanner credential sets
    • cloudflare_vulnerability_scanner_target_environment: Manage vulnerability scanner target environments
    • cloudflare_workers_observability_destination: Manage Workers Observability destinations
    • cloudflare_zero_trust_device_ip_profile: Manage Zero Trust device IP profiles
    • cloudflare_zero_trust_device_subnet: Manage Zero Trust device subnets
    • cloudflare_zero_trust_dlp_settings: Manage Zero Trust DLP settings

    Features

    V4 to V5 Migration State Upgraders

    State upgraders added for seamless migration from v4 to v5 for the following resources:

    • account
    • account_member
    • account_token
    • authenticated_origin_pulls
    • authenticated_origin_pulls_hostname_certificate
    • byo_ip_prefix
    • custom_hostname
    • custom_ssl
    • leaked_credential_check
    • leaked_credential_check_rule
    • logpush_ownership_challenge
    • mtls_certificate
    • observatory_scheduled_test
    • pages_domain
    • regional_tiered_cache
    • turnstile_widget
    • workers_custom_domain
    • zero_trust_device_custom_profile
    • zero_trust_device_default_profile
    • zero_trust_device_posture_integration
    • zero_trust_gateway_certificate
    • zero_trust_gateway_settings
    • zero_trust_organization
    • zero_trust_tunnel_cloudflared_virtual_network
    • zone_setting

    Other Features

    • ruleset: Add content_converter and redirects_for_ai_training support to configuration rules
    • zero_trust_gateway_logging: Make importable

    Bug Fixes

    Migration & State Management

    • account_member: Add UseStateForUnknown to status field to prevent drift
    • authenticated_origin_pulls_settings: Fix no prior schema and no-op upgrade
    • certificate_pack: Initialize empty lists instead of null in state upgrader to prevent drift
    • migrations: Handle ambiguous schema_version state for v4/v5 coexistence
    • zero_trust_access_policy: Fix nil pointer panic in state upgrader; set PriorSchema nil for v4 state upgrade

    Resource-Specific Fixes

    • ai_search_instance: Restore original defaults for cache and cache_threshold; conflict resolution
    • apijson: Return empty object from MarshalForPatch when no fields are serializable
    • dlp_predefined_profile: Eliminate perpetual entries and enabled_entries drift
    • dns_record: Avoid unnecessary drift for ipv4_only and ipv6_only attributes; remove private_routing default value
    • drift: Preserve prior state values for optional fields not returned by API
    • healthcheck: Use buildHealthcheckPlanChecks helper for correct plan checks per migration source; update assertions
    • leaked_credential_check_rule: Handle empty ID from v4 provider state migration
    • list_item: Remove context
    • logpush_job: Update model for migration
    • ruleset: Fix migration; add redirects_for_ai_training to SourceV4ActionParametersModel; fix duplicate model attribute
    • worker: Add UseStateForUnknown() plan modifiers and update tests for observability.traces
    • workers_custom_domain: Handle HTTP 200 no content header; update assertions
    • workers_script: Fix model drift
    • zero_trust_access_identity_provider: Fix boolean drifts
    • zero_trust_device_managed_networks: Upgrade resource state
    • zero_trust_gateway_policy: Make filters Computed+Optional to prevent drift
    • zero_trust_gateway_settings: Fix breaking changes; implement sweeper to reset account to clean defaults
    • zone_setting: Migration test improvements and fixes

    Documentation

    • healthcheck: Update port description to clarify defaults
    • Add application-scoped access policy migration guidance
    • Update zone_settings_override migration guide for tf-migrate v2 workflow

    For more information

  1. We're excited to announce tf-migrate, a purpose-built CLI tool that simplifies migrating from Cloudflare Terraform Provider v4 to v5.

    v5 is stable and ready for production

    Terraform Provider v5 is stable and actively receiving updates. We encourage all users to migrate to v5 to take advantage of ongoing enhancements and new capabilities.

    Cloudflare uses tf-migrate to migrate our own infrastructure — the same tool we're providing to the community — ensuring the best possible migration experience.

    What tf-migrate does

    tf-migrate automates the tedious and error-prone parts of the v4 to v5 migration process:

    • Resource type renames – Automatically updates cloudflare_recordcloudflare_dns_record, cloudflare_access_applicationcloudflare_zero_trust_access_application, and 40+ other renamed resources
    • Attribute transformations – Updates field names (e.g., valuecontent for DNS records) and restructures nested blocks
    • Moved block generation – Creates Terraform 1.8+ moved blocks to prevent resource replacements and ensure zero-downtime migrations
    • Cross-file reference updates – Automatically finds and updates all references to renamed resources across your entire configuration
    • Dry-run mode – Preview all changes before applying them to ensure safety

    Combined with the automatic state upgraders introduced in v5.19+, tf-migrate eliminates the manual work and risk that previously made v5 migrations challenging. Tf-migrate operates directly on the config, and the built-in state upgraders handle the rest.

    Supported resources

    Tf-migrate currently supports the most common Terraform resources our customers use. We are actively working to expand coverage, with the most commonly used resources prioritized first.

    For the complete list of supported resources and their migration status, refer to the v5 Stabilization Tracker. This list is updated regularly as additional resources are stabilized and migration support is added.

    Resources not yet supported by tf-migrate will need to be migrated manually using the version 5 upgrade guide. The upgrade guide provides step-by-step instructions for handling resource renames, attribute changes, and state migrations.

    Get started

    We have been releasing Betas over the past month and a half while testing this tool. See the full changelog of those Betas here: tf-migrate releases.

  1. Audit Logs v2 now supports organization-level audit logs. Org Admins can retrieve audit events for actions performed at the organization level via the Audit Logs v2 API.

    To retrieve organization-level audit logs, use the following endpoint:

    Terminal window
    GET https://api.cloudflare.com/client/v4/organizations/{organization_id}/logs/audit

    This release covers user-initiated actions performed through organization-level APIs. Audit logs for system-initiated actions, a dashboard UI, and Logpush support for organizations will be added in future releases.

    For more information, refer to the Audit Logs documentation.

  1. v6.10.0

    In this release, you'll see a number of breaking changes. This is primarily due to changes in OpenAPI definitions, which our libraries are based off of, and codegen updates that we rely on to read those OpenAPI definitions and produce our SDK libraries.

    Please ensure you read through the list of changes below before moving to this version - this will help you understand any down or upstream issues it may cause to your environments.

    Breaking Changes

    See the v6.10.0 Migration Guide for before/after code examples and actions needed for each change.

    Abuse Reports - Registrar WHOIS Report Field Removals

    Several fields have been removed from AbuseReportNewParamsBodyAbuseReportsRegistrarWhoisReportRegWhoRequest:

    • RegWhoGoodFaithAffirmation
    • RegWhoLawfulProcessingAgreement
    • RegWhoLegalBasis
    • RegWhoRequestType
    • RegWhoRequestedDataElements

    AI Search - Instance Params Restructured

    The InstanceNewParams and InstanceUpdateParams types have been significantly restructured. Many fields have been moved or removed:

    • InstanceNewParams.TokenID, Type, CreatedFromAISearchWizard, WorkerDomain removed
    • InstanceUpdateParams — most configuration fields removed (including IndexMethod, IndexingOptions, MaxNumResults, Metadata, Paused, PublicEndpointParams, Reranking, RerankingModel, RetrievalOptions, RewriteModel, RewriteQuery, ScoreThreshold, SourceParams, Summarization, SummarizationModel, SystemPromptAISearch, SystemPromptIndexSummarization, SystemPromptRewriteQuery, TokenID, CreatedFromAISearchWizard, WorkerDomain)
    • InstanceSearchParams.Messages field removed along with InstanceSearchParamsMessage and InstanceSearchParamsMessagesRole types

    AI Search - InstanceItem Service Removed

    The InstanceItemService type has been removed. The items sub-resource at client.AISearch.Instances.Items no longer exists in the non-namespace path. Use client.AISearch.Namespaces.Instances.Items instead.

    AI Search - Token Types Removed

    The following types have been removed from the ai_search package:

    • TokenDeleteResponse
    • TokenListParams (and associated TokenListParamsOrderBy, TokenListParamsOrderByDirection)

    Email Security - Investigate Move Return Type Change

    The Investigate.Move.New() method now returns a raw slice instead of a paginated wrapper:

    • New() returns *[]InvestigateMoveNewResponse instead of *pagination.SinglePage[InvestigateMoveNewResponse]
    • NewAutoPaging() method removed

    Hyperdrive - Config Params Restructured

    The ConfigEditParams type lost its MTLS and Name fields. The HyperdriveMTLSParam type lost MTLS and Host fields. The Host field on origin config changed from param.Field[string] to a plain string.

    IAM - UserGroupMember Params and Return Types Changed

    The UserGroupMemberNewParams struct has been restructured and the New() method now returns a paginated response:

    • UserGroupMemberNewParams.Body renamed to UserGroupMemberNewParams.Members
    • UserGroupMemberNewParamsBody renamed to UserGroupMemberNewParamsMember
    • UserGroupMemberUpdateParams.Body renamed to UserGroupMemberUpdateParams.Members
    • UserGroupMemberUpdateParamsBody renamed to UserGroupMemberUpdateParamsMember
    • UserGroups.Members.New() returns *pagination.SinglePage[UserGroupMemberNewResponse] instead of *UserGroupMemberNewResponse

    IAM - UserGroup List Direction Type Changed

    The UserGroupListParams.Direction field changed from param.Field[string] to param.Field[UserGroupListParamsDirection] (typed enum with asc/desc values).

    Pipelines - Delete Methods Now Return Typed Responses

    Several delete methods across Pipelines now return typed responses instead of bare error:

    • Pipelines.DeleteV1() returns (*PipelineDeleteV1Response, error) instead of error
    • Pipelines.Sinks.Delete() returns (*SinkDeleteResponse, error) instead of error
    • Pipelines.Streams.Delete() returns (*StreamDeleteResponse, error) instead of error

    Queues - Message Response Types Removed

    The following response envelope types have been removed:

    • MessageBulkPushResponseSuccess
    • MessagePushResponseSuccess
    • MessageAckResponse fields RetryCount and Warnings removed

    Secrets Store - Pagination Wrapper Removal and Type Changes

    Methods now return direct types instead of SinglePage wrappers, and several internal types have been removed. Associated AutoPaging methods have also been removed:

    • Stores.New() returns *StoreNewResponse instead of *pagination.SinglePage[StoreNewResponse]
    • Stores.NewAutoPaging() method removed
    • Stores.Secrets.BulkDelete() returns *StoreSecretBulkDeleteResponse instead of *pagination.SinglePage[StoreSecretBulkDeleteResponse]
    • Stores.Secrets.BulkDeleteAutoPaging() method removed
    • Removed types: StoreDeleteResponse, StoreDeleteResponseEnvelopeResultInfo, StoreSecretDeleteResponse, StoreSecretDeleteResponseStatus, StoreSecretBulkDeleteResponse (old shape), StoreSecretBulkDeleteResponseStatus, StoreSecretDeleteResponseEnvelopeResultInfo
    • StoreNewParams restructured (old StoreNewParamsBody removed)
    • StoreSecretBulkDeleteParams restructured

    Stream - AudioTracks Return Type Change

    The AudioTracks.Get() method now returns a dedicated response type instead of a paginated list. The GetAutoPaging() method has been removed:

    • Get() returns *AudioTrackGetResponse instead of *pagination.SinglePage[Audio]
    • GetAutoPaging() method removed

    Stream - Clip Type Removal and Return Type Change

    The Clip.New() method now returns the shared Video type. The following types have been entirely removed:

    • Clip, ClipPlayback, ClipStatus, ClipWatermark

    Stream - Copy and Clip Params Field Removals

    • ClipNewParams.MaxDurationSeconds, ThumbnailTimestampPct, Watermark removed
    • CopyNewParams.ThumbnailTimestampPct, Watermark removed

    Stream - Download and Webhook Changes

    • DownloadNewResponseStatus type removed
    • WebhookUpdateResponse and WebhookGetResponse changed from interface{} type aliases to full struct types

    Zero Trust - Access AI Control MCP Portal Union Types Removed

    The following union interface types have been removed:

    • AccessAIControlMcpPortalListResponseServersUpdatedPromptsUnion
    • AccessAIControlMcpPortalListResponseServersUpdatedToolsUnion
    • AccessAIControlMcpPortalReadResponseServersUpdatedPromptsUnion
    • AccessAIControlMcpPortalReadResponseServersUpdatedToolsUnion

    Features

    Vulnerability Scanner (client.VulnerabilityScanner)

    NEW SERVICE: Full vulnerability scanning management

    • CredentialSets - CRUD for credential sets (New, Update, List, Delete, Edit, Get)
    • Credentials - Manage credentials within sets (New, Update, List, Delete, Edit, Get)
    • Scans - Create and manage vulnerability scans (New, List, Get)
    • TargetEnvironments - Manage scan target environments (New, Update, List, Delete, Edit, Get)

    AI Search - Namespaces (client.AISearch.Namespaces)

    NEW SERVICE: Namespace-scoped AI Search management

    • New(), Update(), List(), Delete(), ChatCompletions(), Read(), Search()
    • Instances - Namespace-scoped instances (New, Update, List, Delete, ChatCompletions, Read, Search, Stats)
    • Jobs - Instance job management (New, Update, List, Get, Logs)
    • Items - Instance item management (List, Delete, Chunks, NewOrUpdate, Download, Get, Logs, Sync, Upload)

    Browser Rendering - Devtools (client.BrowserRendering.Devtools)

    NEW SERVICE: DevTools protocol browser control

    • Session - List and get devtools sessions
    • Browser - Browser lifecycle management (New, Delete, Connect, Launch, Protocol, Version)
    • Page - Get page by target ID
    • Targets - Manage browser targets (New, List, Activate, Get)

    Registrar (client.Registrar)

    NEW: Domain check and search endpoints

    • Check() - POST /accounts/{account_id}/registrar/domain-check
    • Search() - GET /accounts/{account_id}/registrar/domain-search

    NEW: Registration management (client.Registrar.Registrations)

    • New(), List(), Edit(), Get()
    • RegistrationStatus.Get() - Get registration workflow status
    • UpdateStatus.Get() - Get update workflow status

    Cache - Origin Cloud Regions (client.Cache.OriginCloudRegions)

    NEW SERVICE: Manage origin cloud region configurations

    • New(), List(), Delete(), BulkDelete(), BulkEdit(), Edit(), Get(), SupportedRegions()

    Zero Trust - DLP Settings (client.ZeroTrust.DLP.Settings)

    NEW SERVICE: DLP settings management

    • Update(), Delete(), Edit(), Get()

    Radar

    • AgentReadiness.Summary() - Agent readiness summary by dimension
    • AI.MarkdownForAgents.Summary() - Markdown-for-agents summary
    • AI.MarkdownForAgents.Timeseries() - Markdown-for-agents timeseries

    IAM (client.IAM)

    • UserGroups.Members.Get() - Get details of a specific member in a user group
    • UserGroups.Members.NewAutoPaging() - Auto-paging variant for adding members
    • UserGroups.NewParams.Policies changed from required to optional

    Bot Management

    • ContentBotsProtection field added to BotFightModeConfiguration and SubscriptionConfiguration (block/disabled)

    Deprecations

    None in this release.

    Get started

  1. Custom Dashboards are now available to all Cloudflare customers. Build personalized views that highlight the metrics most critical to your infrastructure and security posture, moving beyond standard product dashboards.

    This update significantly expands the data available for visualization. Build charts based on any of the 100+ datasets available via the Cloudflare GraphQL API, covering everything from WAF events and Workers metrics to Load Balancing and Zero Trust logs.

    Log Explorer integration

    For Log Explorer customers, you can now turn raw log queries directly into dashboard charts. When you identify a specific pattern or spike while investigating logs, save that query as a visualization to monitor those signals in real-time without leaving the dashboard.

    Key benefits

    • Unified visibility: Consolidate signals from different Cloudflare products (for example, HTTP Traffic and R2 Storage) into a single view.
    • Flexible monitoring: Create charts that focus on specific status codes, ASN regions, or security actions that matter to your business.
    • Expanded limits: Log Explorer customers can create up to 100 dashboards (up from 25 for standard customers).
    Custom Dashboards home page showing dashboard list and chart previews

    To get started, refer to the Custom Dashboards documentation.

  1. A new Network Overview page in the Cloudflare dashboard gives you a single starting point for network security and connectivity products.

    From the Network Overview page, you can:

    • Connect resources with Cloudflare Tunnel - Create tunnels to connect your infrastructure to Cloudflare without exposing it to the public Internet.
    • Monitor traffic with Network Flow - Get real-time visibility into traffic volume from your routers.
    • Configure Address Maps - Map dedicated static IPs or BYOIP prefixes to specific hostnames.
    • Explore Magic Transit and Cloudflare WAN - Set up DDoS protection for your networks and connectivity for your branch offices and data centers.

    To find it, go to Networking in the dashboard sidebar.

    If you already use Magic Transit, Cloudflare WAN, or other Cloudflare network services products, your existing experience is unchanged.

    Network Overview page in the Cloudflare dashboard
  1. 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.

    Billable Usage dashboard

    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.

    The dashboard displays:

    • A bar chart showing daily usage charges for your billing period
    • A sortable table breaking down usage by product, including total usage, billable usage, and cumulative costs
    • Ability to view previous billing periods

    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.

    To access the dashboard, go to Manage Account > Billing > Billable Usage.

    Screenshot of the Billable Usage dashboard in the Cloudflare dashboard

    Budget alerts

    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.

    To configure a budget alert:

    1. Go to Manage Account > Billing > Billable Usage.
    2. Select Set Budget Alert.
    3. Enter a budget threshold amount greater than $0.
    4. Select Create.

    Alternatively, configure alerts via Notifications > Add > Budget Alert.

    Create Budget Alert modal in the Cloudflare dashboard

    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.

    Both features are available to Pay-as-you-go accounts with usage-based products (Workers, R2, Images, etc.). Enterprise contract accounts are not supported.

    For more information, refer to the Usage based billing documentation.

  1. When a Cloudflare Worker intercepts a visitor request, it can dispatch additional outbound fetch calls called subrequests. By default, each subrequest generates its own log entry in Logpush, resulting in multiple log lines per visitor request. With subrequest merging enabled, subrequest data is embedded as a nested array field on the parent log record instead.

    What's new

    • New subrequest_merging field on Logpush jobs — Set "merge_subrequests": true when creating or updating an http_requests Logpush job to enable the feature.
    • New Subrequests log field — When subrequest merging is enabled, a Subrequests field (array\<object\>) is added to each parent request log record. Each element in the array contains the standard http_requests fields for that subrequest.

    Limitations

    • Applies to the http_requests (zone-scoped) dataset only.
    • A maximum of 50 subrequests are merged per parent request. Subrequests beyond this limit are passed through unmodified as individual log entries.
    • Subrequests must complete within 5 minutes of the visitor request. Subrequests that exceed this window are passed through unmodified.
    • Subrequests that do not qualify appear as separate log entries — no data is lost.
    • Subrequest merging is being gradually rolled out and is not yet available on all zones. Contact your account team for concerns or to ensure it is enabled for your zone.
    • For more information, refer to Subrequests.
  1. Logpush has traditionally been great at delivering Cloudflare logs to a variety of destinations in JSON format. While JSON is flexible and easily readable, it can be inefficient to store and query at scale.

    With this release, you can now send your logs directly to Pipelines to ingest, transform, and store your logs in R2 as Parquet files or Apache Iceberg tables managed by R2 Data Catalog. This makes the data footprint more compact and more efficient at querying your logs instantly with R2 SQL or any other query engine that supports Apache Iceberg or Parquet.

    Transform logs before storage

    Pipelines SQL runs on each log record in-flight, so you can reshape your data before it is written. For example, you can drop noisy fields, redact sensitive values, or derive new columns:

    INSERT INTO http_logs_sink
    SELECT
    ClientIP,
    EdgeResponseStatus,
    to_timestamp_micros(EdgeStartTimestamp) AS event_time,
    upper(ClientRequestMethod) AS method,
    sha256(ClientIP) AS hashed_ip
    FROM http_logs_stream
    WHERE EdgeResponseStatus >= 400;

    Pipelines SQL supports string functions, regex, hashing, JSON extraction, timestamp conversion, conditional expressions, and more. For the full list, refer to the Pipelines SQL reference.

    Get started

    To configure Pipelines as a Logpush destination, refer to Enable Cloudflare Pipelines.

  1. Cloudflare's network now supports redirecting verified AI training crawlers to canonical URLs when they request deprecated or duplicate pages. When enabled via AI Crawl Control > Quick Actions, AI training crawlers that request a page with a canonical tag pointing elsewhere receive a 301 redirect to the canonical version. Humans, search engine crawlers, and AI Search agents continue to see the original page normally.

    This feature leverages your existing <link rel="canonical"> tags. No additional configuration required beyond enabling the toggle. Available on Pro, Business, and Enterprise plans at no additional cost.

    Refer to the Redirects for AI Training documentation for details.

  1. AI Crawl Control now includes new tools to help you prepare your site for the agentic Internet—a web where AI agents are first-class citizens that discover and interact with content differently than human visitors.

    Content Format insights

    The Metrics tab now includes a Content Format chart showing what content types AI systems request versus what your origin serves. Understanding these patterns helps you optimize content delivery for both human and agent consumption.

    Directives tab (formerly Robots.txt)

    The Robots.txt tab has been renamed to Directives and now includes a link to check your site's Agent Readiness score.

    Refer to our blog post on preparing for the agentic Internet for more on why these capabilities matter.

  1. Cloudflare has added new fields to multiple Logpush datasets:

    TenantID field

    The following Gateway and Zero Trust datasets now include a TenantID field:

    Firewall for AI fields

    The following datasets now include Firewall for AI fields:

    • Firewall Events:

      • FirewallForAIInjectionScore: The score indicating the likelihood of a prompt injection attack in the request.
      • FirewallForAIPIICategories: List of PII categories detected in the request.
      • FirewallForAITokenCount: The number of tokens in the request.
      • FirewallForAIUnsafeTopicCategories: List of unsafe topic categories detected in the request.
    • HTTP Requests:

      • FirewallForAIInjectionScore: The score indicating the likelihood of a prompt injection attack in the request.
      • FirewallForAIPIICategories: List of PII categories detected in the request.
      • FirewallForAITokenCount: The number of tokens in the request.
      • FirewallForAIUnsafeTopicCategories: List of unsafe topic categories detected in the request.

    For the complete field definitions for each dataset, refer to Logpush datasets.