demo · v142
Spectre Side-Channel Mitigation
The 2018-era reason this exists. Chrome already isolates sites (eTLD+1) into their own renderer processes, but two same-site origins — say app.example.com and cdn.example.com — still share one. A Spectre gadget in the lower-trust origin can read the higher-trust origin's memory. Origin-Agent-Cluster: ?1 opts the page into per-origin process isolation, putting them in separate renderers. Pick a deployment, see which origins share a process, and read out crossOriginIsolated for this page.
without origin-keyed isolation
—
with Origin-Agent-Cluster opt-in
—
window.originAgentCluster (this page)
—
window.crossOriginIsolated
—
Chrome 142 made the default behaviour for opt-ins more aggressive and added knobs around how widely the policy propagates. The probe above reads the live values for the page you're on now.
relevant headers
# Sent by the origin that wants its own process
Origin-Agent-Cluster: ?1
# Read in JS
window.originAgentCluster // true if this document is in a per-origin agent cluster
# Pair with COOP+COEP for SharedArrayBuffer
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp