Skip to content

Bubblewrap: cooperative proxy warning contradicts the schema 0.8+ private-namespace guarantee #970

Closed

Description

Description of the task

convert_wire_config in src/core/wxc_common/src/config_parser.rs emits a cooperative-model warning when a Bubblewrap config combines the builtin test proxy with defaultPolicy: block and an empty allowlist. It tells the user that well-behaved HTTP clients are denied at the proxy while raw-socket clients still reach the host network.

That is accurate pre-0.8, where the sandbox shares the host network and the proxy is purely cooperative. From schema 0.8 it is false: the Bubblewrap proxy path puts the sandbox in a private network namespace whose egress chain drops everything except the proxy, so no client escapes it. The warning now contradicts the guarantee the backend actually provides.

Proposed work:

  • Gate the warning to pre-0.8 so it is not emitted under the strict-network contract.
  • This needs a shared "is this schema 0.8+?" predicate. bwrap_command.rs already carries that logic for mode selection (uses_private_proxy_network), so hoist it into a single definition rather than writing a second copy — note that wxc_common must not depend on any backends/* crate, so the shared helper has to live in wxc_common.
  • Strengthen the existing pre-0.8 test, which currently asserts nothing about the warning at all and would pass even if the warning were deleted outright. Add a 0.8 twin asserting absence, plus a boundary test for the predicate.

Additional context

Raised by Branden Bonaby (@bbonaby) in review of #931 ("The existing config warning now contradicts this schema 0.8+ guarantee"). Deferred out of that PR to keep it free of config_parser.rs changes.

  • Impact is a misleading diagnostic only. No enforcement behaviour depends on this warning, so there is no security or correctness exposure — the sandbox is isolated either way.
  • Worth confirming at pickup whether the warning should be gated or rewritten to describe the 0.8 behaviour instead of suppressed. The reviewer offered both options.
  • A working implementation existed briefly on user/sodas/bwrap-proxy-egress-enforcement before being reverted. That commit was dropped in a rebase and is no longer reachable from any branch, so it cannot be cited by SHA.

Activity

  1. added
    Needs-TriageHas not yet been reviewed, classified, and routed.
    Issue-TaskEngineering, maintenance, or operational work that is not a bug or feature request.
    Priority3Moderate or limited impact; address as capacity permits.
    on Aug 20, 2026
  2. added
    Needs-TriageHas not yet been reviewed, classified, and routed.
    and removed
    Needs-TriageHas not yet been reviewed, classified, and routed.
    on Aug 20, 2026
  3. changed the title [-]Bubblewrap: rule-installation deadline has no margin for slirp readiness and process launches[/-] [+]Bubblewrap: cooperative proxy warning contradicts the schema 0.8+ private-namespace guarantee[/+] on Aug 20, 2026
  4. added
    Backend-ProcessContainerWindows ProcessContainer behavior, including BaseContainer and AppContainer isolation tiers.
    OS-LinuxApplies specifically to Linux hosts or Linux behavior.
    on Aug 20, 2026
  5. github-actions commented on Aug 20, 2026

    @github-actions

    Triage complete.

    • Labels applied: OS-Linux, Container-Process, Area-Executor-LXC
    • Owner assigned: Already assigned to Soham Das (@SohamDas2021) (Linux / Bubblewrap)
    • Needs-Triage removed

    Maintainers: Comment /investigate to check whether this issue or bug is valid against the most current code. Copilot will also produce a report with the changes that will be needed. For a small, unambiguous documentation or test fix, it may also create one draft PR.

    Generated by 🏷️ Issue Triage for #970 · sonnet46 · 23.9 AIC · ⌖ 7.74 AIC · ⊞ 7.5K · ◷

  6. added
    Area-Rust-SDKPublic Rust SDK APIs and integration with the MXC execution engine.
    Backend-LXCLinux container isolation implemented with LXC.
    Area-TestShared test infrastructure, fixtures, harnesses, probes, or end-to-end validation.
    on Aug 20, 2026
  7. github-actions commented on Aug 20, 2026

    @github-actions

    Triage complete.

    Labels applied: Area-Executor-LXC, Area-Build-Rust, Area-Test-Executor
    Owners assigned: Soham Das (@SohamDas2021) (already assigned, Bubblewrap/Linux), @bbonaby (added — Linux proxy/networking, Rust build, and original reviewer who raised this)
    Needs-Triage removed.

    Maintainers: Comment /investigate to check whether this issue or bug is valid against the most current code. Copilot will also produce a report with the changes that will be needed. For a small, unambiguous documentation or test fix, it may also create one draft PR.

    Generated by 🏷️ Issue Triage for #970 · sonnet46 · 27 AIC · ⌖ 5.4 AIC · ⊞ 7.5K · ◷

  8. github-actions commented on Aug 20, 2026

    @github-actions

    This issue was already triaged — it carries OS-Linux, Area-Executor-LXC, Area-Build-Rust, Area-Test-Executor, Container-Process, and Issue-Task labels, and is assigned to Soham Das (@SohamDas2021) and @bbonaby. No additional labels or assignments were needed; Needs-Triage was not present.

    Generated by 🏷️ Issue Triage for #970 · sonnet46 · 19.2 AIC · ⌖ 5.21 AIC · ⊞ 7.5K · ◷

  9. SohamDas2021 commented on Sep 2, 2026

    @SohamDas2021
    ContributorAuthor

    Tracked in ADO.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Area-Rust-SDKPublic Rust SDK APIs and integration with the MXC execution engine.Area-TestShared test infrastructure, fixtures, harnesses, probes, or end-to-end validation.Backend-LXCLinux container isolation implemented with LXC.Backend-ProcessContainerWindows ProcessContainer behavior, including BaseContainer and AppContainer isolation tiers.Issue-TaskEngineering, maintenance, or operational work that is not a bug or feature request.OS-LinuxApplies specifically to Linux hosts or Linux behavior.Priority3Moderate or limited impact; address as capacity permits.

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions