Overview
How might we signal when the AI hits a real wall so people trust the product long term instead of calibrating to confident misses?
When to use
- Agent or tool flows where a blocked call, empty search, or low confidence is a real miss, not a loading state.
- Products where downstream users or systems need to handle failures differently from successes.
- High-stakes domains where invented completion erodes trust faster than an honest stop.
- Any surface paired with recovery: clear signal first, then retry, fallback, or human handoff.
When to skip
- Transient loading moments better served by skeletons than failure chrome.
- Soft hedges on every answer when the system did succeed; reserve failure UI for real blocks.
- Internal-only tooling where structured logs matter more than end-user failure copy.
States
Design the failure lifecycle, not only an error toast at the edge of a normal answer.
- 01
Attempting
The agent selected an action or retrieval path. Outcome is still unknown.
- 02
Failed
A tool, search, or policy blocked the path. The miss is named, not smoothed over.
- 03
Explained
Cause is visible when known: policy rule, rate limit, empty results, or low confidence.
- 04
Bounded
What did NOT happen is explicit: no write, no send, no charge, no fabricated result.
- 05
Recoverable
Next steps are offered: retry, edit inputs, wait, escalate, or talk to a human.
- 06
Resolved
The user acted or accepted the stop. The thread records the honest outcome.
Key UX elements
The parts that must be present for an honest miss to build trust.
Signal
Name the failure plainly.
Use a distinct status and title ("Action blocked", "Could not complete") so the miss is unmistakable.
Reason
Say why when you know it.
Policy, rate limit, empty search: a concrete cause beats a generic "something went wrong."
Boundary
State what did NOT happen.
Explicit negatives ("Nothing was written", "No message was sent") prevent users from assuming silent success.
Next
Offer a recovery path.
Retry, edit inputs, request approval, or escalate. Never leave a dead end after a real failure.
Tone
Stay factual, not cheerful.
Skip hedging and invented completion. Honest copy calibrates trust better than upbeat prose over a miss.
Rules
Cheerful hallucination that invents sources or “completed” tool results.
Generic “Something went wrong” with no cause or next step.
Same visual style as a normal answer, so users miss the failure.
Retry that loops forever without escalating or changing strategy.
Evidence
| Product | Implementation |
|---|---|
| Perplexity | States when search coverage is weak and leans on sources rather than invented claims. |
| Claude | Can decline or state uncertainty instead of fabricating when evidence is missing. |
| Cursor Agent | Surfaces blocked tool calls and failed steps in the agent trace. |
| ChatGPT | Shows clear tool or browsing failures rather than pretending the action succeeded. |