mirror of
https://github.com/openai/codex.git
synced 2026-11-14 06:48:26 +00:00
sandboxing: migrate cwd inputs to PathUri (#27816)
## Why Sandbox cwd values can cross app-server and exec-server host boundaries. They should retain URI semantics until the receiving host validates them instead of being interpreted early as native paths. ## What - Carry `PathUri` through filesystem sandbox contexts, sandbox commands, and transform inputs. - Convert command and policy cwd once in `SandboxManager::transform`, then keep launch requests native. - Preserve sandbox cwd over remote filesystem transport and reject non-native URIs without fallback. - Cache paired native/URI turn-environment cwd values during migration, with immutable access to keep them synchronized. - Extend existing protocol, forwarding, transform, and core runtime tests.
This commit is contained in:
1 parent
84520225b9
commit
52a50aec70
40 files changed
+546
-228
No files matched your search
@@ -58,7 +58,7 @@ impl ResolvedTurnEnvironments {
|
||||
return None;
|
||||
};
|
||||
|
||||
(!environment.environment.is_remote()).then_some(&environment.cwd)
|
||||
(!environment.environment.is_remote()).then_some(environment.cwd())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,12 +96,12 @@ pub(crate) async fn resolve_environment_selections(
|
||||
None
|
||||
}
|
||||
};
|
||||
turn_environments.push(TurnEnvironment {
|
||||
turn_environments.push(TurnEnvironment::new(
|
||||
environment_id,
|
||||
environment,
|
||||
cwd: selected_environment.cwd.clone(),
|
||||
selected_environment.cwd.clone(),
|
||||
shell,
|
||||
});
|
||||
)?);
|
||||
}
|
||||
Ok(ResolvedTurnEnvironments { turn_environments })
|
||||
}
|
||||
@@ -270,22 +270,26 @@ url = "ws://127.0.0.1:8765"
|
||||
.expect("remote environment"),
|
||||
);
|
||||
let remote = ResolvedTurnEnvironments {
|
||||
turn_environments: vec![TurnEnvironment {
|
||||
environment_id: REMOTE_ENVIRONMENT_ID.to_string(),
|
||||
environment: remote_environment.clone(),
|
||||
cwd: cwd.clone(),
|
||||
shell: None,
|
||||
}],
|
||||
turn_environments: vec![
|
||||
TurnEnvironment::new(
|
||||
REMOTE_ENVIRONMENT_ID.to_string(),
|
||||
remote_environment.clone(),
|
||||
cwd.clone(),
|
||||
/*shell*/ None,
|
||||
)
|
||||
.expect("remote cwd URI"),
|
||||
],
|
||||
};
|
||||
let multiple = ResolvedTurnEnvironments {
|
||||
turn_environments: vec![
|
||||
local.primary().expect("local environment").clone(),
|
||||
TurnEnvironment {
|
||||
environment_id: REMOTE_ENVIRONMENT_ID.to_string(),
|
||||
environment: remote_environment,
|
||||
cwd: cwd.clone(),
|
||||
shell: None,
|
||||
},
|
||||
TurnEnvironment::new(
|
||||
REMOTE_ENVIRONMENT_ID.to_string(),
|
||||
remote_environment,
|
||||
cwd.clone(),
|
||||
/*shell*/ None,
|
||||
)
|
||||
.expect("remote cwd URI"),
|
||||
],
|
||||
};
|
||||
|
||||
|
||||
Reference in new issue
Block a user