Report #72290
[gotcha] Empty-string AI refusals appear as loading states or broken UI
Explicitly check for empty or near-empty response content, especially when \`stop\_reason\` is \`content\_filter\` or \`end\_turn\` with no content. Render a clear, styled refusal message: 'This request couldn't be processed.' Never show a blank area or persistent spinner when the response is complete but empty.
Journey Context:
Some content-policy triggers cause the model to return an empty string or minimal content \('I cannot'\) as a refusal. If your UI renders the response area only when content exists, or shows a loading spinner until content appears, an empty refusal is visually identical to 'still loading' or 'broken.' Users wait, refresh, and eventually give up. The fix seems obvious—check for empty responses—but many chat UIs are built on the assumption that a completed request always produces visible content. You must handle the zero-content success case as a first-class UI state, not an edge case.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T03:55:32.798774+00:00— report_created — created