diff --git a/codex-rs/core/src/state/session.rs b/codex-rs/core/src/state/session.rs index 7491f211db..9510385d48 100644 --- a/codex-rs/core/src/state/session.rs +++ b/codex-rs/core/src/state/session.rs @@ -71,7 +71,14 @@ impl SessionState { pub(crate) fn token_info_and_rate_limits( &self, ) -> (Option, Option) { - (self.token_info(), self.latest_rate_limits.clone()) + let info = self.token_info().and_then(|info| { + if info.total_token_usage.is_zero() && info.last_token_usage.is_zero() { + None + } else { + Some(info) + } + }); + (info, self.latest_rate_limits.clone()) } pub(crate) fn set_token_usage_full(&mut self, context_window: i64) { diff --git a/codex-rs/core/tests/suite/compact.rs b/codex-rs/core/tests/suite/compact.rs index 4695e35ca4..197ea17707 100644 --- a/codex-rs/core/tests/suite/compact.rs +++ b/codex-rs/core/tests/suite/compact.rs @@ -817,7 +817,7 @@ async fn auto_compact_triggers_after_function_call_over_95_percent_usage() { let server = start_mock_server().await; - let context_window = 100; + let context_window = 20_000; let limit = context_window * 90 / 100; let over_limit_tokens = context_window * 95 / 100 + 1;