Skip to content

Commit 825a4af

Browse files
authored
feat: use shell policy in shell snapshot (#11759)
Honor `shell_environment_policy.set` even after a shell snapshot
1 parent 1d95656 commit 825a4af

File tree

7 files changed

+555
-19
lines changed

7 files changed

+555
-19
lines changed

codex-rs/core/src/tasks/user_shell.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ pub(crate) async fn execute_user_shell_command(
119119
&display_command,
120120
session_shell.as_ref(),
121121
turn_context.cwd.as_path(),
122+
&turn_context.shell_environment_policy.r#set,
122123
);
123124

124125
let call_id = Uuid::new_v4().to_string();

codex-rs/core/src/tools/handlers/shell.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,14 @@ impl ShellHandler {
254254
let mut exec_params = exec_params;
255255
let dependency_env = session.dependency_env().await;
256256
if !dependency_env.is_empty() {
257-
exec_params.env.extend(dependency_env);
257+
exec_params.env.extend(dependency_env.clone());
258+
}
259+
260+
let mut explicit_env_overrides = turn.shell_environment_policy.r#set.clone();
261+
for key in dependency_env.keys() {
262+
if let Some(value) = exec_params.env.get(key) {
263+
explicit_env_overrides.insert(key.clone(), value.clone());
264+
}
258265
}
259266

260267
// Approval policy guard for explicit escalation in non-OnRequest modes.
@@ -315,6 +322,7 @@ impl ShellHandler {
315322
cwd: exec_params.cwd.clone(),
316323
timeout_ms: exec_params.expiration.timeout_ms(),
317324
env: exec_params.env.clone(),
325+
explicit_env_overrides,
318326
network: exec_params.network.clone(),
319327
sandbox_permissions: exec_params.sandbox_permissions,
320328
justification: exec_params.justification.clone(),

0 commit comments

Comments
 (0)