Skip to content

fix(linux-sandbox): prefer system /usr/bin/bwrap when available#14963

Merged
viyatb-oai merged 16 commits intomainfrom
codex/viyatb/document-apparmor-profile-for-bwrap
Mar 17, 2026
Merged

fix(linux-sandbox): prefer system /usr/bin/bwrap when available#14963
viyatb-oai merged 16 commits intomainfrom
codex/viyatb/document-apparmor-profile-for-bwrap

Conversation

@viyatb-oai
Copy link
Copy Markdown
Collaborator

@viyatb-oai viyatb-oai commented Mar 17, 2026

Problem

Ubuntu/AppArmor hosts started failing in the default Linux sandbox path after the switch to vendored/default bubblewrap in 0.115.0.

The clearest report is in #14919, especially this investigation comment: on affected Ubuntu systems, /usr/bin/bwrap works, but a copied or vendored bwrap binary fails with errors like bwrap: setting up uid map: Permission denied or bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted.

The root cause is Ubuntu's /etc/apparmor.d/bwrap-userns-restrict profile, which grants userns access specifically to /usr/bin/bwrap. Once Codex started using a vendored/internal bubblewrap path, that path was no longer covered by the distro AppArmor exception, so sandbox namespace setup could fail even when user namespaces were otherwise enabled and uidmap was installed.

What this PR changes

  • prefer system /usr/bin/bwrap whenever it is available
  • keep vendored bubblewrap as the fallback when /usr/bin/bwrap is missing
  • when /usr/bin/bwrap is missing, surface a Codex startup warning through the app-server/TUI warning path instead of printing directly from the sandbox helper with eprintln!
  • use the same launcher decision for both the main sandbox execution path and the /proc preflight path
  • document the updated Linux bubblewrap behavior in the Linux sandbox and core READMEs

Why this fix

This still fixes the Ubuntu/AppArmor regression from #14919, but it keeps the runtime rule simple and platform-agnostic: if the standard system bubblewrap is installed, use it; otherwise fall back to the vendored helper.

The warning now follows that same simple rule. If Codex cannot find /usr/bin/bwrap, it tells the user that it is falling back to the vendored helper, and it does so through the existing startup warning plumbing that reaches the TUI and app-server instead of low-level sandbox stderr.

Testing

  • cargo test -p codex-linux-sandbox
  • cargo test -p codex-app-server --lib
  • cargo test -p codex-tui-app-server tests::embedded_app_server_start_failure_is_returned
  • cargo clippy -p codex-linux-sandbox --all-targets
  • cargo clippy -p codex-app-server --all-targets
  • cargo clippy -p codex-tui-app-server --all-targets

@viyatb-oai viyatb-oai changed the title Prefer system bubblewrap on Ubuntu AppArmor hosts fix: prefer system bubblewrap on Ubuntu AppArmor hosts Mar 17, 2026
@viyatb-oai viyatb-oai changed the title fix: prefer system bubblewrap on Ubuntu AppArmor hosts fix: prefer system bubblewrap on linux hosts with restrictive AppArmor policies Mar 17, 2026
@viyatb-oai viyatb-oai requested a review from bolinfest March 17, 2026 17:56
@viyatb-oai viyatb-oai marked this pull request as ready for review March 17, 2026 17:56
@viyatb-oai viyatb-oai changed the title fix: prefer system bubblewrap on linux hosts with restrictive AppArmor policies fix(linux-sandbox): prefer system /usr/bin/bwrap when available Mar 17, 2026
Copy link
Copy Markdown
Contributor

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1a44c08742

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@bolinfest bolinfest requested a review from etraut-openai March 17, 2026 18:52
Copy link
Copy Markdown
Collaborator

@etraut-openai etraut-openai left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't review the sandbox changes (I presume bolinfest did). The error reporting looks good to me now.

Copy link
Copy Markdown
Collaborator

@bolinfest bolinfest left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for jumping on this!

@viyatb-oai viyatb-oai enabled auto-merge (squash) March 17, 2026 21:43
@viyatb-oai viyatb-oai merged commit 0d1539e into main Mar 17, 2026
54 of 56 checks passed
@viyatb-oai viyatb-oai deleted the codex/viyatb/document-apparmor-profile-for-bwrap branch March 17, 2026 23:05
@github-actions github-actions bot locked and limited conversation to collaborators Mar 17, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants