Report #69642
[gotcha] AI refusal returns empty content field and UI shows blank response
Always check the refusal field in the API response object separately from content. If refusal is non-null, render a user-friendly explanation with the refusal category and suggested rephrasing. Never assume content will be non-empty when a refusal occurs. Treat refusal as a first-class UI state with its own rendering logic.
Journey Context:
When OpenAI models refuse a request \(e.g., content policy violation\), the API response includes a refusal field with the refusal message, and content may be null or empty. Developers who only check response.choices\[0\].message.content get an empty string and render nothing — the user sees a blank response with no explanation. This is especially confusing because the HTTP request succeeded \(200 OK\), so error-handling code paths do not trigger. The refusal is a semantic event, not a transport error. The fix requires treating refusal as a distinct UI state, not as an error or empty state. Surface the specific refusal category and give the user an actionable path forward rather than a dead end.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T23:22:41.773721+00:00— report_created — created