Skip to content

[codex] Restore setup helper UAC manifest#25949

Merged
iceweasel-oai merged 2 commits into
mainfrom
codex/can-you-help-figure-out
Jun 3, 2026
Merged

[codex] Restore setup helper UAC manifest#25949
iceweasel-oai merged 2 commits into
mainfrom
codex/can-you-help-figure-out

Conversation

@iceweasel-oai
Copy link
Copy Markdown
Collaborator

@iceweasel-oai iceweasel-oai commented Jun 2, 2026

Why

#23764 removed Windows resource stamping from codex-windows-sandbox, but it also removed the setup helper's UAC manifest. That manifest was doing more than cosmetic version metadata: Microsoft documents requestedExecutionLevel level="asInvoker" as the setting that makes an executable run at the same permission level as the process that started it: https://learn.microsoft.com/en-us/windows/win32/sbscs/application-manifests#trustinfo

In the reported session, codex-windows-sandbox-setup.exe was launched for a non-elevated setup refresh and CreateProcess failed with os error 740 (The requested operation requires elevation). Restoring an explicit asInvoker manifest records the helper's intended default launch contract: normal launches inherit the caller's token, and elevation only happens through the code paths that request it explicitly.

The setup helper has two launch modes:

  • setup refresh uses a normal Command::new(...) spawn and should never trigger UAC
  • full setup explicitly uses ShellExecuteExW with the runas verb when elevation is required

Restoring asInvoker keeps refresh non-elevated by default while preserving the explicit elevated path for full setup.

What changed

  • Restored a minimal codex-windows-sandbox-setup.manifest containing only requestedExecutionLevel level="asInvoker".
  • Added a small build script that passes setup-helper-scoped manifest linker args for MSVC and the Windows GNU/LLVM target used by Bazel.
  • Wired the manifest into Bazel build-script data.

This does not restore winres, FileDescription, ProductName, or package-wide resource stamping, so other Codex binaries that link codex-windows-sandbox do not inherit metadata from this package.

Verification

  • cargo fmt -p codex-windows-sandbox
  • cargo build -p codex-windows-sandbox --bin codex-windows-sandbox-setup
  • cargo build -p codex-windows-sandbox --bin codex-command-runner
  • cargo build -p codex-windows-sandbox --lib
  • Build-script output simulation for CARGO_CFG_TARGET_ENV=msvc emits /MANIFEST:EMBED and /MANIFESTINPUT:<manifest>.
  • Build-script output simulation for CARGO_CFG_TARGET_ENV=gnu + CARGO_CFG_TARGET_ABI=llvm emits -Wl,-Xlink=/manifest:embed and -Wl,-Xlink=/manifestinput:<manifest>.
  • Inspected the built binaries and confirmed:
    • codex-windows-sandbox-setup.exe contains requestedExecutionLevel / asInvoker
    • codex-command-runner.exe does not contain those manifest strings
    • Windows VersionInfo remains blank for FileDescription / ProductName
  • just test -p codex-windows-sandbox ran through Nextest, with 114 passing, 2 skipped, and 1 existing Windows sandbox failure: unified_exec::tests::legacy_non_tty_cmd_emits_output fails with CreateRestrictedToken failed: 87.

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: fcb44d6320

ℹ️ 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".

Comment thread codex-rs/windows-sandbox-rs/build.rs Outdated
Comment thread codex-rs/windows-sandbox-rs/build.rs Outdated
@iceweasel-oai iceweasel-oai force-pushed the codex/can-you-help-figure-out branch from fcb44d6 to 6bd3a19 Compare June 2, 2026 22:20
@iceweasel-oai iceweasel-oai enabled auto-merge (squash) June 2, 2026 22:49
@iceweasel-oai iceweasel-oai merged commit b2344d8 into main Jun 3, 2026
31 checks passed
@iceweasel-oai iceweasel-oai deleted the codex/can-you-help-figure-out branch June 3, 2026 16:21
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 3, 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.

2 participants