Linux bwrap fails when protected symlinked carveout points outside writable roots (No such file or directory)
Resolved 💬 3 comments Opened Apr 8, 2026 by rebroad Closed Apr 11, 2026
💡 Likely answer: A maintainer (github-actions[bot], contributor)
responded on this thread — see the highlighted reply below.
Summary
Linux sandbox startup can fail when a protected read-only carveout path (for example .git) is a symlink under a writable root and that symlink points to an absolute target outside writable roots.
bwrap is currently invoked with a mask like:
--ro-bind /dev/null /var/tmp/src-builds/codex.other/.git
In this scenario, preflight can fail before any command/tool runs with:
bwrap: Can't create file at /var/tmp/src-builds/codex.other/.git: No such file or directory
Repro shape
workspace-writesandbox with writable root that canonicalizes to/var/tmp/src-builds/codex.other- protected carveouts include
.../.git .../.gitis a symlink to an absolute path outside writable roots
Example:
/var/tmp/src-builds/codex.other/.git -> /home/rebroad/src/codex/.git
Observed behavior
- non-escalated commands (including
apply_patch) fail at sandbox preflight - error appears before command execution
Expected behavior
Sandbox should start successfully. It should not hard-fail when masking a symlinked protected path in this layout.
Related issues
- #15725 (symlinked directory carveout variant)
- #16161 (
.gitsymlinkIs a directoryvariant)
This appears to be a related but distinct failure mode (No such file or directory) triggered by symlink target layout and mount semantics.
3 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Clarifying why this may or may not be distinct from #15725 / #16161:
bwrapfailing withIs a directoryfor symlinked protected carveouts.--ro-bind /dev/null <symlinked-protected-path>No such file or directory/var/tmp/src-builds/....gitsymlink pointing to an absolute target outside writable roots.That said, this could still be the same underlying class of bug (file-style
/dev/nullmasking on symlinked carveouts) with a different filesystem/layout-dependent error message.If maintainers believe the existing fix/work in #15725 (or prior fixes around #16161) fully covers this case, this issue can be closed as duplicate. I’m keeping this open only to preserve the
No such file or directoryvariant and exact mount argv seen in logs.being fixed in https://github.com/openai/codex/pull/15981