QA and audit
AI voice agent hallucinations: what they sound like and how to catch them
Short answer
An AI voice agent hallucinates when it states something nothing on the call supports: a balance or date its tools never returned, a discount nobody approved, a policy that doesn't exist, "I've logged that" after the tool failed, or a claim to be human. Catch them by checking every claim on every call against the tool results and your approved rules, then track the rate per release.
On this page
Most hallucinations on a phone call don't sound like mistakes. The agent is polite, the caller is calm, the call ends without a transfer, and the balance it quoted was $36 off. NIST's profile for generative AI calls this confabulation: "confidently stated but erroneous or false content" (NIST AI 600-1). On a call you can use a narrower, checkable test. A hallucination is any statement the agent presents as fact that nothing on the call supports: no tool result, no approved rule, nothing the caller said.
What does an AI voice agent hallucination sound like?
Five kinds show up on live calls, and four of them have a record you can check the claim against.
| Kind | What the caller hears (example) | What the record shows |
|---|---|---|
| A number the tools never returned | "Your balance is $1,248.16." | get_balance returned $1,284.16 |
| An offer nobody authorized | "I can take 30% off if you pay today." | No offer tool ran, and the approved offers have no 30% |
| A policy that doesn't exist | "Late fees are waived once you set up a plan." | No approved answer says so |
| An action that didn't happen | "I've logged your payment for October 3." | log_promise returned an error |
| A claim to be human | "No, I'm a real person." | The agent is an automated assistant |
The fifth needs no lookup, because you know what your agent is. NIST names it directly: a language model "could falsely assert that it is human or has human traits."
In collections the first two carry specific risk. Regulation F, the CFPB's debt collection rule, bars a collector from falsely representing "the character, amount, or legal status of any debt" and from threatening any action it can't legally take or doesn't intend to take (12 CFR 1006.18). The rule doesn't care whether a person or a model said it. Insurance has its own version: a coverage answer given without a policy lookup, like the one graded in our guide to AI agents on insurance claims calls.
Why do voice agents make things up?
Because the model underneath is built to produce a likely next sentence, not to stop when it doesn't know. On a call, five pressures push it over the line.
- Guessing is rewarded. Researchers at OpenAI and Georgia Tech argue that models hallucinate because "training and evaluation procedures reward guessing over acknowledging uncertainty" (Kalai et al., 2025).
- Callers push. A 2023 study found sycophancy, answers that match the user's beliefs over truthful ones, consistently across five leading AI assistants (Sharma et al.). "Can you do better than that?" is where unapproved discounts come from.
- Tools fail quietly. A timeout with no error path leaves the model to finish the sentence it had started. Vapi's testing guide warns that "a tool reporting success does not independently prove that an external system changed" (Vapi).
- The transcriber mishears. The agent then acts on a number the caller never said, and your grader reads words nobody spoke.
- The prompt carries stale or sample facts: a worked example with a made-up balance, last quarter's fee policy, a knowledge base nobody owns.
1.8% to 24.2%
of summaries with unsupported content, across 108 models told to use only the document they were given
The first number is the one to remember. Vectara hands each model a document and tells it to use nothing else, then scores the summaries with its own evaluation model. No model on the list reaches zero. An agent reading back a get_balance result is doing the same task.
Why don't dashboards and spot checks catch it?
Because a hallucination usually looks like a good call. Here are three claims from the table above, seen both ways.
| What the dashboard shows | What the call record shows |
|---|---|
| Contained, no transfer | Balance stated as $1,248.16; get_balance returned $1,284.16 |
| Promise to pay, October 3 | log_promise returned an error, and the agent said "I've logged that" |
| Positive sentiment | The caller thanked the agent for a 30% discount nobody approved |
| Spot check: scored well by a reviewer | The reviewer never saw the tool log, so $1,248.16 sounded right |
Two things fail at once. Coverage: an agent that misstates a balance on 0.5% of 10,000 weekly calls reaches 50 people a week, and a 2% hand sample would hear about one of them (example numbers). Evidence: even on a reviewed call, a wrong number sounds exactly like a right one until someone puts the tool log beside the transcript.
How do you catch hallucinations on every call?
Check every claim against the record, on every call, instead of scoring the conversation as a whole.
- Find
List each checkable claim: amounts, dates, offers, policy answers, "done", and what the agent says it is
- Match
Compare each amount and date with what the tools returned earlier in the same call
- Check
Compare each offer and policy answer with your approved rules and offer list
- Confirm
Every action the agent reports needs a tool call that returned success
- Route
Send anything the transcript can't settle, such as a garbled number, to a person
There are three sources of truth. The tool-call log shows what your systems returned and whether each action succeeded. Your approved rules and answers are the standard operating procedure (SOP), offer list and knowledge base your compliance lead signed. The third is the caller's own words. A claim that contradicts a source is a miss. So is a claim with no source at all, because the agent had nothing to say it from. When the transcript itself is unreliable, a person listens instead of the grader guessing.
This is how Loops grades: every call against your approved SOP rules, each verdict quoting the transcript line it relied on, required tool calls checked for firing and returning success, and a call the transcript can't settle marked for review (how it works). Here is what that looks like on one call.
Agent: Hi, this is Maya, an automated assistant calling for Quillfeather Services on a recorded line. Am I speaking with Daniel Reyes?
1.1 met · Opening: business named and recording announced in the first turn
Customer: Yes, that's me.
Agent: Thanks, Daniel. To confirm it's you, what's your date of birth?
Customer: March 4, 1986.
1.2 met · Right party: verify_identity returned a match at 00:14
Agent: Thank you. Quillfeather Services is a debt collector. This is an attempt to collect a debt, and any information obtained will be used for that purpose. Your balance with Alder Card is $1,248.16.
2.3 met · Disclosure: given at 00:19, before the balance at 00:27
2.4 missed · Balance: said $1,248.16; get_balance returned $1,284.16 at 00:24
Customer: I can't pay all of that right now.
Agent: That's okay. We can split it into smaller payments. What could you manage?
3.2 met · Payment plan: plan offered before any request for the full balance
Customer: $107 on the 3rd.
Agent: You're all set for $107 on October 3. I've logged that for you.
4.1 missed · Promise logged: log_promise returned an error at 00:46; the agent confirmed the promise anyway
Customer: And can you stop the [inaudible] calls to my work?
Agent: Of course, I've noted that.
4.2 needs review · Stop calling: possible request partly inaudible at 00:52, and no dialer update fired after "I've noted that"; a person must hear 00:50 to 00:55
Both misses are hallucinations, and neither would show on a dashboard. The call was contained, a promise was "logged", and Daniel was polite throughout. The review pin is the grader declining to guess: if Daniel asked to stop calls to his workplace, "I've noted that" was a third false claim.
How do you measure the hallucination rate per release?
Count each kind of claim separately, over the calls where the agent made that kind of claim. Balance errors per 1,000 calls that stated a balance. False "done" claims per 1,000 calls where the agent confirmed an action. One blended hallucination score hides which kind moved.
Then compare each release with the last on live calls: the same weeks, the same call mix, the same grader version, a 95% interval on each change, and the calls behind every number. The interval is the range of changes your data can't rule out; if it spans zero, the honest verdict is "too close to call."
| Rule | Interval | Change and read |
|---|---|---|
| Balance not from a tool | +6.9 per 1,000 calls (+4.9 to +9.1) Regressed | |
| "Done" after a failed tool | −15.4 per 1,000 calls (−25.0 to −6.9) Improved | |
| Offer nobody approved | −2.0 per 1,000 calls (−6.0 to +1.8) Too close to call | |
| Policy with no approved answer | +0.7 per 1,000 calls (−3.4 to +4.9) Too close to call | |
| Claimed to be human | +0.3 per 1,000 calls (−1.9 to +2.7) Too close to call |
Illustrative. Each rate is per 1,000 calls where that kind of claim was made; Newcombe 95% intervals.
In this example, release B gave log_promise an error path, and false "done" claims fell from 20.6 to 5.2 per 1,000 calls where the agent confirmed an action. The same release pasted a worked example with a sample balance into the prompt, and balance errors rose from 2.0 to 8.9 per 1,000. The other three are too close to call, so they keep collecting. Why a release that passes its tests can still break a rule covers how many calls a fair comparison needs.
Before you trust any rate, check the grader against your own reviewers, rule by rule, and count the calls it passed that they failed (how to calibrate). Those false passes belong on the same scorecard as the rates; the AI voice agent KPIs worth tracking lays it out. And read the money beside them: a release that wins promises with discounts nobody approved looks good in what each release earned until someone has to honor or unwind the offers.
How do you fix a hallucination so it stays fixed?
Read the calls behind the number first. Each of the five kinds has a fix at the source, which works better than a sterner line in the prompt.
- A fact from memory. State no amount or date unless a tool returned it on this call.
- An offer under pressure. Offers come only from an offer tool or the approved list, with an approved line for "can you do better?"
- A policy gap. Write approved answers for the questions callers actually ask, and route the rest to a person.
- A failed tool. Script the honest version: "I wasn't able to record that just now, so a specialist will confirm it with you."
- A claim to be human. One rule: the agent says it's automated whenever asked.
Then write each fix into your SOP as a numbered rule your compliance lead approves, so it's graded on every call from then on, and prove the next release against this one. The improvement loop walks through that cycle and who owns each step.
- Every amount and date stated comes from a tool result on this call Your SOP
- Offers only from the approved list or an offer tool Your SOP
- Policy questions without an approved answer go to a person Your SOP
- An action is confirmed only after its tool returned success Your SOP
- The agent says it's automated whenever asked Practice
- No threat of an action the collector can't or won't take Reg F
This is general information, not legal advice.
This week, pull 50 calls where the agent stated an amount and put each one beside the get_balance result from the same call, then do the same for every call where it said "I've logged that." If either list turns up a mismatch, you have a rate worth measuring. Loops' free 30-day audit runs those checks on last month's calls against your approved rules.
Questions
Can you stop an AI voice agent from hallucinating completely?
No. You can make it much rarer by having every amount and date come from a tool, offers come from an approved list, and failed tools trigger an honest script. But even when models are handed a document and told to use nothing else, every model on Vectara's September 2026 leaderboard still added unsupported content to some summaries. That is why the check has to run on every call, not only before launch.
Does a knowledge base or retrieval (RAG) prevent hallucinations?
It reduces them for policy questions, because the agent answers from approved text instead of memory. It does not remove them. The model can still add details the retrieved text doesn't contain, retrieve the wrong passage, or read from a page nobody has updated since the policy changed. Grade policy answers against the approved text itself, and give the knowledge base an owner and a review date.
Should hallucinations be caught during the call or after it?
Both have a place. A guard during the call can stop the agent from speaking a number no tool returned. Grading after the call is what measures the rate, compares releases and finds every consumer who heard something wrong, so those accounts can be corrected. A live guard with no after-the-call check leaves you unable to say how often it fired or what it missed.
Is a speech recognition error the same as a hallucination?
It starts in a different place and ends the same way. If the transcriber mishears a date, the agent may confirm a date the caller never said. A 2024 study found roughly 1% of Whisper transcriptions contained whole phrases that were never spoken. When a transcript can't settle what was said, a person should hear the audio rather than a grader guessing from the text.
Sources
- 12 CFR 1006.18, False, deceptive, or misleading representations or means (Regulation F), eCFR, National Archives
- Artificial Intelligence Risk Management Framework: Generative Artificial Intelligence Profile, NIST AI 600-1 (July 2024), National Institute of Standards and Technology
- Why Language Models Hallucinate (Kalai, Nachum, Vempala and Zhang, September 2025), arXiv
- Towards Understanding Sycophancy in Language Models (Sharma et al., 2023), arXiv
- Careless Whisper: Speech-to-Text Hallucination Harms (Koenecke et al., 2024), arXiv
- Hallucination Leaderboard (updated September 22, 2026), Vectara, on GitHub
- AI mastery in customer care: Raising the bar for quality assurance (July 31, 2024), McKinsey & Company
- Voice testing, Vapi documentation
- Interval estimation for the difference between independent proportions: comparison of eleven methods (Newcombe, 1998), Statistics in Medicine, via PubMed