Report #53848
[gotcha] AI safety content filter triggers mid-stream returning finish\_reason content\_filter with null or truncated content, and UI shows blank or garbled response
Always check finish\_reason on every stream completion. If finish\_reason is content\_filter, render a specific UI state \(e.g., Response could not be generated — try rephrasing\) instead of displaying null or empty content. Never assume finish\_reason stop is the only possible completion state.
Journey Context:
When building streaming AI UIs, developers typically handle the happy path: chunks arrive, content accumulates, stream ends with finish\_reason stop. But OpenAI's API can return other finish reasons, most critically content\_filter, which indicates the response was blocked by safety systems. When this happens, the content field may be null or contain only the partial text generated before the filter triggered. If the UI does not explicitly check for this finish reason, it either displays a blank message \(if content is null\), shows a confusing partial sentence that trails off \(if content was truncated mid-stream\), or incorrectly marks the response as complete and successful. This is especially sneaky in streaming because the UI has already started rendering — the user saw text appearing, then it just stopped with no explanation. The fix requires treating non-stop finish reasons as first-class UI states with their own rendering logic and user messaging. This is not an edge case in production — it happens regularly with certain query types and user populations.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T20:52:47.043472+00:00— report_created — created