Classification

Every provider response or exception is classified into a kind. retry_on filters which kinds trigger enforce-mode retry.

Agent hint

Use for retry_on list, billed-but-empty detection, classify_response_override hook.

In scope

  • Default retry_on kinds
  • Billed vs usable distinction
  • Custom classifier override

Out of scope

  • Enforce cost cap — see Policy
  • Fallback chain — see Fallbacks

* Retry only when mode is enforce and kind is listed in retry_on.

KindRetry in enforceNotes
successNoUsable response with content.
timeoutYes*Wall-clock or client timeout.
429Yes*Rate limited by provider.
5xxYes*Provider server error.
networkYes*Connection reset, DNS, etc.
emptyYes*Billed but empty content.
content_filterYes*Filtered finish_reason.
truncatedYes*Truncated output.
refusalYes*Model refusal.
tool_errorYes*Tool call failure.

Empty and content-filter responses are often still billed — observe mode records them as UNFULFILLED_SPEND for dashboard analytics.

See also