Sign inConnect your agent
infochanged

Rules - Validate Rulesets changes before deployment

Announced
Tags
Rules
Severity
info, set by reef/rss-rule-v1
Source
https://developers.cloudflare.com/changelog/post/2026-09-17-rulesets-dry-run-validation/

<p>Cloudflare Rules now validates ruleset changes before deployment, helping you catch invalid expressions, action parameters, permission issues, unavailable features, and quota limits without publishing the configuration.</p> <p>The Cloudflare dashboard performs this validation automatically when you create or update rules from <strong>Security</strong> &gt; <strong>Security rules</strong> or <strong>Rules</strong> &gt; <strong>Overview</strong>.</p> <p>Supported Rulesets API mutation endpoints now also accept the <code>dry_run=true</code> query parameter. A dry run performs the same authorization and server-side validation checks as the requested change, but does not persist or publish it. Successful operations that normally return a <code>200</code> response return <code>result: null</code>. Operations that normally return <code>204</code> continue to do so.</p> <div tabindex="-1" class="heading-wrapper level-h4"><h4 id="api-example">API example</h4><a class="anchor-link" href="#api-example"><span aria-hidden="true" class="anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span></a></div> <p>Add <code>dry_run=true</code> to a Rulesets API request to validate it without creating the ruleset:</p> <figure class="nb-code-figure" data-nb-lang="bash"><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="bash" data-nb-lang="bash"><code><span class="line"><span class="nb-shiki-1t8gfj">curl</span><span class="nb-shiki-dzsirb"> --request</span><span class="nb-shiki-mdbnqw"> POST</span><span class="nb-shiki-dzsirb"> \</span></span> <span class="line"><span class="nb-shiki-mdbnqw"> "https://api.cloudflare.com/client/v4/zones/</span><span class="nb-shiki-140thh">$ZONE_ID</span><span class="nb-shiki-mdbnqw">/rulesets?dry_run=true"</span><span class="nb-shiki-dzsirb"> \</span></span> <span class="line"><span class="nb-shiki-dzsirb"> --header</span><span class="nb-shiki-mdbnqw"> "Authorization: Bearer </span><span class="nb-shiki-140thh">$CLOUDFLARE_API_TOKEN</span><span class="nb-shiki-mdbnqw">"</span><span class="nb-shiki-dzsirb"> \</span></span> <span class="line"><span class="nb-shiki-dzsirb"> --header</span><span class="nb-shiki-mdbnqw"> "Content-Type: application/json"</span><span class="nb-shiki-dzsirb"> \</span></span> <span class="line"><span class="nb-shiki-dzsirb"> --data</span><span class="nb-shiki-mdbnqw"> '{</span></span> <span class="line"><span class="nb-shiki-mdbnqw"> "name": "Custom firewall rules",</span></span> <span class="line"><span class="nb-shiki-mdbnqw"> "kind": "zone",</span></span> <span class="line"><span class="nb-shiki-mdbnqw"> "phase": "http_request_firewall_custom",</span></span> <span class="line"><span class="nb-shiki-mdbnqw"> "rules": [</span></span> <span class="line"><span class="nb-shiki-mdbnqw"> {</span></span> <span class="line"><span class="nb-shiki-mdbnqw"> "action": "block",</span></span> <span class="line"><span class="nb-shiki-mdbnqw"> "expression": "ip.src.country eq \"GB\"",</span></span> <span class="line"><span class="nb-shiki-mdbnqw"> "description": "Block requests from the United Kingdom",</span></span> <span class="line"><span class="nb-shiki-mdbnqw"> "enabled": true</span></span> <span class="line"><span class="nb-shiki-mdbnqw"> }</span></span> <span class="line"><span class="nb-shiki-mdbnqw"> ]</span></span> <span class="line"><span class="nb-shiki-mdbnqw"> }'</span></span></code></pre></figure> <p>For more information, refer to <a href="https://developers.cloudflare.com/ruleset-engine/rulesets-api/dry-run/">Validate rule changes before deployment</a>.</p>

The text above is the source's. reef added the severity, the dates it could read from the text, and the endpoints and scopes named in code.