diff --git a/codex-rs/core/src/tools/handlers/multi_agents_v2/wait.rs b/codex-rs/core/src/tools/handlers/multi_agents_v2/wait.rs index d2f92feb8d..83458d1891 100644 --- a/codex-rs/core/src/tools/handlers/multi_agents_v2/wait.rs +++ b/codex-rs/core/src/tools/handlers/multi_agents_v2/wait.rs @@ -91,8 +91,23 @@ impl Handler { ) .await; - let deadline = Instant::now() + Duration::from_millis(timeout_ms as u64); + let wait_started = Instant::now(); + let deadline = wait_started + Duration::from_millis(timeout_ms as u64); let outcome = wait_for_activity(&mut activity_rx, pending_activity, deadline).await; + // A completed wait may wake for a message, user input, or its timeout. + // Dropped waits do not have an observed outcome and are not included. + turn.session_telemetry.record_duration( + "codex.multi_agent.wait.duration_ms", + wait_started.elapsed(), + &[( + "outcome", + match outcome { + WaitOutcome::MailboxActivity => "mailbox", + WaitOutcome::Steered => "steered", + WaitOutcome::TimedOut => "timed_out", + }, + )], + ); let result = WaitAgentResult::from_outcome(outcome, requested_timeout_ms, timeout_ms); session