fix(cua-driver): allow explicit unrestricted envelope sessions - #3664
Merged
f-trycua merged 5 commits intoSep 9, 2026
Merged
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
This was referenced Sep 9, 2026
f-trycua
changed the base branch from
fix/sandbox-driver-lifecycle-deadlines-20260908
to
feat/sandbox-typed-driver-20260907
September 9, 2026 02:26
…elope-mode-20260908
…elope-mode-20260908
f-trycua
marked this pull request as ready for review
September 9, 2026 02:27
This was referenced Sep 9, 2026
f-trycua
added a commit
that referenced
this pull request
Sep 9, 2026
…3654) * docs: propose Cua Driver environment convergence RFC * docs: link Cua Driver convergence RFC review * docs: keep RFC tracking public * docs(rfc): scope the typed Driver Python Fleet first slice * docs(rfc): clarify baseline after parent branch refresh * docs(rfc): reuse Fleet authorization for typed Driver slice * feat(cua-driver): add bounded typed guest envelope receiver * feat(cua-driver): expose foreign remote envelope channels * feat(cua-driver): add private loopback envelope HTTP carrier * docs(cua-driver): specify private typed HTTP carrier limits * fix(cua-driver): own remote callback loops and rejected bindings * feat(sandbox): add typed Driver sessions over Fleet services * test(sandbox): require native typed Driver integration in CI * style(sandbox): match repository import and formatting checks * fix(cua-driver): export canonical Python action targets * test(sandbox): preserve typed targets and structured Driver refusals * fix(sandbox): bound typed Driver lifecycle and request deadlines (#3655) Co-authored-by: Francesco Bonacci <195596869+f-trycua@users.noreply.github.com> * fix(cua-driver): allow explicit unrestricted envelope sessions (#3664) * fix(sandbox): bound typed Driver lifecycle and request deadlines * fix(cua-driver): allow explicit unrestricted envelope sessions * docs(sandbox): clarify launcher-selected Driver permissions --------- Co-authored-by: Francesco Bonacci <195596869+f-trycua@users.noreply.github.com> --------- Co-authored-by: trycua-release[bot] <trycua-release[bot]@users.noreply.github.com> Co-authored-by: Francesco Bonacci <195596869+f-trycua@users.noreply.github.com>
f-trycua
added a commit
that referenced
this pull request
Sep 9, 2026
* docs: propose Cua Driver environment convergence RFC * docs: link Cua Driver convergence RFC review * docs: keep RFC tracking public * docs(rfc): scope the typed Driver Python Fleet first slice * docs(rfc): clarify baseline after parent branch refresh * docs(rfc): reuse Fleet authorization for typed Driver slice * feat(cua-driver): add bounded typed guest envelope receiver * feat(cua-driver): expose foreign remote envelope channels * feat(cua-driver): add private loopback envelope HTTP carrier * docs(cua-driver): specify private typed HTTP carrier limits * fix(cua-driver): own remote callback loops and rejected bindings * feat(sandbox): add typed Driver sessions over Fleet services * test(sandbox): require native typed Driver integration in CI * style(sandbox): match repository import and formatting checks * fix(cua-driver): export canonical Python action targets * test(sandbox): preserve typed targets and structured Driver refusals * fix(sandbox): bound typed Driver lifecycle and request deadlines * fix(cua-driver): allow explicit unrestricted envelope sessions * docs(sandbox): clarify launcher-selected Driver permissions * fix(cua-driver): preserve unavailable Windows UIA clicks * ci(cua-driver): quote Windows test module selectors * fix(sandbox): bound typed Driver lifecycle and request deadlines (#3655) Co-authored-by: Francesco Bonacci <195596869+f-trycua@users.noreply.github.com> * fix(cua-driver): allow explicit unrestricted envelope sessions (#3664) * fix(sandbox): bound typed Driver lifecycle and request deadlines * fix(cua-driver): allow explicit unrestricted envelope sessions * docs(sandbox): clarify launcher-selected Driver permissions --------- Co-authored-by: Francesco Bonacci <195596869+f-trycua@users.noreply.github.com> --------- Co-authored-by: trycua-release[bot] <trycua-release[bot]@users.noreply.github.com> Co-authored-by: Francesco Bonacci <195596869+f-trycua@users.noreply.github.com>
f-trycua
added a commit
that referenced
this pull request
Sep 9, 2026
* docs: propose Cua Driver environment convergence RFC * docs: link Cua Driver convergence RFC review * docs: keep RFC tracking public * docs(rfc): scope the typed Driver Python Fleet first slice * docs(rfc): clarify baseline after parent branch refresh * docs(rfc): reuse Fleet authorization for typed Driver slice * feat(cua-driver): add bounded typed guest envelope receiver * feat(cua-driver): expose foreign remote envelope channels * feat(cua-driver): add private loopback envelope HTTP carrier * docs(cua-driver): specify private typed HTTP carrier limits * fix(cua-driver): own remote callback loops and rejected bindings * feat(sandbox): add typed Driver sessions over Fleet services * test(sandbox): require native typed Driver integration in CI * style(sandbox): match repository import and formatting checks * fix(cua-driver): export canonical Python action targets * test(sandbox): preserve typed targets and structured Driver refusals * fix(sandbox): bound typed Driver lifecycle and request deadlines * fix(cua-driver): allow explicit unrestricted envelope sessions * docs(sandbox): clarify launcher-selected Driver permissions * test(sandbox): cover typed Fleet state verification * fix(sandbox): bound typed Driver lifecycle and request deadlines (#3655) Co-authored-by: Francesco Bonacci <195596869+f-trycua@users.noreply.github.com> * fix(cua-driver): allow explicit unrestricted envelope sessions (#3664) * fix(sandbox): bound typed Driver lifecycle and request deadlines * fix(cua-driver): allow explicit unrestricted envelope sessions * docs(sandbox): clarify launcher-selected Driver permissions --------- Co-authored-by: Francesco Bonacci <195596869+f-trycua@users.noreply.github.com> --------- Co-authored-by: trycua-release[bot] <trycua-release[bot]@users.noreply.github.com> Co-authored-by: Francesco Bonacci <195596869+f-trycua@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Landing order
Merge into the #3654 accessor branch, which already contains #3655's lifecycle/deadline correction. This keeps the completed accessor and explicit trusted-launcher permission mode together for their later main-branch landing. This branch merge is not a release, image rollout, or new authorization mechanism.
The mode changes remain identical to the reviewed candidate; refreshing ancestors has not changed these six files. Current PR checks pass. The complete follow-on candidate at
43a332a66d8379b4fb9330c6a96f0654cc4afea1also passes Linux E2E, Windows unit/compile, and contract/binding validation. Its final Windows shared-app lane is tracked separately.Earlier notes below preserve their original test checkpoints, not the current merge disposition.
Scope
Refs #2512. Stacked on #3655; keep this PR draft and unmerged.
The private typed carrier previously requested a Standard session even when
its daemon admitted only Unrestricted. These modes are an explicit allowed
set, not a privilege ordering, so connection creation failed with
session_unavailable.Add the trusted-launcher-only
CUA_DRIVER_ENVELOPE_PERMISSION_MODEsetting.Standard remains the default. Unrestricted requires an explicitly opted-in
carrier and an already acknowledged unrestricted daemon. HTTP requests cannot
select permissions or manifests. No generated interface, core authorization,
Fleet authorization, or existing computer-server behavior changes.
Bounded mode and carrier manifest configuration remain unsupported. The SDK's
compatibility-call and trusted-session manifests remain separate contracts.
This carrier limitation is not a change to that SDK model.
Validation
opt-in, missing acknowledgement, invalid modes, and manifest rejection.
cargo fmt --all -- --checkandgit diff --checkpass.and the full Linux desktop workflow
pass at
89ea6e5ed237c95e847d648af8f0a54e51e1e521.button click, connection close and reacquisition, actual daemon restart,
rejection of the old binding, and a successful fresh connection. Existing
server shell/files and the released daemon remain intact. Claim release and
owned namespace removal are verified. This is staged-candidate evidence, not
published-image qualification.
shared apps, capture, and installer pass. One native WebView2 background-click
cell fails with the previously reported cua-driver/Windows: preserve UIA unavailability during WebView2 background clicks #3621 UIA-cooldown/PostMessage chain.
The relevant Windows platform and test sources are unchanged from the parent.
This result is not green and no test was weakened or replayed to hide it.
visually reviewed synthetic click, close/reacquisition, actual daemon
restart, stale SDK/remote/generation rejection, and fresh capture. Existing
server shell/files/screenshot and the released daemon remain intact. Claim
release and namespace absence are independently verified. Earlier failed
setup attempts are not counted as passes, and an uncertain action was not
replayed. This is staged-candidate desktop proof, not AX/window coverage or
published-image qualification.
89ea6e5ed237c95e847d648af8f0a54e51e1e521.Final commit
e4d58d39e53b802251733187aa26efaa59863158only corrects SDKdocstrings, development documentation, error wording, and its test regex.
All 48 focused typed/native tests plus Ruff lint/format pass after that delta;
no runtime control flow or generated interface changes.
Boundaries and rollback
The endpoint stays loopback-only behind the existing environment carrier.
This does not authorize public exposure, ship an image, or publish a release.
Rollback before merge is to omit this stacked PR; tests requiring an
Unrestricted typed session then remain unavailable. Parent stack review and
explicit merge/release decisions remain separate.