Uh oh!
There was an error while loading. Please reload this page.
Fix captureDenials probe parity - #1070
Conversation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Azure Pipelines: There may be pipelines that require an authorized user to comment /azp run to run. |
There was a problem hiding this comment.
Copilot review overview
Review tier: Balanced
Findings: None
What changed in this PR
Aligns wxc-exec --probe tier selection with runtime request-aware behavior and reports native denial-capture capability.
Changes:
- Passes the complete execution request into probing.
- Mirrors runtime BaseContainer capability selection.
- Adds native-capture reporting, tests, and design documentation.
| File | Description |
|---|---|
src/core/wxc/src/main.rs | Passes the full request to the probe. |
src/backends/appcontainer/common/src/probe.rs | Adds request-aware probing and capture facts. |
src/backends/appcontainer/common/src/base_container_runner.rs | Exposes native-capture availability. |
docs/superpowers/specs/2026-08-31-issue-785-probe-capture-denials-design.md | Documents the design. |
docs/superpowers/plans/2026-08-31-issue-785-probe-capture-denials.md | Records the implementation plan. |
Suppressed comments (1)
src/backends/appcontainer/common/src/probe.rs:173
- A successful tier decision is not sufficient to declare a non-native
captureDenialsrequest launchable. The runtime only constructs a guarded-WPR factory unconditionally; starting it later fails when the colocatedplm.exeis missing or fails its signature/directory trust checks (mxc_engine/src/guarded_capture.rs:182-216). In that state this probe returns a tier with no error, while the real run still fails—the false-positive parity bug remains. Please include a side-effect-free guarded-capture availability/trust fact from thewxc/mxc_enginelayer and reject capture requests that need guarded WPR when that provider is unavailable.
Ok(decision) => ProbeOutput {
tier: Some(decision.tier.as_str()),
needs_dacl_augmentation: Some(decision.needs_dacl_augmentation),
warnings: decision.warnings,
probes,
error: None,
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
There was a problem hiding this comment.
Copilot review overview
Review tier: Balanced
Findings: 1
New issues introduced by this change (1)
| Severity | Finding |
|---|---|
src/backends/appcontainer/common/src/probe.rs — The probe still reports a captureDenials request as launchable whenever tier detection succeeds,… |
Uh oh!
There was an error while loading. Please reload this page.
Co-authored-by: huzaifa-d <16077119+huzaifa-d@users.noreply.github.com>
There was a problem hiding this comment.
Copilot review overview
🔵 Needs a closer look
Legacy SBOX capture can still produce a successful probe despite an unavailable required guarded fallback.
Review tier: Balanced
Findings: None
Issues resolved since last review (1)
| Severity | Finding |
|---|---|
src/backends/appcontainer/common/src/probe.rs — The probe still reports a captureDenials request as launchable whenever tier detection succeeds,… View resolved comment |
Suppressed comments (1)
src/backends/appcontainer/common/src/probe.rs:185
- This does not mirror the dispatcher's guarded-capture gate.
prefer_base_containercan be true when native PSEC/V2 capture is unavailable but legacy SBOX is usable; the dispatcher then setsguarded_capture_requiredbecauseuses_native_capture_for_requestis false. Ifplm.exeis unavailable, this probe still returns the BaseContainer tier with no error, while the real run fails when the guarded factory starts. Please base this check on the same native-capture eligibility used byselect_backend_with_fallback(and cover the legacy-SBOX/policy-incompatible-PSEC case), rather than on BaseContainer preference.
if request.policy.capture_denials.is_some()
&& !prefer_base_container
&& !probes.guarded_capture_available =>

📖 Description
Align
--probecapture-denial selection with runtime behavior and report native capture availability.🔗 References
Resolves#785
🔍 Validation
cargo test -p appcontainer_common; targeted Clippy and rustfmt.✅ Checklist
Cargo.lock, thedependency-feed-checkcheck passes (see docs/pull-requests.md)📋 Issue Type
Microsoft Reviewers: Open in CodeFlow