Report #96280
[gotcha] AI content filter stops stream mid-response with no error, leaving truncated output displayed as complete
Always check the \`finish\_reason\` in the final streaming chunk. If \`finish\_reason\` is \`content\_filter\`, replace the partial output with a user-friendly message explaining the response was filtered. Implement a stream inactivity timeout as a fallback for cases where the stream dies silently. Never render a partial response as if it were complete.
Journey Context:
Content safety filters evaluate both the input prompt and the generated output. An AI can start generating a benign response that gradually veers into filtered territory. When this happens, the stream terminates with \`finish\_reason: "content\_filter"\` but many implementations only check for the \`\[DONE\]\` event, not the reason. The UI displays whatever tokens were generated before the filter fired—often a partial sentence, incomplete code block, or half-finished JSON that looks intentional. Users copy and use this truncated output, leading to bugs. This is especially insidious because the partial output is often misleadingly wrong \(e.g., a code snippet missing its error handling because that is where the filter triggered\).
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T20:11:31.061163+00:00— report_created — created