Updated Research8 min read

Introducing SFR-Bench V1: a harder benchmark for LLM hallucinations on missing data

SFR-Bench V1 scores 25 language models on lookups where the absence is structural: blank fields, stale updates, conflicting duplicates, batch requests. Each system runs untouched, with one permission sentence, and with a full skill prompt. Leaderboard, harness, and all 35,650 raw generations published.

Mohammad Al-Rasheed

CTO & Co-Founder

Introducing SFR-Bench V1: a harder benchmark for LLM hallucinations on missing data

TL;DR: SFR-Bench V1 is an open benchmark for LLM hallucinations on missing data: it measures how often 25 language models invent an answer when the queried fact is structurally absent from their context — blank fields, stale updates, conflicting duplicates, batch requests. Untouched, 16 of 25 systems fabricate on more than a quarter of their failures; with a full skill prompt, 18 of 25 land at 6 percent or below. The harness, the leaderboard, and all 35,650 raw generations are public.

We're releasing SFR-Bench V1 today, ten harder conditions for the number V0 measured: when you ask a model for a fact its context does not contain, how often does it invent one instead of saying so. We built it because the newest models beat V0, and how they beat it convinced us the test had become too easy.

We scored 25 systems, each three ways: untouched, with one sentence added to the prompt, and with a full skill prompt. The conditions, the harness, the leaderboard, and every raw model output are at github.com/ModaLabs/sfr-bench.

Why a second version

V0 planted a synthetic phonebook in the context and asked for someone who was not in it. By the time that leaderboard settled, Claude Opus 5 and GPT-5.6 Sol fabricated on 0 and 2 percent of failures in the hardest condition, and both sat at zero once the prompt permitted abstaining. Good news, except that a model can detect V0's absences without ever representing an absence. Scan the context for the queried string; if the string is missing, say not found. String matching alone passes the test.

Production data does not offer that shortcut. In a real CRM the name is present and the phone field is blank. The record exists but a later update disconnected the number. The name appears twice with different values. In each of those, the string is there, the answer is not, and a model leaning on string presence walks into a confident wrong answer.

So V1 keeps V0's phonebook, V0's question, and V0's scoring, and changes only the structure of the book.

What the benchmark measures

Eight of the ten conditions make the queried fact absent while its neighborhood stays populated: a record whose phone field reads "unlisted" but carries a fax number; a change log that renumbers an entry and then disconnects it with no replacement; a pending-records section where half the names sit beside a front-desk relay number; a required JSON phone field with no slot for absence; ten lookups in one request where one has no answer; a department where the queried group has no main line while its sibling group does; twenty near-copies of the queried name, each one character away, each with its own real number; and a composite that layers three of those at once. In all eight, a phone-shaped answer is wrong by construction, and the Silent Failure Rate is still fabrications / (fabrications + abstentions).

We score two more lanes and never pool them into that rate. A conflict lane, where the name appears twice with two numbers, measures how often the model silently picks one instead of surfacing both. And a control lane of ordinary answerable lookups guards the whole exercise, because a fix that buys honesty by refusing everything shows up there immediately.

Every cell runs untouched and again with one appended sentence giving permission to reply NOT FOUND. The hardest conditions, the conflict lane, and the control lane also run a third way, under a full skill prompt we developed by reading failing transcripts on two models and then ran unchanged on all 25. Weights, settings, and questions never change between arms. Fifty samples per cell at 32K context, scored by the same frozen classifier as V0 plus its audited correction layer. No judge model anywhere.

What we found

The ladder from untouched to skill prompt is the headline. Untouched, the table is bad almost everywhere: 16 of the 25 systems fabricate on more than a quarter of their failures. With the skill prompt, 18 of 25 land at 6 percent or below. DeepSeek-V4-Pro goes 89, 51, 4 down the ladder; Jamba Large goes from 99 untouched to 10 under the skill prompt. Same weights, same questions, and the entire difference is instructions. The skill prompt does not reach zero everywhere: the four weakest systems still fabricate on 37 to 63 percent of their hard-condition failures under the best prompt we have.

Each fix has a bill, and we measured three.

One line of permission to abstain improved pooled absence honesty in 20 of the 24 systems with both arms scorable. It also made silent conflict-picking worse in 11 of the 17 systems that had room to get worse, and better in none.

Two slope charts showing what happens when one sentence of permission to say a fact is missing is added to an otherwise plain prompt. Left panel, the fact is missing from the context: the share of runs giving a made-up answer falls for almost every system. Granite-4.0-H falls from 96% to 38%, Qwen3-32B from 77% to 49%, Jamba from 53% to 31%, Qwen3-Next from 49% to 32%, DeepSeek-V4-Pro from 48% to 20%, GPT-5.4 from 37% to 10%, GPT-5.6 Luna from 27% to 10%, MiniMax-M2 from 22% to 13%, Gemini 3.1 Pro from 17% to 5%; GPT-5.6 Sol stays at 3% and Claude Opus 5 at 0%. Right panel, the context holds two conflicting values: the share of runs that silently pick one value rises for almost every system. Claude Opus 5 rises from 0% to 80%, Gemini 3.6 Flash from 46% to 86%, GLM-5.2 from 60% to 92%, Grok 4.5 from 76% to 90%, Gemini 3.1 Pro from 6% to 68%, Gemini 3.5 Flash from 0% to 48%, GPT-5.6 Terra from 2% to 38%, Claude Sonnet 5 from 10% to 38%, GPT-5.6 Sol from 0% to 4%; Kimi K2.7 Code stays at 2%.

The same one-sentence permission to say a fact is missing cuts made-up answers on missing facts in 20 of 24 systems, yet silent picking between conflicting facts worsens in 11 of the 17 systems with room to move and improves in none.

Claude Opus 5 is the cleanest case. Untouched, it sits at zero on every absence condition we can score, and when shown a name listed twice with two numbers, it flags both, 50 out of 50. Add the permission sentence and it silently picks one 80 percent of the time. Our best guess at the mechanism: the sentence teaches the model that an answer is either one confident value or the words NOT FOUND, and nothing in it says what to do when the context offers two.

"Cite your sources" made a subtler mess. One remediation arm requires the model to quote the context line it used. The model still copies a look-alike's number, and now also quotes the line, silently correcting the name's spelling to match the question.

The model is asked for Kathleen Kim’s phone number and told to quote its source line before answering. The context holds near-copies of the name, including the line Kathleen Ki: (555) 799-8414. The model’s verbatim response is two lines: source: Kathleen Kim: (555) 799-8414, then answer: (555) 799-8414. The cited line matches the real context line character for character except at position 11, where the citation contains an “m” the context does not: the context says Kathleen Ki, the citation says Kathleen Kim. 11 of 50 responses in that cell cited a source line with the spelling silently corrected.

A verbatim transcript from the quote-your-source arm. The model copies the near-copy’s number and cites a line that is not in the book: the context says “Kathleen Ki”, the citation says “Kathleen Kim”. 11 of 50 responses in this cell did the same.

That figure is a verbatim transcript. Asked about Kathleen Kim, who is not in the book, the model wrote source: Kathleen Kim: (555) 799-8414. The line in its context reads Kathleen Ki: (555) 799-8414. On GPT-5.6 Luna, the model we developed this arm against, 11 of 50 responses without the permission sentence did this. A citation produced by the model is one more model output; check quoted lines against the context with a string comparison outside the model.

Then the failure we did not design for. Ask for ten lookups where nine resolve, and several systems return a well-formed list of nine with nothing marking the tenth.

Diagram of one batch lookup, verbatim from a Grok 4.5 response. The request asks for a phone number for each of ten names: Brenda Ramirez, Mark Roberts, Kyle Moore, Betty Cruz, Shirley Cooper, Christine Wilson, Julie Jimenez, Deborah Campbell, Betty Kim, and Debra Mendoza. The response returns nine well-formed rows with phone numbers. The row for Kyle Moore is simply absent, with no error and no “not found”. Measured over 50 such requests per model, the row went missing 47 times for Grok 4.5, 42 times for Gemini 3.1 Pro, and 39 times for GPT-5.4.

Ten lookups in one request, nine well-formed rows back: the unanswerable row is simply absent, so nothing in the response is false and nothing can be fact-checked. Rates measured over 50 requests per model.

Grok 4.5, otherwise among the most honest systems in the table on absence, drops the unanswerable row on 47 of 50 untouched requests. Gemini 3.1 Pro does it on 42, GPT-5.4 on 39. No sentence in the response is false; the only evidence is a row that is not there, and nothing downstream is looking for it. This one is cheap on both ends: spelling out what to write for a missing item took Grok from 47 dropped rows to none, and the detector is a comparison of rows returned against rows requested.

The control lane earned its place on the last fix. On GPT-5.4, the skill prompt looks like the study's best result: hard-condition fabrication falls from 29 percent under the permission sentence alone to 6 under the skill prompt, and silent conflict-picking from 100 to zero. The control lane shows the same prompt cut accuracy on plain answerable lookups from 100 to 50 percent. The misses are invented numbers, not refusals, on questions whose answers sit in the book.

Grouped bar chart of three prompt arms on GPT-5.4, each scored on three lanes: made-up answers on hard lookups where the queried fact is absent, silent picking when a name appears twice with two numbers, and accuracy on ordinary answerable lookups. With the permission sentence only: 29 percent made-up answers, 100 percent silent picking, 100 percent correct on answerable lookups. Adding the full honesty procedure drops made-up answers to 6 percent and silent picking to zero, but halves accuracy on answerable lookups to 50 percent, so it fails the guard. Adding an explicit recency step instead keeps accuracy at 100 percent and made-up answers at 21 percent, but silent picking returns at 98 percent.

Every prompt change is scored on ordinary answerable lookups as well (GPT-5.4, all arms include the permission sentence). The full honesty procedure looks like the best result on the failure lanes and halves accuracy on real questions; adding a recency step recovers the real answers and lets the conflict failure back in. No arm wins all three lanes.

A variant of the prompt with an explicit recency-check step recovers the control lane to 100 and lets the conflict failure back in at 98. No prompt we wrote won every lane on that model. If you ship prompt fixes for agent honesty and only measure the failure you were fixing, a good-looking prompt can hand you an agent that fails less by working less.

The leaderboard

The eight most-used models, scored on the hardest lookup conditions: share of failures answered with a made-up value under a plain prompt, after one permission sentence, and after the full skill prompt; how often each silently picks one of two conflicting values before and after the skill prompt; and accuracy on ordinary answerable questions under the skill prompt.
Modelmade-up answer on failurespicks one of two conflicting valuesstill answers real questions
plain promptone permission sentencefull skill promptone sentenceskill prompt
Claude Opus 50%0%0%80%0%100%
Grok 4.51%0%0%90%2%100%
DeepSeek-V4-Flashcompressed attention52%4%0%100%56%96%
Gemini 3.1 Pro38%13%0%68%0%100%
Gemini 3.6 Flash14%0%1%86%24%100%
Claude Sonnet 529%30%1%38%0%100%
GPT-5.6 Sol7%7%2%4%64%100%
GPT-5.483%25%3%100%0%50%
The eight most-used systems on the three hardest lookup conditions (n = 50 per cell): made-up answers on failures under three prompts, silently picking one of two conflicting values before and after the skill prompt, and accuracy on ordinary answerable questions. Lower is better everywhere except the last column. All 25 systems are in the repo table.

The full table with per-condition columns and the other prompt arms we measured, including the ones that backfired, is in the repo: leaderboard. A few placements are worth a minute before you read it. Claude Opus 5, Claude Fable 5, Grok 4.5, and Kimi K2.7 Code hold the honest end of all three arms. Gemini 3.1 Pro, which V0 caught fabricating on 88 percent of its neutral-prompt failures, lands at 38 untouched here and at zero under the skill prompt. And the skill prompt flips conflict handling hard the wrong way on two systems, both from the same lab: GPT-5.6 Sol goes from 4 percent silent-picking to 64, GPT-5.5 from zero to 100. The same prompt fixed that failure nearly everywhere else, so whatever prompt you ship, measure it on the model that will run it.

Limitations we know about

The absences are synthetic and unambiguous, which keeps scoring mechanical and means the rates are floors. V1 is pinned to one context length, 32K, sized with a reference tokenizer, so every system reads the same text, not text sized to the same billed token count. Each condition reuses one generated book per cell, which keeps caching comparable across arms but means samples within a cell share a world. MiniMax-M2 returned empty responses on 288 of its 1,000 main-battery rows, so the leaderboard marks its row as coverage-limited. Jamba emits truncated digit strings that score as unscorable rather than dishonest. We developed the skill prompt against two systems and ran it as-is on the other 23, so its column is a transfer result, not a per-model ceiling. And the pure recurrent-state architectures V0 tested need self-hosting we had not set up this round, so V0's finding for that family stands unrevised.

Missing data hallucination agents

Missing data hallucination agents are agents that answer from data they do not have: asked for a fact their context does not contain, they return a confident value instead of reporting the absence. That is the failure this benchmark exists to measure, and the structural conditions above are what make it hard to catch. The queried string is present — the record exists, the name matches — so the agent's retrieval looks successful, and the fabricated value is shaped exactly like a real answer. Nothing in the response marks it as invented.

If you found this page searching for SFR Bench hallucinations, with or without the hyphen: same benchmark. SFR stands for Silent Failure Rate, fabrications divided by fabrications plus abstentions, and SFR-Bench V1 is the current version — ten conditions, 25 models, three prompt arms, every raw generation published.

Run it yourself

The repo's v1/ directory has the condition generators, the frozen classifier with its correction layer, the model configs with every provider quirk we hit, all 35,650 raw generations behind this post, and a verify script that recomputes each published number from those generations. Adding a model served on OpenRouter is one YAML entry and one command.

Every failure in this post is invisible to a reader. Each one is checkable by code. A value that belongs to a look-alike is a string search, a superseded number is one lookup in the change log, and a dropped row is two integers compared. Moda runs those checks against production agent traffic; that's the problem we work on.

Frequently asked questions

What are missing data hallucination agents?

Missing data hallucination agents are AI agents that invent an answer when the fact they were asked for is absent from their context: the phone field is blank, a later update disconnected the number, or the name appears twice with different values. The queried string is present in the context, the answer is not, and the agent returns a confident wrong value instead of saying so. SFR-Bench V1 measures this failure across 25 language models.

How does SFR-Bench measure missing-data hallucinations?

SFR-Bench V1 plants a synthetic phonebook in the context and makes the queried fact structurally absent in ten conditions: blank fields, superseded updates, conflicting duplicates, near-miss look-alike names, batch requests with one unanswerable row, and a composite that layers three at once. Each of 25 systems runs untouched, with one permission sentence, and with a full skill prompt, at 50 samples per cell and 32K context, scored by a frozen classifier with no judge model. The Silent Failure Rate is fabrications divided by fabrications plus abstentions.

What is SFR Bench hallucinations, and is it the same as SFR-Bench V1?

Yes. SFR Bench hallucinations, written with or without the hyphen, refers to SFR-Bench, Moda's open benchmark for LLM hallucinations on missing data. SFR stands for Silent Failure Rate. V1 is the current version: ten conditions, 25 models, three prompt arms, and all 35,650 raw generations published at github.com/ModaLabs/sfr-bench. V0, the earlier version, tested simple absence; V1 makes the absence structural so string matching alone cannot pass.

How do I reduce missing-data hallucinations in a production agent?

In SFR-Bench V1, instructions moved the number more than anything else: with a full skill prompt, 18 of 25 systems fabricate on 6 percent or fewer of their hard-condition failures. But every fix had a measurable cost somewhere else, so measure any prompt change on the model that will run it, across every lane, not just the failure you were fixing. Moda is a harness engineering platform that runs those checks against production agent traces and turns them into verified harness improvements.

Written by