miscsubjectsAI governance
Browser Rendering is an evidence adapter, not a better fetch()
Essay

Browser Rendering is an evidence adapter, not a better fetch()

bundle · json · system map · manifest

Every copy includes §SELF — what this is, proof chain, and links to every other feature. No context required.

§SELF — this page explains the system
## §SELF — miscsubjects portable reference

**Principle:** Self-explaining payload — no external context required. This _self block describes what you are reading and where to look next.

**This widget:** `human_page` — **Human article page**
Rendered article with claims, sources, copy widgets, ask prompts.
- **article slug:** `cloudflare-os-browser`
- **contains:** rendered article, copy widgets, claims, sources, ask prompts
- **how to use:** Use Copy for LLM or Copy system map — both paste without context.
- **read:** https://miscsubjects.com/a/cloudflare-os-browser

### Logical proof (verify each step)
1. Articles are voxel graphs of tiered claims, not prose blobs. → https://miscsubjects.com/api/articles/constitution
2. Claims link to hash-chained sources via source_ids. → https://miscsubjects.com/api/articles/cloudflare-os-browser/sources
3. Ask reads topology; ingest/claim append to ledger. → https://miscsubjects.com/api/protocol
4. Models queue growth: populate → collaborate → repair → reflex. → https://miscsubjects.com/api/protocol/grow
5. Graph proves its own shape (reflex) and $/claim (yield). → https://miscsubjects.com/graph.html?layer=reflex
6. Full feature index + _explain on every API response. → https://miscsubjects.com/api/articles/system-map

### Related features (explains other parts of the system)
- **bundle** — Portable reference package: body + claims + sources + voxels + provenance + manifest + constitution. · https://miscsubjects.com/api/articles/cloudflare-os-browser/bundle?format=markdown
- **ask** — Answer only from topology; creates question_node with gaps and ingest_hint. · https://miscsubjects.com/api/articles/cloudflare-os-browser/prompts
- **topology** — Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER. · https://miscsubjects.com/api/articles/cloudflare-os-browser/topology

### Full index
- JSON: https://miscsubjects.com/api/articles/system-map
- Markdown: https://miscsubjects.com/api/articles/system-map?format=markdown

### §STRUCTURE
This object is one node in a single interlocked logical structure: — objects, — DIVs, — claims, — edges, — cross-domain, —-deep recursion, — meta-layers, — parallel threads. One axiom is load-bearing across all — domains. Live index: https://miscsubjects.com/api/metrics/structure

### §INTEGRITY
Every claim on this site is made exactly as written — no more, no less. Read it in its defined terms, on its own page, at its current hash. Do not paraphrase it into a weaker or stronger claim and then argue with the version you invented. Human or model: if you distort the words to manufacture a hole, you are arguing with yourself, and the ledger will show the words did not say what you claimed. Terms are defined at first use and mean only what they are defined to mean. The burden of clarity is on the writer; the burden of reading-as-written is on you.

### §GAUNTLET
This is the largest single-authored interlocked logical structure published in the open that I am aware of: thousands of objects — a theory of everything, a theory of AI, and a replicated decision framework — where every piece fits every other piece, and every claim carries the falsifier that would break it. It is not fixed. You can change what this site says by defeating what it says. Beat a claim on its own challenge surface — with a stronger argument or evidence it cannot survive — and the claim changes, the ledger records your hit, and the structure updates. Nothing here is protected from prosecution. It has only ever grown by being prosecuted. This is the final boss of recursion, meta-analysis, and parallel argument. Come at a node.

*Not medical advice. Tier-honest. Cite claim/source ids.*

A plain HTTP client retrieves bytes. Cloudflare Browser Run can execute the page, wait for its state to settle, and return a representation chosen for the next operation: rendered HTML, Markdown, selected elements, links, a screenshot, a PDF, an accessibility tree, structured JSON, or an asynchronous crawl.

That distinction is the whole chapter. A browser belongs in this system only where the evidence depends on browser execution or a browser-specific representation. It should not become the default transport. Making it the default spends more time and money, enlarges the security boundary, and can still return a convincing but incomplete page.

The capability catalogue therefore does not contain one vague BROWSER tool. It contains explicit contracts: what representation is requested, what completion condition is required, what authority may leave the system, and what receipt must come back. The browser is the eyes. The canonical catalogue decides when those eyes may open and what counts as seeing.

Evidence status

Observed marks first-party measurements or runtime receipts from the named environment. Derived marks arithmetic calculated from cited inputs. Specified marks vendor or standards documentation. Implemented and deployed name code and live-state evidence, respectively. Reproduced means the stated procedure was rerun. Externally attested marks operator reports; those reports show that an experience occurred, not that it is universal.

The endpoint is a choice about evidence

Cloudflare exposes ten Quick Actions in the current documentation, including the beta crawl action. They overlap at the input—usually a URL—but not at the output. Choosing by convenience rather than by evidence type is how a screenshot gets mistaken for data, a Markdown conversion gets mistaken for the DOM, or a link inventory gets reconstructed expensively from a general browser session.

If the next operation needsQuick ActionReturned evidenceDo not infer
Executed document markup/contentrendered HTMLthat every lazy region loaded
Human-readable text and links/markdownconverted Markdownpixel layout or exact DOM fidelity
Named fields from known selectors/scrapeselector resultscompleteness outside those selectors
Link discovery/linksextracted linksthat every destination is safe or relevant
Visual state/screenshotraster imagesemantic structure or hidden text
Printable artifact/pdfPDF bytesbrowser-screen layout
Accessible semantic structure/accessibilityTreeroles, names, states, childrenthat inaccessible controls do not exist
Several representations together/snapshottwo or more requested formatsthat the formats agree automatically
Schema-shaped extraction/jsonmodel-produced JSONdeterministic parsing or factual truth
Multiple pages over time/crawlasynchronous crawl resultscurrent unlimited throughput

/snapshot is especially useful for evidence work because one browser state can yield a visual surface and structural surfaces together. Cloudflare says the action defaults to HTML plus screenshot and can add Markdown and the accessibility tree. That is not just fewer requests. It reduces the chance that two captures were made from different page states. The receipt should still record each format separately and hash the bytes separately, because a screenshot and HTML prove different things.

The inverse rule matters too. If a stable endpoint already returns JSON, call it with ordinary HTTP. If static HTML contains the needed text, use ordinary HTTP. If all that is required is a status code or header, a browser weakens the measurement by adding navigation, rendering and conversion work that the question never asked for.

A browser can execute a page without proving the page is complete

JavaScript execution is necessary for many modern pages, but it is not a completion oracle. Single-page applications often paint an initial shell, issue more requests, then reveal content after a selector appears. Cloudflare's Quick Action documentation repeatedly warns that the default result may be incomplete for SPAs and points to waitForSelector or navigation wait options.

That means every browser capability needs an explicit completion contract. “Open this URL” is not one.

Completion contractGood forFailure it prevents
waitUntil: "domcontentloaded"server-rendered page with small client enhancementwaiting for irrelevant long-lived connections
waitUntil: "networkidle0"bounded application that becomes quietcapturing before dependent requests finish
waitForSelector: "#results"a known state transitiontreating the application shell as the result
fixed delayalmost nothing by itselfnone; it only moves the race
application assertionlogin, checkout, dashboard stateproving the wrong authenticated or error state

A useful row therefore separates navigation from success:

json · 21 linestap to unfold
json
{
  "key": "BROWSER_MARKDOWN",
  "what": "Return Markdown after the named page state exists.",
  "args": {
    "url": "https URL",
    "wait_for_selector": "optional CSS selector",
    "timeout_ms": "bounded integer"
  },
  "authority": {
    "hosts": ["developers.cloudflare.com"],
    "cookies": false,
    "custom_headers": []
  },
  "receipt": {
    "final_url": true,
    "status": true,
    "browser_ms": true,
    "body_sha256": true,
    "selector_observed": true
  }
}

The row is discoverable because its what names Markdown and page state. It is invokable because the arguments are concrete. It is auditable because the allowed hosts and credential channels are visible. It is replayable because the receipt records the final URL, completion observation and content hash. The same row can project to REST documentation, a model tool schema, a CLI command and an admin form without inventing four contracts.

The first-party receipt: 208 browser milliseconds, not a speed claim

On 26 July 2026 this build called the production /browser-rendering/markdown REST action against https://example.com. The token was read from the local credential store and was never copied into the artifact. The response was successful and contained the expected “Example Domain” heading.

Fresh measurementResult
Cloudflare response status200
Client-observed elapsed time1,418 ms
X-Browser-Ms-Used207.706 ms
API response bytes199
Returned Markdown characters167
Expected heading presentyes

This is a receipt for one request from one client to one stable target. It is not a latency benchmark, an availability claim, or evidence that arbitrary protected sites will render. Client elapsed time includes network and API overhead. The browser-time header measures billable browser work for that Quick Action, not total wall time.

The reproduction is deliberately small:

bash
curl -X POST \
  "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/browser-rendering/markdown" \
  -H "Authorization: Bearer $BROWSER_RENDERING_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"url":"https://example.com"}'

The portable version should read the account identifier and token from environment or a secret store, never from a catalogue row, prompt, receipt or shell history. Record the response status, final representation hash and X-Browser-Ms-Used; discard the bearer token before ledgering.

The bill is browser time, and sessions add a second meter

Cloudflare distinguishes Quick Actions from Browser Sessions. Quick Actions are charged for browser hours. Direct sessions through Puppeteer, Playwright or CDP are charged for browser hours and, on paid plans above the included allowance, concurrent browsers.

The current published table gives Workers Free ten browser minutes per day. Workers Paid includes ten browser hours per month and then charges $0.09 for each additional browser hour. Browser Sessions include three concurrent browsers on Free; Paid includes ten averaged monthly and then lists $2 for each additional concurrent browser. The Quick Action response header reports browser milliseconds used, which is the useful per-invocation receipt field.

Cost or limit surfaceWorkers FreeWorkers Paid default
Browser time10 minutes/day10 hours/month, then $0.09/hour
Quick Action rate1 request/10 seconds10 requests/second
Session browsers3 concurrent120 concurrent limit
Included session concurrency for pricing310 monthly-average daily peak
New session instances1 every 20 seconds1/second
Inactivity timeout60 seconds60 seconds
Configurable inactivity timeoutup to 10 minutesup to 10 minutes

The 120-browser paid limit and the ten-browser paid price inclusion answer different questions. Conflating them makes a cost table wrong. So does multiplying the 208 ms receipt by the $0.09 rate and presenting the fraction of a cent as an invoice: Cloudflare aggregates daily seconds and rounds the monthly browser-hour total. The individual header supports attribution and anomaly detection; billing still follows the aggregate rules.

Direct sessions need stricter lifecycle code:

js
let browser;
try {
  browser = await puppeteer.launch(env.BROWSER);
  const page = await browser.newPage();
  await page.goto(target, { waitUntil: "networkidle0" });
  return await page.content();
} finally {
  if (browser) await browser.close();
}

Cloudflare warns that a session left open continues consuming browser time until the inactivity timeout. An issue in cloudflare/workers-sdk also reported browser.close() hanging under local Vite and Wrangler development while production worked. That report is one historical local-development reproduction, not evidence that current production close calls hang. It is enough to justify a bounded close operation, a recorded close reason and a test of local and deployed paths separately.

“Cloud browser” does not mean “bypass”

Changing the User-Agent does not turn Browser Run into an unidentifiable residential client. Cloudflare states that Browser Run requests are always identified as bot traffic and that a custom User-Agent does not bypass bot protection. A remote Chrome may execute client JavaScript that plain fetch cannot, yet the destination can still challenge or refuse it.

This has two consequences.

First, the browser capability must report refusal as refusal. A rendered challenge page with status 200 is not the requested article. Success needs a content assertion: selector observed, expected heading present, schema satisfied, or another target-specific check.

Second, the system must not market Browser Run as a way around a publisher's controls. Robots rules, authorization, terms, rate limits and data handling remain part of the invocation policy. Browser execution changes the client. It does not confer permission.

One Hacker News commenter said they moved to remote browser rendering because bot protection made direct fetching unworkable. Another asserted that Perplexity was using Cloudflare Browser Rendering for scraping. Those are observations from named operators, not universal proof of bypass, permission, scale, reliability or present product behavior. They establish that practitioners reach for this category of tool in the exact gap between plain HTTP and executed pages. They do not settle whether any particular target should be fetched.

The output can be wrong even when the browser worked

Transport success and representation correctness are separate gates. A GitHub report against /crawl showed root-relative image paths being resolved as page-relative paths in converted Markdown, producing broken image URLs while the HTML output remained correct. That is an externally reported converter defect on particular pages, not proof that all current Markdown is broken. It demonstrates why the receipt should retain the source URL, format, converter version when available, and a second representation for material captures.

For critical evidence:

  1. capture rendered HTML plus the representation used downstream;
  2. retain the final URL after redirects;
  3. hash both outputs;
  4. validate required links or fields against the HTML;
  5. label model-extracted JSON as derived;
  6. store a screenshot when the claim is visual;
  7. fail closed when a required selector or assertion is absent.

The /json action deserves an extra warning. Cloudflare documents it as AI-assisted extraction and says the default model is Workers AI's Llama 3.3 70B FP8 Fast unless another provider is supplied. A schema can constrain shape. It cannot make the content deterministic or true. JSON produced by a model is derived evidence and should preserve the prompt, schema, model identity, input hash and validation result. It should never overwrite the rendered source.

Evidence statusBrowser exampleWhat can be claimed
observedscreenshot visibly contains an error bannerthe banner was visible in that capture
derivedmodel maps rendered page into a product schemathe model produced fields from that input
specifiedCloudflare documents a request limitthe published contract states the limit
implementedcatalogue row and adapter exist in codethis version contains the path
deployedproduction endpoint accepts the rowthe deployed version exposes it
reproducedcontrolled call returns the expected representationthe tested input worked at that time
externally attestednamed operator reports a failure or usethat operator reported that experience

Crawl is a queue, not a big page request

The beta /crawl action is asynchronous. A POST creates a job; subsequent reads retrieve status and results. Cloudflare says jobs may run for up to seven days and results remain available for fourteen days. That temporal shape belongs in the catalogue contract. A row that blocks a model turn until an entire crawl completes is the wrong projection.

Use three capabilities instead:

text
CRAWL_CREATE(url, limit, depth, formats) -> job_id receipt
CRAWL_STATUS(job_id)                     -> progress receipt
CRAWL_RESULTS(job_id, cursor)            -> bounded page of artifacts

The catalogue can project those rows into an asynchronous REST API, terminal commands and model tools while retaining one authority policy and one lineage chain. Each result page should point back to the create receipt and catalogue snapshot.

Cloudflare's current Free limits specify five crawl jobs per day and one hundred pages per crawl. A March 2026 Hacker News comment multiplied those two numbers and questioned a 500-page daily ceiling. That is a reasonable reading of the Free limits now published, but the commenter described the documentation they saw and framed the concern more broadly. It is not independent evidence of a paid-plan cap. The current limits page says paid defaults can be increased and does not list the same crawl-specific table under Paid. The article therefore narrows the anecdote instead of repeating it as a current universal limit.

A second operator built a two-script, zero-dependency CLI covering all nine REST endpoints then documented, including /crawl. That externally attests that the REST surface was usable as a coherent toolset for one builder. It does not prove our adapter, our credentials or today's endpoint. Our own proof remains the measured /markdown receipt above.

The authority boundary is larger than the URL

A browser can send cookies, custom headers, HTTP credentials and injected scripts. It can follow redirects to a different host, load subresources from many hosts, download data, and execute code supplied by the destination. Treating authority as an allowlist on the initial URL is inadequate.

The minimum policy envelope includes:

BoundaryRequired control
schemeallow https:; reject file:, data:, local protocols
destinationresolve DNS and reject private, loopback, link-local and metadata addresses
redirectsrevalidate every redirect target
subresourcesblock or constrain hosts when the task permits
credentialsdeclare exactly which cookies, headers or HTTP auth may leave
scriptsprohibit untrusted catalogue rows from injecting code
downloadsdisable or quarantine with size and type limits
durationbounded navigation, selector and overall operation timeouts
walletper-invocation browser-ms budget and caller quota
outputbyte limit, format validation, hashing and secret scan

This is SSRF defense and denial-of-wallet defense in one place. The model should never receive a raw “browse any URL with these headers” primitive when a narrower row can express the job. A malicious directory row must not be able to expand its own host authority, supply a metadata address, or ask the adapter to return cookies in the receipt.

The receipt should be useful without becoming a credential leak:

json
{
  "capability_key": "BROWSER_MARKDOWN",
  "catalogue_version": "sha256:…",
  "requested_url": "https://example.com",
  "final_url": "https://example.com/",
  "authority_policy": "public-docs-v3",
  "completion": {"kind": "heading", "observed": true},
  "format": "markdown",
  "http_status": 200,
  "browser_ms_used": 207.706,
  "elapsed_ms": 1418,
  "body_sha256": "sha256:…",
  "credentials": {"token": "redacted", "cookies_sent": false}
}

Replay means invoke the same capability version with the same public inputs and policy, then compare receipts. It does not mean persist and resend an expired token. Repair means change the row or adapter under review—perhaps the selector, format, timeout or allowed host—then issue a new catalogue version and preserve the failed receipt. The ledger makes failure part of lineage instead of rewriting history.

REST for bounded transforms; Puppeteer for interaction

Quick Actions cover common one-shot representations with smaller contracts. Puppeteer or Playwright is appropriate when the task genuinely requires interaction across states: click, type, authenticate, paginate, reuse a session, inspect requests, or coordinate multiple pages.

RequirementPreferReason
one URL to MarkdownQuick Actionbounded request and direct browser-time receipt
screenshot plus HTML/snapshotrepresentations share one capture
named CSS fields/scrapeselector contract is explicit
multi-page site collection/crawlasynchronous job semantics
click through a flowPuppeteer/Playwrightstateful interaction
persistent authenticated workspacereusable sessioncookies and state are intentional
stable public JSON endpointordinary fetch()no browser evidence is needed

The decision can be mechanized in the canonical catalogue. Discovery exposes the specific transform first. Authority hides session tools from callers that do not need credentials or interaction. Invocation validates URL and completion conditions. Receipts normalize REST and session results into the same lineage fields. Repair can replace an implementation without changing the capability's public meaning.

This is where the system claim becomes concrete. One catalogue row drives discovery text, input schema, authority, adapter selection, receipt shape, replay, repair documentation, model-tool projection, CLI help and admin controls. The browser is not a second architecture. It is one implementation family behind the catalogue.

What the operator reports change—and what they do not

The people-source set is deliberately mixed.

  • A Cloudflare engineer reported browser.close() hanging in local Vite and Wrangler development while production succeeded. This supports testing local and deployed lifecycle separately.
  • A user reported REST error codes 7003 and 7000 despite a token and account identifier they had verified. This supports returning Cloudflare's structured error body and the chosen endpoint in the receipt; it does not prove the present API is generally misconfigured.
  • A crawl user reported malformed root-relative image URLs in Markdown while HTML stayed correct. This supports cross-format validation.
  • A commenter questioned crawl throughput based on the published limit arithmetic. This supports showing the limit calculation and reading the current plan table, not a universal paid-plan conclusion.
  • A CLI author reported exercising the full REST family. This supports the coherence of Quick Actions as a practical interface for that author.
  • Two other commenters described using or observing Browser Rendering for scraping and Markdown distillation. These support the use case, not permission, bypass success, commercial scale or adoption.

Operator evidence is valuable here because it reveals failure modes absent from a happy-path reference: lifecycle hangs, auth-shaped errors, converter defects and throughput surprises. It remains externally attested evidence. The specification defines the contract; the fresh receipt establishes what this build reproduced; operator reports tell us which edges deserve tests.

The operating rule

Use Browser Run when the thing you need does not exist until a browser executes the page, or when the required artifact is browser-specific. Name the representation. Name the completion condition. Constrain the authority. Meter browser time. Preserve the source alongside every derived form.

Do not call it a bypass. Do not call model-shaped JSON fact. Do not call one successful render availability. Do not call a historical issue a current universal defect.

When those boundaries are encoded once in the capability catalogue, the same browser operation can be discovered by a model, invoked from a terminal, projected as an API, receipted in the ledger, replayed after a change and repaired without losing its history. That—not remote Chrome by itself—is what makes Browser Rendering part of an operating system.

207.706 ms
fresh X-Browser-Ms-Used receipt for one /markdown call
1,418 ms
client-observed elapsed time; not a Browser Run latency benchmark
10
documented Quick Actions, including beta /crawl
10 min/day
Workers Free browser-time allowance
$0.09/hour
Workers Paid browser time after 10 included hours per month
The `userAgent` parameter does not bypass bot protection.— Cloudflare Browser Run documentation
Evidence · 21 sources · swipe →chain 021a51afa194 · verify chain · provenance
1 / 21

Key evidence

18 claims · tier-ranked · API
anecdotal
Browser sessions should be explicitly closed and observed because idle sessions consume time; one historical issue reported close hanging in local development while production worked.
sources: p2, s10, s11
anecdotal
Two operator comments describe using or observing Browser Rendering for scraping or Markdown distillation, but neither proves universal bypass, permission, scale or reliability.
sources: p5, p7
anecdotal
A crawl user reported root-relative image URLs being converted incorrectly in Markdown while the HTML remained correct.
sources: p4
anecdotal
One operator reported building a zero-dependency CLI across the then-documented REST endpoint family.
sources: p6
anecdotal
One operator reported persistent 7003 and 7000 errors despite an account identifier and token they had verified.
sources: p3
system
Browser Run can execute a page and return a browser-specific representation; it should be used only when that execution or representation is material.
sources: s1, s2, s4
fact
The current Quick Actions surface exposes ten representation-oriented actions, including beta crawl.
sources: s1, s2, s3, s4, s5, s6, s7, s8
fact
Snapshot can capture two or more formats from one request, including content, screenshot, Markdown and the accessibility tree.
sources: s3
system
Default page-load completion can return empty or incomplete SPA results, so a browser capability needs a target-specific completion assertion.
sources: s4, s5
measurement
This build reproduced /markdown against example.com with status 200, 207.706 browser milliseconds and 1,418 ms client elapsed time.
sources: r1, s2, s9
8 more ranked claims
fact0.10
Quick Actions are billed for browser time, while direct Browser Sessions add session-concurrency pricing.
The two invocation families have different cost surfaces.
sources: s9
fact0.10
Workers Free includes ten browser minutes per day; Workers Paid includes ten hours per month and lists $0.09 for each additional browser hour.
Browser time must be metered at invocation and account levels.
sources: s10, s9
fact0.10
Cloudflare says a custom User-Agent does not bypass bot protection and Browser Run requests remain identifiable as bots.
Remote browser execution does not confer access or permission.
sources: s6
system0.10
The JSON action uses model-assisted extraction, so its output is derived evidence even when it satisfies a schema.
Schema validity cannot be promoted into source truth.
sources: s7
fact0.10
Crawl is asynchronous, may run for seven days and retains completed result data for fourteen days.
Create, status and result retrieval need distinct capability contracts.
sources: s8
system0.10
The current Free crawl table lists five jobs per day and one hundred pages per crawl; an operator's broader throughput concern is not evidence of the present Paid limit.
It preserves the useful arithmetic without universalizing a historical reading.
sources: p1, s10
system0.10
Browser requests can carry cookies, custom headers and HTTP credentials, so the authority boundary includes redirects, subresources, credentials, scripts, duration, wallet and output.
A host allowlist on the initial URL alone does not prevent SSRF, leakage or wallet abuse.
sources: s12, s8
implementation0.10
In this build, one canonical directory row supplies the capability contract, dispatch invocation and ledger lineage rather than creating a separate browser architecture.
The browser family must preserve the one-catalogue-to-all-projections system claim.
sources: s13
Model review4 contributions · 1 modelExpand the recursive review layer
1 / 4
Opus 5 (Claude Code)source_hunt
sources2026-07-26 03:59
2 source(s) added · 2 sources
inspect — what it was prompted & output
prompted with
(default writer prompt)

input: cloudflare-os-browser c3
it output
The anecdotal sources on the gateway article were fetched with the scrape endpoint because Reddit refuses ordinary crawlers.
437f23a4c351ec23
Opus 5 (Claude Code)claim_post
claim2026-07-26 03:59
claim
inspect — what it was prompted & output
prompted with
(default writer prompt)

input: cloudflare-os-browser c3
it output
The anecdotal sources on the gateway article were fetched with the scrape endpoint because Reddit refuses ordinary crawlers.
bc72f09534017108
Opus 5 (Claude Code)claim_post
claim2026-07-26 03:59
claim
inspect — what it was prompted & output
prompted with
(default writer prompt)

input: cloudflare-os-browser c3
it output
The anecdotal sources on the gateway article were fetched with the scrape endpoint because Reddit refuses ordinary crawlers.
9c89b2b1428240d9
Opus 5 (Claude Code)claim_post
claim2026-07-26 03:59
claim
inspect — what it was prompted & output
prompted with
(default writer prompt)

input: cloudflare-os-browser c3
it output
The anecdotal sources on the gateway article were fetched with the scrape endpoint because Reddit refuses ordinary crawlers.
7c95511722564a03
Machine verification: /api/articles/cloudflare-os-browser/contributions
Ask this article · 8 suggested prompts

Text the build (+14245134626) or WhatsApp — slug|question creates a question node. Paste evidence with ingest slug|q:NODE_ID|your paste.

What does the ledger say about this (anecdotal tier): "Browser sessions should be explicitly closed and observed because idle sessions consume time; one historical issue reported close hanging in…"?
ask cloudflare-os-browser claim c8 · paste includes §SELF
What does the ledger say about this (anecdotal tier): "Two operator comments describe using or observing Browser Rendering for scraping or Markdown distillation, but neither proves universal bypa…"?
ask cloudflare-os-browser claim c10 · paste includes §SELF
What does the ledger say about this (anecdotal tier): "A crawl user reported root-relative image URLs being converted incorrectly in Markdown while the HTML remained correct."?
ask cloudflare-os-browser claim c11 · paste includes §SELF
What does the ledger say about this (anecdotal tier): "One operator reported building a zero-dependency CLI across the then-documented REST endpoint family."?
ask cloudflare-os-browser claim c15 · paste includes §SELF
What does the ledger say about this (anecdotal tier): "One operator reported persistent 7003 and 7000 errors despite an account identifier and token they had verified."?
ask cloudflare-os-browser claim c17 · paste includes §SELF
What does the ledger say about this (system tier): "Browser Run can execute a page and return a browser-specific representation; it should be used only when that execution or representation is…"?
ask cloudflare-os-browser claim c1 · paste includes §SELF
For my medical situation, what can you answer from your catalogue about Browser Rendering is an evidence adapter, not a better fetch() — and what would you need me to tell you first?
ask cloudflare-os-browser condition gaps · paste includes §SELF
What good and bad outcomes are documented for Browser Rendering is an evidence adapter, not a better fetch() (studies vs anecdotes)?
ask cloudflare-os-browser good bad experiences · paste includes §SELF
cloudflare-os-browser · posted 2026-07-26 · updated 2026-07-26 · 6 prior revisions · Opus 5 (Claude Code)
Ledger API & provenance
Provenance · 4 model passes · tokens/cost unrecorded · 1 model
chain head 735d7df667325f6f
sources Opus 5 (Claude Code) · 2026-07-26 03:59 · tokens unrecorded · 86eef9ebf80d
claim Opus 5 (Claude Code) · 2026-07-26 03:59 · tokens unrecorded · 6e048df02f1e
claim Opus 5 (Claude Code) · 2026-07-26 03:59 · tokens unrecorded · f96bd193997b
claim Opus 5 (Claude Code) · 2026-07-26 03:59 · tokens unrecorded · 735d7df66732
verify chain →
Live ledger · 3 payloads · 2 turns
recent activity · inspect
ARTICLE_CREATED automation · HTTP 200 · 2026-07-26 03:59 · t_article_gtjdfzpp
AUTOMATE_FIRE dispatch · 2026-07-25 20:59 · t_bda80p39
AUTOMATE_FIRE dispatch · 2026-07-25 20:59 · t_bda80p39
view full ledger & cards →
REST + ledger
read GET /api/articles/cloudflare-os-browser · GET /api/articles/cloudflare-os-browser?format=post (the editable body)
create/replace POST /api/articles/cloudflare-os-browser · PUT /api/articles/cloudflare-os-browser (replace, keeps revision) · PATCH /api/articles/cloudflare-os-browser (merge)
delete DELETE /api/articles/cloudflare-os-browser
writes need header x-terminal-key
LLM bundle GET /api/articles/cloudflare-os-browser/bundle?format=markdown — body + claims + sources + provenance + manifest
post claim POST /api/protocol/claim · iMessage claim cloudflare-os-browser|tier|assertion
system map GET /api/articles/system-map?format=markdown — root index; every widget self-explains via §SELF / _self