diff --git a/agent/context_breakdown.py b/agent/context_breakdown.py index f0007132dd..9f8c57163a 100644 --- a/agent/context_breakdown.py +++ b/agent/context_breakdown.py @@ -97,7 +97,7 @@ def context_display_source(compressor: Any) -> str: """ real = getattr(compressor, "last_real_prompt_tokens", None) shown = getattr(compressor, "last_prompt_tokens", 0) or 0 - return "local_estimate" if isinstance(real, (int, float)) and shown != real else "provider_usage" + return "local_estimate" if isinstance(real, (int, float)) and shown > 0 and shown != real else "provider_usage" def context_usage_fields(compressor: Any) -> Dict[str, Any]: diff --git a/tests/agent/test_context_display_provenance.py b/tests/agent/test_context_display_provenance.py index 3aeea146ec..13e24c3527 100644 --- a/tests/agent/test_context_display_provenance.py +++ b/tests/agent/test_context_display_provenance.py @@ -36,3 +36,8 @@ def test_preflight_seed_does_not_label_actual_usage_estimated(): comp.update_from_response({"prompt_tokens": 1234, "completion_tokens": 20}) assert _get_usage(agent).get("context_estimated") is False assert _get_usage(agent)["context_used"] == 1234 + comp.last_prompt_tokens = -1 + assert "context_used" not in _get_usage(agent) + from agent.context_breakdown import context_display_source + # A cleared live gauge must not re-label a persisted provider fallback. + assert context_display_source(comp) == "provider_usage"