mirror of
https://github.com/openai/codex.git
synced 2026-05-05 22:01:37 +03:00
Fix nested exec thread ID restore (#16882)
Addresses #15527 Problem: Nested `codex exec` commands could source a shell snapshot that re-exported the parent `CODEX_THREAD_ID`, so commands inside the nested session were attributed to the wrong thread. Solution: Reapply the live command env's `CODEX_THREAD_ID` after sourcing the snapshot.
This commit is contained in:
@@ -124,11 +124,16 @@ pub(crate) async fn execute_user_shell_command(
|
||||
let use_login_shell = true;
|
||||
let session_shell = session.user_shell();
|
||||
let display_command = session_shell.derive_exec_args(&command, use_login_shell);
|
||||
let exec_env_map = create_env(
|
||||
&turn_context.shell_environment_policy,
|
||||
Some(session.conversation_id),
|
||||
);
|
||||
let exec_command = maybe_wrap_shell_lc_with_snapshot(
|
||||
&display_command,
|
||||
session_shell.as_ref(),
|
||||
turn_context.cwd.as_path(),
|
||||
&turn_context.shell_environment_policy.r#set,
|
||||
&exec_env_map,
|
||||
);
|
||||
|
||||
let call_id = Uuid::new_v4().to_string();
|
||||
@@ -156,10 +161,7 @@ pub(crate) async fn execute_user_shell_command(
|
||||
let exec_env = ExecRequest {
|
||||
command: exec_command.clone(),
|
||||
cwd: cwd.to_path_buf(),
|
||||
env: create_env(
|
||||
&turn_context.shell_environment_policy,
|
||||
Some(session.conversation_id),
|
||||
),
|
||||
env: exec_env_map,
|
||||
network: turn_context.network.clone(),
|
||||
// TODO(zhao-oai): Now that we have ExecExpiration::Cancellation, we
|
||||
// should use that instead of an "arbitrarily large" timeout here.
|
||||
|
||||
Reference in New Issue
Block a user