Origin-Agent-Cluster
Origin-Agent-Cluster is an HTTP response header through which a secure-context document requests an origin-keyed JavaScript agent cluster instead of a potentially broader site-keyed cluster. It disables specified same-site, cross-origin sharing mechanisms and can guide browser resource allocation, but it does not guarantee a separate process or create a security sandbox. Here, “agent” is an ECMAScript execution concept—not an AI agent.
Snapshot
- Standardized opt-in:
Origin-Agent-Cluster: ?1, using the HTTP Structured Fields Boolean true value. - Scope: the agent-cluster key used for a document's JavaScript execution environment.
- Primary purpose: request origin-level performance and resource separation from other same-site origins.
- Observable state:
window.originAgentClusterreports whether the current window is in an origin-keyed agent cluster. - Observable restrictions:
document.domainrelaxation becomes inert, and aWebAssembly.Modulecannot be sent to a same-site, cross-origin document. - Not guaranteed: a dedicated operating-system process, memory protection, side-channel resistance, cross-origin isolation, or better performance.
- Deployment rule: configure the header consistently across document responses for an origin and test from a fresh browsing context group.
- Terminology: an ECMAScript agent cluster is not a group of autonomous AI systems.
Definition
The WHATWG HTML Living Standard defines Origin-Agent-Cluster and window.originAgentCluster. The header lets a document delivered in a secure context request that its agent cluster key be its origin—scheme, host, and port—rather than its broader site. The request matters chiefly when documents are same-site but cross-origin, such as app.example.com and chat.example.com.
ECMAScript defines an agent cluster as the maximal set of agents that can communicate by operating on shared memory. An “agent” in this model is a specification mechanism containing execution contexts and an executing thread; it need not map one-to-one to a thread, process, tab, worker, or other implementation artifact. The term has no necessary connection to AI agents, multi-agent systems, model orchestration, or delegated authority.
Origin keying changes an execution-model grouping. It does not change the origin itself and does not, by itself, partition cookies, storage, service workers, network credentials, server-side sessions, permissions, or user identity.
How It Works
The standardized request is:
Origin-Agent-Cluster: ?1
The value is the Boolean true serialization defined by HTTP Structured Fields. Under the current HTML processing model, values other than ?1 are ignored. The header is effective only for documents delivered over a secure context.
During document creation, the browser combines the request with the browsing context group's prior keying decisions and other isolation state. The HTML Standard prevents the header from splitting same-origin documents in one browsing context group across different agent clusters. Its historical agent cluster key map therefore makes order matter: window.originAgentCluster can be false despite a present header if a prior same-origin document settled the group as site-keyed, or true without the current response header if the origin was settled earlier.
Two other cases are automatically origin-keyed. Documents with opaque origins report true and are unaffected by the header. Documents whose cross-origin isolation mode is not none are also origin-keyed; adding this header can remain a resource-allocation hint, but the standard says it adds no further author-observable effect.
The current HTML Standard names two observable consequences: setting document.domain does nothing, and WebAssembly.Module objects cannot be sent to cross-origin documents even when they are same-site. MDN additionally documents same-site, cross-origin transfer restrictions for SharedArrayBuffer and WebAssembly.Memory; because shared-memory availability also depends on cross-origin isolation and browser implementation, those details should be tested in the target release rather than inferred from the header alone.
Current Context
As of August 12, 2026, origin-keyed agent clusters remain in the WHATWG HTML Living Standard, whose reviewed snapshot was last updated August 11, 2026. The feature is standard-track but not uniformly available in stable browser engines. MDN's browser-compat-data snapshot records the header and window property in Chrome from version 90 and Firefox from version 138, while Safari is marked as available in Technology Preview rather than a stable release. Unsupported browsers can ignore the unknown response header, so deployments need runtime detection rather than user-agent assumptions.
The surrounding document.domain landscape has also changed. The HTML Standard warns against the setter and says its removal is a long-running web-platform process. Chrome's migration guidance states that Chrome began making the setter inert by default from version 115 and documents Origin-Agent-Cluster: ?0 as a Chrome-specific compatibility escape hatch for sites that still need the legacy behavior. That must not be mistaken for the standardized opt-in rule: in the current HTML Standard's Origin-Agent-Cluster processing, a false value does not request site keying; it is ignored.
The original 2021 rollout article remains useful for architecture and deployment guidance, but its launch-era compatibility table is historical. Current implementation claims should use dated browser documentation, compatibility data, and direct tests.
Adjacent Boundaries
- Cross-origin isolation: compatible COOP and COEP can produce a cross-origin-isolated environment. Such a document is automatically origin-keyed, but OAC alone does not produce that security state or unlock its restricted APIs.
- Process or site isolation: browser process placement is implementation-specific.
originAgentCluster === truedoes not prove that an origin owns a dedicated process. - CORS and CORP: CORS governs whether script can read selected cross-origin responses; CORP lets a resource constrain no-CORS embedding. OAC does neither.
- Content and capability controls: Content Security Policy constrains resource loading and script behavior, while Permissions Policy controls selected browser features. OAC is not a substitute for either.
- Sandboxing: an iframe sandbox, operating-system sandbox, container, or AI agent sandbox constrains different objects and powers. Origin keying does not authorize or contain an automated agent.
- Storage partitioning: Storage partitioning governs how browser state is keyed across sites and origins. OAC does not clear, segregate, or revoke stored data.
Deployment and Migration
Inventory same-site coupling first. Search for document.domain, synchronous DOM access across subdomains, cross-origin postMessage() transfers of WebAssembly or shared-memory objects, and embedded tools whose performance depends on sibling origins. Include legacy admin, identity, payment, media, and customer-specific subdomains.
Configure the whole origin. Send Origin-Agent-Cluster: ?1 consistently on every document response for the origin, including navigable error pages. Check application servers, CDNs, reverse proxies, static-host rules, authentication paths, and error handlers. A partial rollout can make results depend on which same-origin document was loaded first in the browsing context group.
Test in a fresh group. Reloading is insufficient after an origin's keying decision has been established. Close related tabs and windows, then create a new unconnected browsing context. Record the response header and inspect window.originAgentCluster; also inspect window.crossOriginIsolated separately.
Migrate explicit communication. Replace document.domain coupling with postMessage() or MessageChannel where appropriate. Specify an exact target origin, verify the sender's origin and window, validate the message schema, and keep credentials or authorization material out of messages.
Measure rather than assume. Compare task latency, responsiveness, memory use, crashes, iframe behavior, and browser-specific results before and after rollout. A browser may allocate separate processes or threads, retain shared resources, or decline the request; additional processes can also increase memory overhead.
Plan rollback carefully. Removing ?1 must be consistent and retested from a fresh browsing context group. Do not assume ?0 is a portable inverse: its documented legacy role is specific to Chromium's default-origin-keying migration, while the current HTML Standard ignores non-true values in this header's opt-in algorithm.
Automation Context
Browser automation can encounter OAC as environmental state in code editors, media applications, dashboards, embedded workspaces, and test harnesses. If a same-site iframe cannot be synchronously scripted, document.domain becomes inert, or behavior differs after a navigation, the runtime should preserve the origin-keying evidence rather than classify the event only as site flakiness.
The header is not permission for an AI or automation agent to bypass a frame boundary, reuse credentials, proxy content, inject scripts, or move data into a model-visible trace. The appropriate response is to use the site's supported messaging or automation interface, surface the boundary to the user or policy layer, and minimize captured page data.
Governance and Safety
OAC is a web-architecture change with cross-team consequences. A named owner should control the response-header rule, origin inventory, performance baseline, supported-browser matrix, exception process, and rollback. CDN and error-page configuration belong in change review because they can silently turn a deliberate rollout into an order-dependent one.
Security review should recognize the narrow benefit without converting it into a certification. Disabling document.domain relaxation removes a legacy synchronous-access path, but OAC does not authenticate sibling origins, isolate secrets, prevent framing, constrain network access, stop prompt injection, or provide Spectre-class side-channel protection. Multi-tenant or separately administered subdomains still need explicit origin, cookie, storage, framing, fetch, and server-authorization controls.
Performance claims also need governance. A header may help a browser schedule a resource-intensive origin independently, but it may do nothing or increase memory overhead. Product teams should define success metrics and compare target devices, browsers, embedded views, and low-memory environments rather than declaring “isolation” from configuration alone.
Telemetry should be proportionate. Header audits and automated-browser traces can retain origins, response status, relevant isolation state, and a task or release identifier without storing full URLs, query tokens, cookies, page contents, or screenshots. Access, retention, and deletion rules should match the sensitivity of the affected workflow.
Failure Modes
- Partial deployment: HTML responses, error pages, or CDN paths disagree, so the first same-origin document in the group decides the observed state.
- Header-state confusion: a response contains
?1, butwindow.originAgentClusteris false because the browsing context group was settled earlier. - Process overclaim: a true property value is reported as proof of a dedicated process or memory-protection boundary.
- Security substitution: teams deploy OAC instead of COOP, COEP, CORP, CSP, framing controls, sandboxing, or authorization.
- Legacy breakage: same-site applications still depend on
document.domainor transferable objects that origin keying restricts. - Compatibility drift: a launch-era support table is reused after browser implementations change.
- False rollback:
?0is treated as a portable standards-level opt-out rather than a browser-specific compatibility mechanism. - Performance regression: extra allocation overhead outweighs scheduling gains on memory-constrained devices.
- AI terminology error: an “agent cluster” is described as a collective of models or autonomous systems.
Limits
OAC cannot force a browser to allocate a particular process, thread, memory quota, CPU budget, crash boundary, or scheduler priority. It cannot prove that two origins do not share implementation resources. The agent cluster itself is a specification mechanism, and both ECMAScript and HTML leave room for implementation choices.
OAC also does not stop asynchronous cross-origin communication. Properly authorized pages can still communicate through mechanisms such as postMessage(), and origins may remain related through cookies, server endpoints, storage mechanisms, or embedding arrangements governed by other rules. Its restrictions are deliberately narrower than a general security boundary.
Finally, window.originAgentCluster is evidence of the browser's logical keying state, not why that state arose. A true value may result from the header, an earlier same-origin document, an opaque origin, cross-origin isolation, or a browser default. Audit the causal inputs before assigning credit or blame to the header.
Minimum Evidence Record
- Response: redacted URL or origin, timestamp, status code, document type, exact
Origin-Agent-Clusterfield, and which server, CDN, or error path supplied it. - Runtime:
isSecureContext,window.originAgentCluster,window.crossOriginIsolated, opaque-origin status if relevant, and whether testing began in a fresh browsing context group. - Environment: browser name, engine, exact version, operating system, device class, embedded-webview status, extensions or enterprise policies that could alter behavior.
- Relationships: top-level, frame, opener, worker, and same-site cross-origin relationships relevant to the test, with secrets removed.
- Adjacent policy: COOP, COEP, CORP, CSP, Permissions Policy, sandbox attributes, and storage or cookie assumptions needed to interpret the result.
- Compatibility test: attempted
document.domainuse, messaging path, object-transfer test, console warning, and observed success or failure. - Performance evidence: baseline and post-change responsiveness, memory, crashes, task latency, sample window, devices, and uncertainty.
- Change record: owner, rollout cohort, header coverage test, approval, exception, rollback plan, and incident or defect reference.
Source Discipline
Use the HTML Standard for normative syntax, processing, the historical key map, automatic origin keying, and author-observable effects. Use ECMAScript for the meaning of “agent” and “agent cluster,” and RFC 9651 for Structured Fields syntax. These specifications describe logical semantics, not a browser's guaranteed process layout.
Use current browser-compatibility data and direct tests for implementation claims. MDN is useful for developer-facing behavior, but its statement that a true property means the operating system has supplied dedicated resources is stronger than the HTML and ECMAScript guarantees. The safer claim is that the window is logically origin-keyed and that the browser may allocate resources accordingly.
Keep vendor-specific behavior scoped. Chrome's ?0 migration guidance applies to Chrome's default handling of document.domain; the HTML Standard says non-true OAC values are ignored. A report should name the browser, version, policy, and tested behavior instead of presenting one vendor's escape hatch as portable HTTP semantics.
For a live deployment, cite both the captured response field and runtime state. A header alone proves a request, not that it took effect. A property value alone proves logical state, not which response caused it, whether a process was dedicated, or whether performance improved.
Spiralist Reading
Spiralism reads Origin-Agent-Cluster as a refusal to confuse a shared family name with a shared execution room. Two subdomains may belong to one site while still asking the browser to account for their work separately.
The discipline is modest: name the actual boundary, verify whether it took effect, and do not turn a performance hint into a claim of trust. Locality is not authorization, and technical vocabulary should not be borrowed to imply more agency or safety than the system provides.
Open Questions
- Which performance and memory measurements best show whether origin keying helps a real embedded application?
- How should browser tooling expose the difference between header request, logical cluster state, and actual resource allocation?
- When can browser vendors safely make origin keying the default without preserving a long-lived
document.domainescape hatch? - How should web-platform compatibility data represent implementations that honor logical keying without promising process isolation?
- What evidence should automated-browser incident reports retain without collecting sensitive page content or navigation secrets?
Related Pages
- Cross-Origin Opener Policy
- Cross-Origin Embedder Policy
- Cross-Origin Resource Policy
- Cross-Origin Resource Sharing
- Content Security Policy
- Permissions Policy
- Fetch Metadata Request Headers
- Storage Partitioning
- Reporting API
- AI Browsers and Computer Use
- AI Agent Sandboxing
- AI Agent Observability
Sources
- WHATWG, HTML Living Standard: Origin-keyed agent clusters, snapshot last updated August 11, 2026; reviewed August 12, 2026.
- TC39, ECMAScript Language Specification: Agent Clusters, current draft; reviewed August 12, 2026.
- IETF, RFC 9651: Structured Field Values for HTTP, September 2024.
- MDN Web Docs, Origin-Agent-Cluster header, implementation-oriented reference; reviewed August 12, 2026.
- MDN Web Docs, Window: originAgentCluster property, API reference; reviewed August 12, 2026.
- MDN browser-compat-data, Origin-Agent-Cluster compatibility data and Window API compatibility data, reviewed August 12, 2026.
- Domenic Denicola, web.dev, Requesting performance isolation with the Origin-Agent-Cluster header, January 25, 2021; reviewed August 12, 2026.
- Chrome for Developers, Chrome 115 will make setting
document.domainimmutable, updated May 30, 2023; reviewed August 12, 2026.