diff --git a/codex-rs/core/src/codex.rs b/codex-rs/core/src/codex.rs index 5a3257f2ed..6c4ea65811 100644 --- a/codex-rs/core/src/codex.rs +++ b/codex-rs/core/src/codex.rs @@ -1994,10 +1994,10 @@ async fn handle_response_item( arguments, timeout_ms, } => { - let call_id = id - .clone() - .or_else(|| session_id.clone()) - .unwrap_or_else(|| format!("unified_exec:{}", Uuid::new_v4())); + let call_id = id.clone().unwrap_or_else(|| match &session_id { + Some(session_id) => format!("unified_exec:{session_id}:{}", Uuid::new_v4()), + None => format!("unified_exec:{}", Uuid::new_v4()), + }); Some( handle_unified_exec_tool_call( sess, diff --git a/codex-rs/core/src/unified_exec/mod.rs b/codex-rs/core/src/unified_exec/mod.rs index 82ee714b2e..f09223558d 100644 --- a/codex-rs/core/src/unified_exec/mod.rs +++ b/codex-rs/core/src/unified_exec/mod.rs @@ -29,7 +29,7 @@ use path::command_from_chunks; use path::join_input_chunks; use path::resolve_command_path; -const DEFAULT_TIMEOUT_MS: u64 = 250; +const DEFAULT_TIMEOUT_MS: u64 = 1_000; const MAX_TIMEOUT_MS: u64 = 60_000; const UNIFIED_EXEC_OUTPUT_MAX_BYTES: usize = 128 * 1024; // 128 KiB