The voice agent failure atlas

Named failure modes in voice agents. Each one collects every public report of the same bug, links back to the builder who hit it, and carries a status re-checked daily.

23 failure modes39 linked reports14 stacksdata as of 2026-07-29
Check your own callhotato autopsy ./call.wavreads a recording you already have and prints each barge-in, talk-over, dead air and latency incident with a timestamp and an id

VFA-2026-0001

When the caller interrupts the agent mid-speech, the system's interrupt handling fails to cleanly tear down the in-progress turn, corrupting the conversation state.

acknowledged7 independent reportslast reported 2026-07-25seen on livekit, openai-realtime, pipecat, silero, twilio

VFA-2026-0009

The agent's speech synthesis silently produces no audio even though it logs the turn as spoken, and the safeguard meant to detect and recover from this never triggers, leaving the caller in permanent silence.

acknowledged3 independent reportslast reported 2026-07-28seen on cartesia, elevenlabs, home-assistant, pipecat, piper

VFA-2026-0002

End-of-turn detection fires at the wrong moment, so the agent either answers before the caller has finished or waits after they have.

acknowledged7 independent reportslast reported 2026-07-14seen on azure-speech, cartesia, deepgram, elevenlabs, livekit, pipecat, silero, twilio

VFA-2026-0003

The system fails to detect the caller's speech because voice-activity detection misjudges frame windowing and retained internal state, so the caller appears silent when they are talking.

open2 independent reportslast reported 2026-07-24seen on livekit

VFA-2026-0020

After the system re-prompts a silent caller, a turn-completion gate that only resets when the caller speaks treats the caller's reply as already answered and silently discards the agent's response.

open1 independent reportlast reported 2026-07-28seen on cartesia, pipecat

VFA-2026-0018

When the agent calls a tool while still speaking, the system marks buffered audio as fully played once generation finishes, cutting the agent's speech off mid-word and sometimes stalling the call.

open1 independent reportlast reported 2026-07-27seen on gemini-live, livekit

VFA-2026-0016

A delayed decision about whether an earlier overlap counted as an interruption gets wrongly applied to a later, unrelated moment, cutting the agent off for speech that was never actually judged an interruption.

open1 independent reportlast reported 2026-07-26seen on livekit

VFA-2026-0017

When the agent's turn is split into multiple speech segments, such as around a tool call, a later segment resets interruption tracking so the caller's still-ongoing interruption is silently ignored.

open1 independent reportlast reported 2026-07-26seen on livekit

VFA-2026-0004

The agent starts speaking while the caller still holds the floor, cutting the caller off mid-utterance.

open1 independent reportlast reported 2026-07-25seen on livekit, openai-realtime

VFA-2026-0015

A queue-ordering race in assembling the agent's own spoken output into conversation history drops the turn's final word from the stored record, even on a normal turn with no interruption, though the caller still hears the full sentence.

fixed1 independent reportlast reported 2026-07-24seen on cartesia, elevenlabs, pipecat

VFA-2026-0006

The caller finishes and the line goes silent for seconds before the agent responds, with no audible acknowledgement in between.

open1 independent reportlast reported 2026-07-24seen on pipecat

VFA-2026-0007

A speech-to-text result that finalizes just after the system has already ended and flushed the caller's turn is still processed, racing against the turn boundary and risking corrupted turn state.

open1 independent reportlast reported 2026-07-21seen on cartesia, deepgram, livekit

VFA-2025-0001

After switching to neural voice-activity detection, the system takes an unusually long time to respond when the caller gives a short one-word reply.

open2 independent reportslast reported 2026-04-27seen on livekit, ultravox

VFA-2026-0008

A tool call the agent decided on before being interrupted still executes afterward, so an action like hanging up can fire even though the caller is still on the line.

acknowledged1 independent reportlast reported 2026-07-10seen on pipecat

VFA-2026-0019

On outbound calls, the answering-machine-detection timer starts before the callee has actually answered, so ring or early media triggers a false timeout that the system wrongly treats as a voicemail greeting.

open1 independent reportlast reported 2026-06-22seen on livekit, twilio

VFA-2026-0012

The agent process is dispatched to an inbound call so many seconds after it arrives that the caller has already hung up before the agent joins.

open1 independent reportlast reported 2026-06-09seen on livekit, twilio

VFA-2026-0013

Voice-activity detection registers that the caller is speaking, but the speech-to-text stage fails to produce any transcript even though the same audio is clearly audible in a separate recording of the call.

fixed1 independent reportlast reported 2026-05-14seen on deepgram, elevenlabs, livekit

VFA-2026-0014

When the agent's response takes too long to generate, the telephony layer reads the resulting silence as call inactivity and tears down the call itself, then misreports that the caller hung up.

open1 independent reportlast reported 2026-05-11seen on elevenlabs, livekit, openai-agents, twilio

VFA-2026-0005

Voice-activity detection treats non-speech or a backchannel as a floor claim, so the agent yields to something that was not a turn.

open1 independent reportlast reported 2026-05-10seen on livekit

VFA-2026-0011

The agent's own synthesized speech bleeds into the audio input and voice-activity detection mistakes it for the caller starting to talk, triggering a false interruption.

open1 independent reportlast reported 2026-02-10seen on unattributed

VFA-2025-0002

After the agent completes one or more tool calls within a turn, its spoken response never gets synthesized, leaving the caller in silence.

open1 independent reportlast reported 2025-07-17seen on openai-agents, openai-realtime

VFA-2026-0010

The system stops listening for the voicemail beep tone as soon as it detects silence after the greeting, so a beep arriving just after is missed and the tone-triggered action never fires.

open1 independent reportlast reported 2017-05-30seen on twilio

VFA-2014-0001

The system's answering-machine-vs-human classification only comes back after the call has already been answered and engaged, so the agent cannot act on whether it reached a person or a machine in time.

open1 independent reportlast reported 2014-09-22seen on twilio

Hit a failure mode that is not here? The ones that belong are the ones inherent to running a spoken conversation, so they turn up on every stack: what the caller heard, on what, and how often.

Submit a failure mode you have hit

The form is a GitHub issue on the hotato repo, and it asks for exactly what an entry needs: the call, the stack, and whether you have seen it elsewhere.

Add what you have hit

The atlas gets better the way it got here: somebody who ran the call writes down what the caller heard. Two ways in, both public and both attributed to you.

  • Submit a failure mode the atlas does not carry yet: the call, the stack, and whether you have seen it on more than one.
  • Discuss an entry under the entry itself: what fixed it, what did not, and what the record is missing.

How an entry gets here

  1. Collected from the source's own API or a robots-permitted public page, with the response cached and hashed.
  2. Distilled into a failure mode only when it names something that recurs across stacks. A vendor outage, a billing question or a feature request is declined and queued for a person.
  3. Mapped to a hotato command only when that command's subcommand exists in the shipped CLI.
  4. Re-checked daily. The status moves when the re-check stores the evidence link, quote and date behind the move.

Attribution

Each report links to the original post and names the reporter's public handle as they posted it. What is stored is our analysis, the canonical link, and a quote of at most 30 words around the reported failure. If you posted something quoted here and want it gone, the removal path is one email, honored within 24 hours.

Read it as an agent

The same entries serve as machine surfaces, so a crawler or an agent can subscribe instead of scraping these pages: feed.json carries every entry with its reports and status history, feed.schema.json documents it, and feed.atom is the same set as Atom 1.0.

atlas 0.1.0 · data as of 2026-07-29T03:06:53Z