Browser Run - Control which hostnames Browser Run sessions can access
- Announced
- Tags
- Browser-Run
- Severity
- info, set by
reef/rss-rule-v1 - Source
- https://developers.cloudflare.com/changelog/post/2026-09-14-guardrails/
<p><a href="https://developers.cloudflare.com/browser-run/">Browser Run</a> now supports <a href="https://developers.cloudflare.com/browser-run/features/guardrails/">guardrails</a>, which limit a browser session's HTTP and HTTPS requests to permitted hostnames.</p> <p>Use guardrails when you need to:</p> <ul> <li>Keep a browser workflow limited to a specific website and its subdomains.</li> <li>Load only known third-party APIs, scripts, images, and fonts.</li> <li>Generate a screenshot or PDF from HTML you provide while preventing it from loading external content.</li> </ul> <p>Set guardrails when starting a session with Puppeteer, Playwright, or the REST API. With a browser binding named <code>MYBROWSER</code>, pass <code>guardrails</code> when launching Puppeteer:</p> <div><div data-nb-tabs data-nb-sync-key="workersExamples" class><div class="relative flex border-b border-border" role="tablist" data-nb-tabs-list><span class="bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out" data-nb-tabs-indicator aria-hidden="true"></span></div><div class="mt-3"><div role="tabpanel" data-nb-tabs-content data-nb-tab-label="JavaScript" class><figure class="nb-code-figure" data-nb-lang="js"><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="js" data-nb-lang="js"><code><span class="line"><span class="nb-shiki-1itgoe">import</span><span class="nb-shiki-140thh"> puppeteer </span><span class="nb-shiki-1itgoe">from</span><span class="nb-shiki-mdbnqw"> "@cloudflare/puppeteer"</span><span class="nb-shiki-140thh">;</span></span> <span class="line"></span> <span class="line"><span class="nb-shiki-1itgoe">export</span><span class="nb-shiki-1itgoe"> async</span><span class="nb-shiki-1itgoe"> function</span><span class="nb-shiki-1t8gfj"> startGuardedSession</span><span class="nb-shiki-140thh">(</span><span class="nb-shiki-1jdh33">env</span><span class="nb-shiki-140thh">) {</span></span> <span class="line"><span class="nb-shiki-1itgoe"> return</span><span class="nb-shiki-140thh"> puppeteer.</span><span class="nb-shiki-1t8gfj">launch</span><span class="nb-shiki-140thh">(env.</span><span class="nb-shiki-dzsirb">MYBROWSER</span><span class="nb-shiki-140thh">, {</span></span> <span class="line"><span class="nb-shiki-140thh"> guardrails: {</span></span> <span class="line"><span class="nb-shiki-140thh"> allowedDomains: [</span><span class="nb-shiki-mdbnqw">"example.com"</span><span class="nb-shiki-140thh">, </span><span class="nb-shiki-mdbnqw">"*.example.com"</span><span class="nb-shiki-140thh">],</span></span> <span class="line"><span class="nb-shiki-140thh"> },</span></span> <span class="line"><span class="nb-shiki-140thh"> });</span></span> <span class="line"><span class="nb-shiki-140thh">}</span></span></code></pre></figure></div><div role="tabpanel" data-nb-tabs-content data-nb-tab-label="TypeScript" class><figure class="nb-code-figure" data-nb-lang="ts"><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="ts" data-nb-lang="ts"><code><span class="line"><span class="nb-shiki-1itgoe">import</span><span class="nb-shiki-140thh"> puppeteer </span><span class="nb-shiki-1itgoe">from</span><span class="nb-shiki-mdbnqw"> "@cloudflare/puppeteer"</span><span class="nb-shiki-140thh">;</span></span> <span class="line"></span> <span class="line"><span class="nb-shiki-1itgoe">interface</span><span class="nb-shiki-1t8gfj"> Env</span><span class="nb-shiki-140thh"> {</span></span> <span class="line"><span class="nb-shiki-1jdh33"> MYBROWSER</span><span class="nb-shiki-1itgoe">:</span><span class="nb-shiki-1t8gfj"> Fetcher</span><span class="nb-shiki-140thh">;</span></span> <span class="line"><span class="nb-shiki-140thh">}</span></span> <span class="line"></span> <span class="line"><span class="nb-shiki-1itgoe">export</span><span class="nb-shiki-1itgoe"> async</span><span class="nb-shiki-1itgoe"> function</span><span class="nb-shiki-1t8gfj"> startGuardedSession</span><span class="nb-shiki-140thh">(</span><span class="nb-shiki-1jdh33">env</span><span class="nb-shiki-1itgoe">:</span><span class="nb-shiki-1t8gfj"> Env</span><span class="nb-shiki-140thh">) {</span></span> <span class="line"><span class="nb-shiki-1itgoe"> return</span><span class="nb-shiki-140thh"> puppeteer.</span><span class="nb-shiki-1t8gfj">launch</span><span class="nb-shiki-140thh">(env.</span><span class="nb-shiki-dzsirb">MYBROWSER</span><span class="nb-shiki-140thh">, {</span></span> <span class="line"><span class="nb-shiki-140thh"> guardrails: {</span></span> <span class="line"><span class="nb-shiki-140thh"> allowedDomains: [</span><span class="nb-shiki-mdbnqw">"example.com"</span><span class="nb-shiki-140thh">, </span><span class="nb-shiki-mdbnqw">"*.example.com"</span><span class="nb-shiki-140thh">],</span></span> <span class="line"><span class="nb-shiki-140thh"> },</span></span> <span class="line"><span class="nb-shiki-140thh"> });</span></span> <span class="line"><span class="nb-shiki-140thh">}</span></span></code></pre></figure></div></div></div><script type="module" src="https://developers.cloudflare.com/home/runner/work/cloudflare-docs/cloudflare-docs/src/components/ui/tabs/Tabs.astro?astro&type=script&index=0&lang.ts"></script></div> <p>In addition to session guardrails, Browser Run now supports a read-only mode for <a href="https://developers.cloudflare.com/browser-run/features/live-view/">Live View</a>. Live View lets you watch and interact with an active Browser Run session in real time. A read-only link lets someone watch without clicking, typing, navigating, or running JavaScript.</p> <p>To create a read-only link, set <code>{ mode: "readonly" }</code> when generating the Live View URL. This setting affects only the person using that link. The session's hostname restrictions remain unchanged.</p> <p>Refer to the <a href="https://developers.cloudflare.com/browser-run/features/guardrails/">guardrails documentation</a> for more information.</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.