mirror of
https://github.com/openai/codex.git
synced 2026-11-13 21:30:47 +00:00
Separate executor sandbox selection from Windows sandbox levels (#45730)
## Why MXC is a sandbox implementation, not a restricted-token sandbox level. Executor requests need to represent that choice separately from `WindowsSandboxLevel`. ## What changed - Introduce `WindowsSandboxSelection` for executor sandbox contexts and remove `Mxc` from `WindowsSandboxLevel`. - Preserve the `windowsSandboxLevel` wire field and its serialized values for compatibility. - Share sandbox selection between executor process launches and filesystem helpers, and use the new selection in capability discovery and skill reads. - Disable Windows sandbox selection for executor paths that do not use Windows path conventions. ## Testing Extend coverage for MXC wire serialization, Windows skill-read sandbox checks, and capability discovery with distinct permissions. Exercise remote filesystem write restrictions with both restricted-token and MXC sandboxes, including rejection when native MXC is unavailable. GitOrigin-RevId: 266211377bcb138a0dc75861e9ff2225fa37a53d
This commit is contained in:
@@ -14,10 +14,7 @@ use pretty_assertions::assert_eq;
|
||||
#[tokio::test(flavor = "multi_thread", worker_threads = 2)]
|
||||
#[serial_test::serial(remote_exec_server)]
|
||||
async fn mxc_tmpdir_uses_command_environment_over_rpc() -> Result<()> {
|
||||
if !selected_windows_sandbox_available(WindowsSandboxLevel::Mxc) {
|
||||
eprintln!("skipping MXC enforcement test: native MXC is unavailable on this host");
|
||||
return Ok(());
|
||||
}
|
||||
crate::skip_if_mxc_unavailable!(Ok(()));
|
||||
let root = TempDir::new()?;
|
||||
let command_temp = root.path().join("command temp");
|
||||
let server_temp = root.path().join("server temp");
|
||||
@@ -53,7 +50,7 @@ async fn mxc_tmpdir_uses_command_environment_over_rpc() -> Result<()> {
|
||||
PermissionProfile::from_runtime_permissions(&fs, NetworkSandboxPolicy::Restricted),
|
||||
cwd.clone(),
|
||||
);
|
||||
sandbox.windows_sandbox_level = WindowsSandboxLevel::Mxc;
|
||||
sandbox.windows_sandbox_selection = codex_exec_server::WindowsSandboxSelection::Mxc;
|
||||
let command_temp = command_temp.to_string_lossy().into_owned();
|
||||
let started = environment
|
||||
.get_exec_backend()
|
||||
|
||||
Reference in New Issue
Block a user