Skip to content

Move Chrome Policies to Advanced and clarify it applies to individual browsers - #469

Merged
andrewleesteele merged 3 commits into
mainfrom
hypeship/chrome-policy-general-scope
Jul 29, 2026
Merged

Move Chrome Policies to Advanced and clarify it applies to individual browsers#469
andrewleesteele merged 3 commits into
mainfrom
hypeship/chrome-policy-general-scope

Conversation

@andrewleesteele

@andrewleesteele andrewleesteele commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Summary

The Custom Chrome Policies page was nested under Advanced → Reserved Browsers in the sidebar and its intro/title framed chrome_policy as a browser-pools-only feature. It isn't — chrome_policy is accepted on both individual on-demand browsers.create() and browser pools, and the DevTools use case added in #466 already uses the browsers.create() path.

Changes

  • Reframe the intro to lead with the fact that chrome_policy works on both individual browsers and browser pools; pull the shared constraints (kernel-managed policies rejected, 5 MiB cap) up front.
  • Terminology: use "browser pools" instead of "reserved pools" / "reserved browsers" in prose.
  • Sidebar: move the page out of the Browser Pools subgroup to a top-level Advanced page, next to Extensions.
  • URL: rename browsers/pools/policy-jsonbrowsers/chrome-policies so the path no longer implies pools; add a redirect from the old path (existing changelog links keep working).

No examples or content removed.


Note

Low Risk
Documentation and Mintlify navigation/redirect only; no product or API behavior changes.

Overview
Custom Chrome Policies is reframed so chrome_policy is documented for both on-demand browsers.create() and browser pools, not only reserved pools. The meta description, intro, and Common use cases copy now say the same keys/constraints apply on both paths, with shared limits (rejected Kernel-managed policies, 5 MiB cap) called out up front. Prose uses browser pools instead of reserved-only wording, and the pool setup section is titled Setting chrome policies on a pool.

Navigation and URL: In docs.json, the page moves from Reserved Browsers to a top-level Advanced entry beside Extensions (browsers/chrome-policies). The old path browsers/pools/policy-json redirects to the new URL so existing changelog links keep working.

Reviewed by Cursor Bugbot for commit f4a9876. Bugbot is set up for automated code reviews on this repo. Configure here.

…and pools

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
docs Error Error Jul 29, 2026 8:16pm

@mintlify

mintlify Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
Kernel 🟢 Ready View Preview Jul 29, 2026, 8:02 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
cursor[bot]
cursor Bot approved these changes Jul 29, 2026
… Pools

Rename browsers/pools/policy-json to browsers/chrome-policies and surface it
as a top-level Advanced page next to Extensions, since chrome_policy applies
to individual browsers too. Add a redirect from the old path.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@andrewleesteele andrewleesteele changed the title Clarify chrome_policy applies to individual browsers, not just pools Move Chrome Policies to Advanced and clarify it applies to individual browsers Jul 29, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale comment

Risk assessment: Very Low

Verdict: Very Low risk. Prior approval stands (no re-approval).

Re-evaluation after synchronize

Previous approval covered b65f0a1…. Head is now f4a9876… (file rename + nav/redirect). Re-assessed from the full diff; risk has not increased.

Evidence (from diff only)

  • 2 files: browsers/pools/policy-json.mdxbrowsers/chrome-policies.mdx (rename + copy), docs.json (sidebar move + redirect from old path)
  • Documentation-only MDX and Mintlify nav/redirect config
  • No application code, API behavior, infrastructure, auth, or deploy scripts modified

Risk factors

Factor Assessment
Codepaths modified Docs page + docs site nav/redirect only
Blast radius None (no runtime/product impact)
Complexity Trivial wording, rename, and nav wiring
Infra / security None

Fits Very Low criteria: documentation-only, small scoped diff, no production logic change. No CODEOWNERS requirement found.

Open in Web View Automation 

Sent by Cursor Automation: Assign PR reviewers

@mintlify

mintlify Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
Kernel 🟡 Building Jul 29, 2026, 8:01 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@andrewleesteele
andrewleesteele marked this pull request as ready for review July 29, 2026 22:03
@andrewleesteele
andrewleesteele merged commit efa9cae into main Jul 29, 2026
6 of 7 checks passed
@andrewleesteele
andrewleesteele deleted the hypeship/chrome-policy-general-scope branch July 29, 2026 22:04

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Risk assessment: Very Low

Verdict: Very Low risk. Prior approval stands (no re-approval).

Re-evaluation

Head remains f4a9876…. Re-assessed from the full diff vs base; risk has not increased.

Evidence (from diff only)

  • 2 files: browsers/pools/policy-json.mdxbrowsers/chrome-policies.mdx (rename + copy edits), docs.json (sidebar move + redirect from old path)
  • Documentation-only MDX and Mintlify nav/redirect config
  • No application code, API behavior, infrastructure, auth, or deploy scripts modified

Risk factors

Factor Assessment
Codepaths modified Docs page + docs site nav/redirect only
Blast radius None (no runtime/product impact)
Complexity Trivial wording, rename, and nav wiring
Infra / security None

Fits Very Low criteria: documentation-only, small scoped diff, no production logic change. No CODEOWNERS requirement found.

Open in Web View Automation 

Sent by Cursor Automation: Assign PR reviewers

andrewleesteele added a commit that referenced this pull request Jul 29, 2026
With the FAQ folded in and Chrome policies moved out (#469), the
section is one page. Move browsers/pools/overview.mdx →
browsers/pools.mdx so it serves at /browsers/pools, retitle it
"Browser Pools", and collapse the nav group to a single entry.
Repoint every /browsers/pools/overview link to /browsers/pools, fix a
stale #create-a-pool-of-reserved-browsers anchor, and add a redirect
from the old overview path. Changelog's bare /browsers/pools links now
resolve to a real page.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
andrewleesteele added a commit that referenced this pull request Aug 5, 2026
* Refresh browser pool guides and standardize on "browser pools"

Add a Browser Pools Quickstart, move the pool guides from Advanced to
Basics, and use "browser pools" as the single name for the concept
everywhere in the docs (the API, SDKs, CLI, and dashboard already do).

Push pools as the production path from the Create page, the home page,
and the Scale guide, and lead with the fact that idle pooled browsers
aren't billed.

* Add reuse-isolation, throughput, and profile guidance to pools docs

- Document that reuse: true persists browser state across acquisitions
  (not isolated) and reuse: false is the clean/per-user path, with a
  multi-tenant leak warning.
- Explain why acquiring is faster than browsers.create(): pre-applied
  restart-triggering configs and no create-endpoint rate limit.
- Point the read-only-profile note at the per-user-profiles pattern
  instead of a standalone session.
- Fold two update-semantics FAQ entries into one pointer to the
  canonical Update a pool section; align the fill-rate example with the
  25% default.
- Keep the Browser Pools nav group in Advanced for now.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Remove the browser-pools quickstart, point entry links to the overview

The pools quickstart is being folded into a future unified Kernel
quickstart rather than living as a feature-specific guide. Delete the
page and its nav entry, and repoint the six inbound links
(home, pricing, concepts, create, scale, and the overview callout) to
the browser pools overview.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Reframe home-page pools blurb: production step, not a day-one default

Position browser pools as the step you reach when taking a working
automation to production, after learning to create and drive a browser
— rather than "most production workloads run on them from day one,"
which pushes them before the fundamentals.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Fold the browser-pools FAQ into the overview and delete it

Move the one piece of guidance the overview lacked — pool sizing via
available_count — into a Sizing section, and drop the FAQ page. Its
other entries duplicated overview sections (update, reuse, timeout,
profiles) or belonged elsewhere (target-site rate limiting, debugging).
Repoint the auth/profiles link to the per-user-profiles section.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Spell out "browser pool" in prose; stop using bare "pool"

Apply the naming rule to cross-page references (home, pricing, projects,
scale, create, proxies, reference, integrations) and the pools overview
intro so the feature is never shortened to "pool" — which collides with
connection pools, IP pools, and socket pools elsewhere in the docs.
Non-browser-pool uses (curl connection/socket pools, proxy IP/ISP pools)
are intentionally left for their own qualifiers.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Collapse browser pools to a single page at /browsers/pools

With the FAQ folded in and Chrome policies moved out (#469), the
section is one page. Move browsers/pools/overview.mdx →
browsers/pools.mdx so it serves at /browsers/pools, retitle it
"Browser Pools", and collapse the nav group to a single entry.
Repoint every /browsers/pools/overview link to /browsers/pools, fix a
stale #create-a-pool-of-reserved-browsers anchor, and add a redirect
from the old overview path. Changelog's bare /browsers/pools links now
resolve to a real page.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Disambiguate non-browser-pool "pool" mentions

Qualify the overloaded uses so "pool" is never mistaken for the browser
pools feature: "connection pool" on the curl networking limits, and
"managed proxy pool" / "proxy-pool traffic" on the bot-detection page.
"ISP pool" (auth) and "warm pools" (unikernels, a generic industry
term) are already unambiguous and left as-is.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Soften the pool-sizing threshold and add a Limitations section

Reframe the ~50-concurrency figure as an illustrative point rather than
a gate: a small browser pool is worth it whenever acquisition latency
matters and demand is steady. Add a consolidated Limitations section
(no GPU browsers, one fixed config per pool with start_url the only
per-acquire override, read-only profiles, reserved capacity holds
concurrency slots, plan-gated).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Drop the ~50 threshold from pool sizing guidance

Small browser pools still pay off when acquisition latency matters and
demand is steady, so lead with that rather than a concurrency number.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Rewrite the Scale page around benefit → when-to-use, soften home CTA

Replace the co-equal concurrency/patterns/throughput framing (and its
1-50/50-100/100+ gate) with: why a browser pool (low-latency
acquisition, reserved capacity, higher creation throughput; the
concurrency-limit tradeoff), when to use a pool vs on-demand as
workload signals rather than thresholds, and a sizing pointer to the
pools page. Keep the three architecture patterns, dropping their
numeric when-to-use gates. Soften the home-page CTA to name the
workloads pools suit instead of "almost any production workload."

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Stop describing browser pools as "warm"

Per docs-team feedback, "warm" implies pools run hot and bill for idle
time — the opposite of the actual benefit (idle pooled browsers aren't
billed). Replace with "ready to use" / "pre-provisioned" throughout,
and reframe the pricing line to lead with the no-idle-charge benefit.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Tidy the Browser Pools page description

"browser pools of ready-to-use browsers" doubled "browser(s)"; use
"Pre-configure a pool of ready-to-use browsers for instant acquisition."

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Reword pools intro: configure a set of identical browsers

"configure" reads better than "maintain" for setting up a pool; trim
"identically-configured" to "identical" to avoid doubling "configure."

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Dedupe the Browser Pools page

The page explained the same few facts repeatedly: "config is pre-applied
so acquisition is faster" appeared four times, read-only profiles three
times, update/stale-config semantics three times (including a paragraph
duplicated verbatim two paragraphs later), and refresh_on_profile_update
three times.

- Collapse the intro to two paragraphs and drop the paragraph that
  restated it above the Steps block; trim the Step callouts that
  repeated their own step bodies.
- Merge "Refresh on profile update", "How it works", and "Per-user
  profiles with pools" into one "Profiles with browser pools" section.
- Move the stale-configuration warning to "Update a pool", where it
  belongs, and delete the duplicated update paragraph.
- Replace "Pool configuration options" with a short Configuration
  pointer, and move Sizing up next to the acquire/release lifecycle.

All externally-linked anchors are preserved.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Point the profiles cross-link at the whole pools profiles section

The general "how do profiles work with browser pools" pointer landed on
the per-user subsection, skipping the read-only and refresh-on-update
behavior above it. The per-user-specific link further down is unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Flag the profile constraints in the pools intro

Listing profiles alongside stealth, proxies, and viewport implied they
behave the same way. A pool takes one profile, shared read-only, so call
that out where the settings are introduced and link to the details.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Tighten the Browser Pools page to behavior and reference

Apply review feedback: drop the intro's repeat of the settings list,
reword the borrowed/topped-up and "unavailable to everything else"
phrasing, stop naming profiles twice in the same limitation, spell out
that pool capacity comes off the organization's concurrency limit, and
use the documented default viewport in the examples.

Move Timeout behavior under Release, where reuse is discussed, and lead
with the practice: always release, with the timeout as a backstop.
Remove the "let it expire" option for rolling configuration, which
relied on idle sessions timing out.

Lead the profiles section with Managed Auth as the way to fill and
maintain a profile, then the one-identity vs per-task choice. Drop the
thin Configuration section.

Move the walkthrough code out — the full example and the per-user
step-by-step both belong in the quickstart — leaving the behavior and
the constraint behind. The page is 401 lines, down from 616.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Trim the pools page to behavior and the operations that carry it

- Fold profiles into the configuration list as a link, dropping the
  awkward two-constraints sentence; the profiles section covers it.
- Break the second paragraph into shorter sentences.
- Replace the Flush, Get details, List, and Delete sections with a
  single "Managing a pool" table. They were pure call-and-description,
  which the API reference already covers; the table keeps the behavior
  notes (force delete, what flush spares) without four code groups.
  This also absorbs the trailing API reference section.
- Fix the update warning, which still said "three ways" after the
  expire-based option was removed.

Code drops from 57% of the page to 49%, and the page to 290 lines from
616 at the start of review — in line with comparable guide pages, which
all keep per-operation examples for the calls that carry behavior.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Reorder pools sections and trim the limitations to pointers

Sizing sat between Release and Update, splitting the create/acquire/
release walkthrough from the operational sections, and left Profiles
stranded between two of them. Move Profiles up to close out the
"using a pool" block so the page reads as three groups: what it is,
using one, then tuning and operating one.

Three of the five limitations restated content covered later in the
page. Keep the list as an up-front gate but make those bullets point
at their sections instead of explaining again.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Apply review feedback to the pools and pricing pages

- Say what you'd otherwise do instead of "configuring one per task":
  the configuration goes on the pool rather than into every
  browsers.create() call.
- Rework the acquisition paragraph so it flows as prose rather than
  three clipped sentences.
- Frame releasing as a best practice rather than an instruction, and
  drop the reuse aside from the timeout section.
- Trim the Managed Auth mention to a pointer; how it works belongs on
  the auth pages.
- Put per-user profiles above refresh-on-profile-update, since it's the
  more common case.
- Replace the operations table with a link to the API reference.
- Drop the quickstart link, which has no target on this branch.
- Pricing: idle pooled browsers incur no usage charges, not "disk
  charges".

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Polish the pools page after review

- Refer to on-demand browsers rather than browsers.create() in prose,
  and drop the size/fill-rate parameter mismatch: the code sample and
  API reference own parameter names and defaults, not the prose.
- Cut the fill-rate link from five places to one, in Sizing, where
  you'd act on it.
- Give flush its own short section under Update, where it's the remedy
  for stale configuration, and restore the two links that pointed at it.
- Say "browser pool" at each section's first mention, keeping "the pool"
  only for back-references; rename the Create, Update, and per-user
  headings to match, updating the links that referenced them.
- Remove three more restatements: the Create lead repeated the Steps
  block, the Update warning re-explained discard_all_idle, and the
  per-user lead repeated the read-only paragraph above it.
- Soften releasing into a best practice rather than an instruction, and
  trim the Managed Auth mention to a pointer.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Open the pools page with a definition

The intro stated the same idea three times — configure once, get
pre-configured browsers — and never actually said what a browser pool
is. Replace it with three paragraphs doing one job each: what a browser
pool is, why acquiring is faster, and what it costs. The Chromium
restart becomes part of the start-up point rather than a third parallel
clause.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Tighten browser pools copy and fix update-size docs

- Drop the "size is always required on update" note: size is optional on
  update (required only on create), and following the note risks resizing
  the pool as a side effect of an unrelated config change.
- Fix the Go update sample, which passed a bare int for an optional field.
- Rework the sizing section: gloss available_count/acquired_count in prose,
  and match the page's bold-lead-in bullet pattern.
- Fold the one-line flush subsection into the update warning that already
  referenced it, and add flush to the API reference pointer.
- Drop the "pre-" from the page description.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* Replace "the right tool" in the Scale intro

A browser pool and browsers.create() are two ways of provisioning the same
browser, not two instruments to pick between, so "the right tool" reads
oddly here. Use the verb the section below already uses.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* Add pools/faq redirect and drop remaining reserved-browsers wording

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: andrewleesteele <8799863+andrewleesteele@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants