From 8b7d0e920186642177924f4118b24e3947b250a1 Mon Sep 17 00:00:00 2001 From: Ahmed Ibrahim Date: Tue, 14 Apr 2026 14:39:28 -0700 Subject: [PATCH] Add realtime wire trace logs (#17838) - Add trace-only wire logging for realtime websocket request/event text payloads and the WebRTC call SDP request. - Gate raw realtime logs behind `RUST_LOG=codex_api::realtime_websocket::wire=trace` so normal logs stay quiet. --------- Co-authored-by: Codex --- codex-rs/codex-api/src/endpoint/realtime_call.rs | 1 + codex-rs/codex-api/src/endpoint/realtime_websocket/methods.rs | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/codex-rs/codex-api/src/endpoint/realtime_call.rs b/codex-rs/codex-api/src/endpoint/realtime_call.rs index 5f0ad3526..4d0bcfa7b 100644 --- a/codex-rs/codex-api/src/endpoint/realtime_call.rs +++ b/codex-rs/codex-api/src/endpoint/realtime_call.rs @@ -119,6 +119,7 @@ impl RealtimeCallClient { session_config: RealtimeSessionConfig, extra_headers: HeaderMap, ) -> Result { + trace!(target: "codex_api::realtime_websocket::wire", "realtime call request SDP: {sdp}"); // WebRTC can begin inference as soon as the peer connection comes up, so the initial // session payload is sent with call creation. The sideband WebSocket still sends its normal // session.update after it joins. diff --git a/codex-rs/codex-api/src/endpoint/realtime_websocket/methods.rs b/codex-rs/codex-api/src/endpoint/realtime_websocket/methods.rs index b1fd1ef75..a6964e661 100644 --- a/codex-rs/codex-api/src/endpoint/realtime_websocket/methods.rs +++ b/codex-rs/codex-api/src/endpoint/realtime_websocket/methods.rs @@ -45,6 +45,8 @@ use tracing::warn; use tungstenite::protocol::WebSocketConfig; use url::Url; +const REALTIME_WIRE_LOG_TARGET: &str = "codex_api::realtime_websocket::wire"; + struct WsStream { tx_command: mpsc::Sender, pump_task: tokio::task::JoinHandle<()>, @@ -351,6 +353,7 @@ impl RealtimeWebsocketWriter { )); } + trace!(target: REALTIME_WIRE_LOG_TARGET, "realtime websocket request: {payload}"); self.stream .send(Message::Text(payload.into())) .await @@ -384,6 +387,7 @@ impl RealtimeWebsocketEvents { match msg { Message::Text(text) => { + trace!(target: REALTIME_WIRE_LOG_TARGET, "realtime websocket event: {text}"); if let Some(mut event) = parse_realtime_event(&text, self.event_parser) { self.update_active_transcript(&mut event).await; debug!(?event, "realtime websocket parsed event");