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 26f0b53b9c..fe07e0018d 100644 --- a/codex-rs/core/src/tools/handlers/multi_agents_tests.rs +++ b/codex-rs/core/src/tools/handlers/multi_agents_tests.rs @@ -354,6 +354,15 @@ async fn multi_agent_v2_spawn_fork_context_ignores_child_model_overrides() { .expect("root thread should start"); session.services.agent_control = manager.agent_control(); session.conversation_id = root.thread_id; + let mut config = (*turn.config).clone(); + config + .features + .enable(Feature::MultiAgentV2) + .expect("test config should allow feature update"); + let turn = TurnContext { + config: Arc::new(config), + ..turn + }; let expected_model = turn.model_info.slug.clone(); let expected_reasoning_effort = turn.reasoning_effort; @@ -366,7 +375,8 @@ async fn multi_agent_v2_spawn_fork_context_ignores_child_model_overrides() { "message": "inspect this repo", "model": "not-a-real-model", "reasoning_effort": "low", - "fork_context": true + "fork_context": true, + "task_name": "fork_context_v2" })), )) .await @@ -374,11 +384,13 @@ async fn multi_agent_v2_spawn_fork_context_ignores_child_model_overrides() { let (content, _) = expect_text_output(output); let result: serde_json::Value = serde_json::from_str(&content).expect("spawn_agent result should be json"); - let agent_id = parse_agent_id( - result["agent_id"] - .as_str() - .expect("spawn_agent result should include agent_id"), - ); + assert_eq!(result["task_name"], "/root/fork_context_v2"); + let agent_id = manager + .captured_ops() + .into_iter() + .map(|(thread_id, _)| thread_id) + .find(|thread_id| *thread_id != root.thread_id) + .expect("spawned agent should receive an op"); let snapshot = manager .get_thread(agent_id) .await