Handle errors and failures gracefully

Communicate AI errors clearly and offer safe recovery paths.

AI systems will fail sometimes—timeouts, wrong answers, service unavailability, or unexpected inputs. How we communicate and handle those failures shapes user trust and their ability to recover.

When I design AI-powered experiences, I handle errors and failures gracefully by making failures explicit, offering safe recovery paths, and avoiding drama or blame.

Handling errors gracefully means:

  • Explicit and understandable: Users know something went wrong and what it means
  • Recovery-focused: Design for getting users back on track, not just notifying them
  • Proportional: Match the tone and prominence of the error to its severity
  • Honest and bounded: Be clear about what failed and what the system can and can't do

Errors that are hidden, vague, or leave users stuck damage trust. So do over-the-top error messages that treat minor issues like catastrophes.

By handling errors and failures gracefully, I help users:

  • understand what went wrong and what they can do next,
  • recover without losing work or confidence,
  • and maintain appropriate trust in the system.

Design for Recovery, Not Just Notification

Every error state should offer a path to recover—retry, alternative action, or safe fallback—not just inform the user that something failed.

off on
Provide at least one clear recovery path for every error (retry, alternative, or safe fallback). Show only an error message with no way to recover or continue. Match recovery options to the type of failure (e.g. retry for timeouts, different input for invalid data). Make recovery actions hard to find or require multiple steps when one would suffice.

Fail Proportionally and Without Drama

Match the tone and prominence of error messaging to the severity of the failure. Avoid overdramatic or alarming language for minor issues.

off on
Match error prominence and tone to severity (minor = subtle, serious = prominent). Use alarming or overdramatic language for minor or recoverable failures. Use calm, factual language that explains the issue without exaggerating. Treat every failure as critical; reserve strong messaging for truly serious issues.

Make Failures Explicit and Understandable

When the AI fails or produces wrong output, make it clear that something went wrong and explain what happened in user-facing terms.

off on
State clearly when the AI failed or when output may be wrong. Hide failures behind vague messages or technical error codes only. Explain what went wrong in user-facing language and what it means for the user. Let wrong or failed outputs appear as if they succeeded.

Preserve Trust Through Honesty and Boundaries

Be honest about what failed and what the system can and can't do. Don't blame the user or hide limitations; clear boundaries preserve trust.

off on
Be honest about what failed and whether the cause is system, service, or input-related. Blame the user for system or service failures with vague messages like "check your input". State boundaries clearly when the system can't do something; offer alternatives when possible. Hide limitations or overclaim capability; that erodes trust when failures or refusals occur.

Why this principle matters

How systems fail is as important as how they succeed. Poor error handling creates confusion, lost work, and eroded trust.

When errors are handled gracefully:

  • users understand what happened and what to do next,
  • they can recover without feeling stuck or blamed,
  • and they maintain appropriate trust in the system.

Without graceful error handling, users may:

  • not realize the AI failed or produced wrong output,
  • lose work or time because recovery paths are unclear,
  • or lose trust when errors are hidden, vague, or overdramatic.