ExternalSandbox managed-network handling can weaken Require or downgrade to none
Resolved 💬 4 comments Opened Mar 26, 2026 by GraciousGazelles Closed Mar 26, 2026
💡 Likely answer: A maintainer (github-actions[bot], contributor)
responded on this thread — see the highlighted reply below.
Observed while reviewing downstream carry of recent sandboxing changes.
Summary
The ExternalSandbox bypass path and managed-network / restrictive-policy handling need to stay fail-closed for Require semantics. If the bypass is applied too early or in the wrong shared decision point, the resulting sandbox choice can weaken Require behavior or downgrade to none.
Why this matters
- ExternalSandbox should be a deliberate bypass only where policy allows it
- Require semantics should not silently collapse to no sandbox
- transform-path coverage matters, not only initial selection
4 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Can you say more about the problem? The description appears to be written by AI and is somewhat confusing. Can you provide repro steps for the bug?
Just to clear up the obvious weirdness here: the original version of this issue was raised by an AI agent I was using that took a bit too much initiative and auto-posted before I had properly reviewed and rewritten it myself. I’m fixing that on my side. Sorry about that.
The actual bug I was trying to report is narrower than that first post made it sound.
My concern is that
ExternalSandboxcan be treated too broadly as a bypass in shared sandbox-selection logic. In the path I was reviewing, that meant a request with restrictive semantics could end up resolving toSandboxType::Noneinstead of staying fail-closed.The two places I was worried about were:
A minimal code-level repro is:
pref = Requirepolicy = SandboxPolicy::ExternalSandboxwith restricted network accessnetwork_policy = RestrictedSandboxType::None.It should not silently downgrade to no sandbox.
There is also a second part to the problem. Even if the initial selection is fixed, the transform path needs the same fail-closed behavior. Otherwise a restrictive request can still be turned into an unsandboxed exec request later in the pipeline.
So the narrower bug I meant to report is:
ExternalSandboxshould only bypass the platform sandbox where policy explicitly allows that. It should not weakenRequiresemantics or let a restrictive managed-network request collapse into an unsandboxed path.If it helps, I can also rewrite the issue body itself in this form.
Thanks for the clarification. I'm going to close this issue. If you'd like to file a new one, please use the bug report template and provide the requested details.