diff --git a/codex-rs/core/src/session/mod.rs b/codex-rs/core/src/session/mod.rs index af36fda487..0112795019 100644 --- a/codex-rs/core/src/session/mod.rs +++ b/codex-rs/core/src/session/mod.rs @@ -603,6 +603,10 @@ impl Codex { account_plan_type, config.features.enabled(Feature::FastMode), ); + let cwd = environment_selections + .primary() + .map(|turn_environment| turn_environment.cwd.clone()) + .unwrap_or_else(|| config.cwd.clone()); let session_configuration = SessionConfiguration { provider: config.model_provider.clone(), collaboration_mode, @@ -618,7 +622,7 @@ impl Codex { permission_profile: config.permissions.permission_profile.clone(), active_permission_profile: config.permissions.active_permission_profile(), windows_sandbox_level: WindowsSandboxLevel::from_config(&config), - cwd: config.cwd.clone(), + cwd, codex_home: config.codex_home.clone(), thread_name: None, environments: environment_selections.to_selections(), diff --git a/codex-rs/core/src/thread_manager_tests.rs b/codex-rs/core/src/thread_manager_tests.rs index b9a1c6ea83..9f50f5c7a4 100644 --- a/codex-rs/core/src/thread_manager_tests.rs +++ b/codex-rs/core/src/thread_manager_tests.rs @@ -399,6 +399,10 @@ default_cwd = "{dev_cwd}" .start_thread(config) .await .expect("thread should start"); + let next_turn = thread.thread.codex.session.new_default_turn().await; + + assert_eq!(next_turn.cwd.display().to_string(), dev_cwd); + assert_eq!(next_turn.config.cwd.display().to_string(), dev_cwd); let prompt_items = crate::prompt_debug::build_prompt_input_from_session( thread.thread.codex.session.as_ref(),