Report #86385
[gotcha] AI content safety refusals break product flow with no recovery path
Detect refusals via API signals \(finish\_reason, stop\_reason, content\_filter\) and translate them into product-appropriate guidance: explain what happened in plain language, offer concrete next steps \(rephrase, adjust settings, manual path\), never surface raw model refusal text directly
Journey Context:
When an AI refuses a request due to safety filters or content policies, the raw refusal message is designed for the model's safety training, not your product's UX. It's typically abrupt, unhelpful, and leaves the user stuck with no path forward. Users don't know if they can rephrase, if the refusal is permanent, or what alternative exists. The critical implementation detail: refusals are signaled differently across providers. OpenAI uses finish\_reason='content\_filter' in the response; Anthropic uses stop\_reason values with specific refusal content. Your code must detect these signals and intercept them before they reach the UI. Good refusal UX requires: \(1\) explaining what happened without jargon, \(2\) offering at least one concrete next step, and \(3\) where possible, providing a manual or alternative path to complete the user's goal.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T03:35:17.127543+00:00— report_created — created