The direct answer
Authorize the citation destination first, then use a separately reviewed opening plan that explicitly removes the opener relationship. With Window.open, noopener also returns null, so that value cannot distinguish an isolated opening from a blocked attempt or prove the citation was read.
Fix the opening plan before considering a result
A fictional AI console displays citation C-A for source revision R-A. The user wants to read its already approved external destination U-A while retaining the console. The question here is which browser relationship the opening plan permits, and what the console may honestly conclude afterward.
This is separate from rendering model output, selecting permitted destinations or checking citation support. Those earlier gates must already pass. No model-generated script, target name or feature string enters the opening plan. All worksheet cases below are PROPOSED_UNRUN.
The selected application policy offers one explicitly requested opening at a time. It fixes the target as _blank and the sole window feature as noopener. It requests no popup geometry, attribution registration or reusable helper window. Whether a browser presents a tab or window is not this application’s security evidence.
Remove a relationship rather than assume cross-origin safety
MDN’s opener reference explains that cross-origin access is restricted, but an opener reference can still permit navigation of the original window. Therefore “the destination cannot read our page” is an insufficient reason to retain that relationship. The reference documents passing noopener through windowFeatures as a way to omit it.
Our chosen policy rejects opener-enabled plans even for a presently familiar publisher. It requires neither cooperation from the citation page nor a message exchange with it. The console supplies no prompts, credentials or workspace contents to the new context.
Opener removal does not make the destination benign, authenticate its document, authorize its redirects or prevent tracking. This profile makes no referrer-privacy claim and configures no Cross-Origin-Opener-Policy. Those are separate questions; a returned handle cannot settle them.
A useful window name conflicts with this reuse expectation
MDN’s open reference says noopener makes nonempty names other than _top, _self and _parent behave like _blank when deciding whether to create a new context. Thus a friendly name does not establish reusable isolation. Our plan forbids named reuse and those three exceptional targets.
A developer might want to remember a reference, focus it later or replace its contents for the next citation. That is a different interaction contract. Do not quietly drop noopener to regain it, or repurpose an older widget reference. The cooperating widget protocol serves another surface and supplies no permission for this citation destination.
Keep null and asynchronous navigation out of the success column
The same open reference documents null both for noopener and for failed opening, including popup blocking. Loading the requested URL is asynchronous. Its user-interaction requirements do not guarantee admission. Consequently this plan cannot classify a null return as definitely blocked, delivered or read.
The proposed ledger separates eligibility, invocation and outcome. Record “opening attempted” only if a future implementation actually invokes the approved operation; otherwise retain “not attempted” or “unknown.” Never use a truthy-handle branch as the sole success definition for this no-handle plan.
Keep the console usable when the outcome is unknown. Show a brief explanation and the reviewed destination identity as text. Do not automatically repeat the attempt, change the target, retain an opener or navigate the console instead. Any separate navigation option needs its own reviewed contract and explicit user choice.
Review a complete positive association
The following invented worksheet contains labels only. It constructs no URL, link, window or browser fixture.
PROPOSED_UNRUN
Console: CONSOLE-A / current view V-A
Citation: C-A / authorized source revision R-A
Destination: U-A / selected by trusted application mapping
Intent: one direct user request to read C-A externally
Plan P-A: target _blank; only feature noopener
Permitted business consequence: none
Opening outcome: unknown until separately supported evidenceThe useful positive is conditional: current citation rights and trusted destination selection hold; the interface clearly announces the new context; the actual browser and invocation path support P-A. These remain unimplemented prerequisites. Unknown applicability or gesture handling blocks eligibility rather than becoming a guessed success.
If those prerequisites are established later, the user can request the approved citation without intentionally granting its page an opener relationship. That narrower result still says nothing about whether the destination completed loading or the user understood it. Opening a reference never approves a tool action.
Use eight opening-decision cards
| Case | Decision and evidence limit |
|---|---|
| C-A/R-A, U-A, direct user intent and reviewed P-A all match | Conditionally eligible for one attempt; retain unknown navigation and reading outcome. |
| The label stays C-A but the destination becomes U-B | Fail the earlier destination association; opening isolation cannot repair it. |
| A caller supplies features or selects _self, _parent or _top | Reject the changed plan before invocation. |
| A developer expects a named old window to be reused | Reject that expectation under P-A; do not remove isolation to recover reuse. |
| Opener removal is omitted or unsupported | Hold; cross-origin restrictions do not satisfy the selected relationship policy. |
| The only reported result is null | Keep the opening outcome unknown; do not classify a completed read or definite block. |
| User interaction or browser applicability is absent or unknown | Hold eligibility; no gesture bypass, automatic retry or weaker fallback. |
| A handle or attempted opening is offered as action approval | Reject the authority expansion; business permissions remain independent. |
Limit the evidence to the selected browser boundary
MDN marks open() as limited availability. Its accessibility guidance recommends warning users about context changes. These references were read at revisions dated August 21, 2026 and April 10, 2025; they identify no tested browser build here.
For these proposed cases, no Window.open call, browser gesture, URL, target, DOM, header or fixture was constructed or executed. No account, API or model operation occurred. Ordinary source-document reads and editorial file handling are separate.
Boundary is a prelaunch model router with planned request-path checks, not a shipped browser-opening control. Its synthetic action exercise and existing mock evidence do not test this opener policy or establish navigation, user reading or production security.
Primary sources
Official references supporting the guidance. Examples in this guide are synthetic and are not reports of a production incident.