From b7d7b5e9cd80b9e36649dca33b6456dd41faaa71 Mon Sep 17 00:00:00 2001 From: Felipe Coury Date: Fri, 22 May 2026 21:18:02 -0300 Subject: [PATCH] fix(next-prompt): avoid persisting hidden usage --- codex-rs/core/src/next_prompt_suggestion.rs | 7 ++++++- codex-rs/core/src/session/mod.rs | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/codex-rs/core/src/next_prompt_suggestion.rs b/codex-rs/core/src/next_prompt_suggestion.rs index 25ec0ac285..44e5ee95d1 100644 --- a/codex-rs/core/src/next_prompt_suggestion.rs +++ b/codex-rs/core/src/next_prompt_suggestion.rs @@ -131,6 +131,7 @@ pub(crate) async fn suggest_next_prompt( tokio::pin!(sample_deadline); let completed_response_id = loop { if !session_is_idle_for_suggestion(sess).await { + client_session.reset_websocket_session(); return Ok(None); } let Some(event) = (tokio::select! { @@ -138,16 +139,19 @@ pub(crate) async fn suggest_next_prompt( Ok(event) => event, Err(codex_async_utils::CancelErr::Cancelled) => { tracing::debug!("next prompt suggestion canceled while sampling"); + client_session.reset_websocket_session(); return Ok(None); } }, _ = tokio::time::sleep(Duration::from_millis(100)) => continue, _ = &mut sample_deadline => { tracing::debug!("next prompt suggestion timed out while sampling"); + client_session.reset_websocket_session(); return Ok(None); }, }) else { tracing::debug!("next prompt suggestion stream closed before completion"); + client_session.reset_websocket_session(); return Ok(None); }; let event = match event { @@ -157,6 +161,7 @@ pub(crate) async fn suggest_next_prompt( error = ?err, "next prompt suggestion stream failed while sampling" ); + client_session.reset_websocket_session(); return Ok(None); } }; @@ -189,7 +194,7 @@ pub(crate) async fn suggest_next_prompt( .await .and_then(|item| item.turn_id) { - sess.send_event_raw(Event { + sess.deliver_event_raw(Event { id: turn_id, msg: EventMsg::TokenCount(TokenCountEvent { info: token_usage_info, diff --git a/codex-rs/core/src/session/mod.rs b/codex-rs/core/src/session/mod.rs index 8ce16de740..edc7d2395f 100644 --- a/codex-rs/core/src/session/mod.rs +++ b/codex-rs/core/src/session/mod.rs @@ -1805,7 +1805,7 @@ impl Session { self.deliver_event_raw(event).await; } - async fn deliver_event_raw(&self, event: Event) { + pub(crate) async fn deliver_event_raw(&self, event: Event) { // Record the last known agent status. if let Some(status) = agent_status_from_event(&event.msg) { self.agent_status.send_replace(status);