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.
hotato 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 idVFA-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.
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.
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.
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.
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.
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.
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.
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.
VFA-2026-0004
The agent starts speaking while the caller still holds the floor, cutting the caller off mid-utterance.
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.
VFA-2026-0006
The caller finishes and the line goes silent for seconds before the agent responds, with no audible acknowledgement in between.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 hitThe 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
- Collected from the source's own API or a robots-permitted public page, with the response cached and hashed.
- 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.
- Mapped to a hotato command only when that command's subcommand exists in the shipped CLI.
- 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