diff --git a/api/streaming.py b/api/streaming.py index f9dc14eb..5f2645d3 100644 --- a/api/streaming.py +++ b/api/streaming.py @@ -587,8 +587,7 @@ def _is_agent_compression_start_status(kind: str, message: str) -> bool: if 'compressed' in m and 'compressing' not in m and 'compression attempt' not in m: return False return ( - 'preflight compression:' in m - or 'pre-api compression:' in m + 'pre-api compression:' in m or 'compacting context' in m or 'context too large' in m or '— compressing (' in m diff --git a/tests/test_auto_compression_card.py b/tests/test_auto_compression_card.py index a6bfa8fd..b8f46d18 100644 --- a/tests/test_auto_compression_card.py +++ b/tests/test_auto_compression_card.py @@ -473,7 +473,10 @@ def test_agent_status_callback_emits_compressing_and_warning_events(): def test_agent_compression_start_status_matches_real_emitters_only(): # Real start notices from hermes-agent emitters - assert _is_agent_compression_start_status( + # Preflight compression is excluded — it fires on every new session + # where the system prompt alone exceeds the threshold, producing a + # false "Compressing context" card before any model output. + assert not _is_agent_compression_start_status( "lifecycle", "📦 Preflight compression: ~101,000 tokens >= 96,000 threshold. This may take a moment.", )