diff --git a/codex-rs/core/src/tools/handlers/multi_agents_tests.rs b/codex-rs/core/src/tools/handlers/multi_agents_tests.rs index e70c895473..30c1f5e8e0 100644 --- a/codex-rs/core/src/tools/handlers/multi_agents_tests.rs +++ b/codex-rs/core/src/tools/handlers/multi_agents_tests.rs @@ -58,6 +58,7 @@ use std::time::Duration; use tokio::sync::Mutex; use tokio::time::timeout; use tokio_util::sync::CancellationToken; +use tracing_test::traced_test; fn invocation( session: Arc, @@ -95,11 +96,14 @@ fn thread_manager() -> ThreadManager { async fn install_role_with_model_provider_and_profile_override(turn: &mut TurnContext) -> String { let role_name = "fork-context-role".to_string(); + tokio::fs::create_dir_all(&turn.config.codex_home) + .await + .expect("codex home should be created"); let role_config_path = turn.config.codex_home.join("fork-context-role.toml"); tokio::fs::write( &role_config_path, r#"developer_instructions = "Forked children should keep the parent model config." -model_provider = "role-provider" +model_provider = "openai" model_context_window = 12345 model_auto_compact_token_limit = 1234 model_verbosity = "low" @@ -108,19 +112,13 @@ profile = "role-profile" service_tier = "fast" [profiles.role-profile] -model_provider = "role-provider" +model_provider = "openai" "#, ) .await .expect("role config should be written"); let mut config = (*turn.config).clone(); - let mut role_provider = - built_in_model_providers(/* openai_base_url */ /*openai_base_url*/ None)["openai"].clone(); - role_provider.name = "Role Provider".to_string(); - config - .model_providers - .insert("role-provider".to_string(), role_provider); config.service_tier = Some(ServiceTier::Flex); config.plan_mode_reasoning_effort = Some(ReasoningEffort::High); config.model_verbosity = Some(Verbosity::High); @@ -355,6 +353,7 @@ async fn spawn_agent_uses_explorer_role_and_preserves_approval_policy() { } #[tokio::test] +#[traced_test] async fn spawn_agent_fork_context_ignores_child_model_overrides() { let (mut session, mut turn) = make_session_and_context().await; let role_name = install_role_with_model_provider_and_profile_override(&mut turn).await; diff --git a/codex-rs/core/tests/suite/subagent_notifications.rs b/codex-rs/core/tests/suite/subagent_notifications.rs index 72bf00ed23..919eda2e48 100644 --- a/codex-rs/core/tests/suite/subagent_notifications.rs +++ b/codex-rs/core/tests/suite/subagent_notifications.rs @@ -442,7 +442,8 @@ async fn spawn_agent_inherits_parent_model_and_reasoning_without_role() -> Resul } #[tokio::test(flavor = "multi_thread", worker_threads = 2)] -async fn spawn_agent_role_overrides_requested_model_and_reasoning_settings() -> Result<()> { +async fn spawn_agent_role_overrides_requested_model_and_reasoning_settings_without_fork_context() +-> Result<()> { skip_if_no_network!(Ok(())); let server = start_mock_server().await; @@ -453,6 +454,7 @@ async fn spawn_agent_role_overrides_requested_model_and_reasoning_settings() -> "agent_type": "custom", "model": REQUESTED_MODEL, "reasoning_effort": REQUESTED_REASONING_EFFORT, + "fork_context": false, }), |builder| { builder.with_config(|config| {