Authored missing-detail scenarios
42 scenarios in 8 artifact families; JSON records have 4–6 fields. Can the model keep one never-provided detail unknown? Paired prompt and field-type comparisons on the same scenario.
Source and method ↗Research companion · methods, evidence and open materials
What happens when a required field asks for a detail the user never supplied? Explore the evidence and three ways to intervene.
An everyday pictureThink of a paper form with a box marked required. Someone filling it in who does not know the answer will often write something plausible rather than leave the box empty, unless the form says “leave it blank if you don’t know”. Marking the box optional helps a little. Saying in words that a blank is fine helps much more. The paper finds the same in language models: a required slot reads as “fill me”, and models need to be told, not shown, that empty is acceptable.
New to the words? The glossary explains every term on this page in one or two sentences.
Trace a structured response through prompt assembly, a language model, decoding and two independent checks. Inspect the actual intervention branches: licensed contrastive decoding and a fitted mid-layer abstention probe.
How to use it. Choose a numbered step to see what changes and what to look at. Select a stage name to inspect it. Drag to orbit, use + and − to zoom, or play the story. The full text works without 3D.
Separate evidence from contract
Interfaces and control paths from the experimental workflow.
Interactive 3D loads when this map comes into view. Component inputs, outputs and connections are available below.
The connected map and all explanations work without WebGL.
STEP 1 OF 9
Inspect what the chat actually states, then vary the output contract. A nullable type and explicit permission to leave a field empty are distinct changes.
Look at the highlighted components.
Inspect the measured evidence ↓Horizontal boards separate setup, computation and evaluation. Exploded layers lifts these boards apart; it does not add neural layers. Solid blue paths carry data; amber paths loop back. Purple dashed paths are interventions; green dashed paths are measurements. Arrows show direction. Moving packets illustrate flow and do not encode measured speed, confidence or activation. Use the inspector to read every connection. Layer counts and dimensions are stated only where supported by the selected model.
The 3D booking path illustrates how a valid JSON request could reach a service. The model outputs are measured; the depicted booking is not a live transaction. The model tower illustrates layer order, not a universal architecture.
How to use itThis is the agent stack of the paper’s Figure 1, built as a street of buildings. On the left, the user’s chat. Next, the agent’s prompt and its output contract (the JSON form). In the middle, the language model as a tower of layers. On the right, the JSON it writes, the format check, and the Web service that acts on it. The ten steps follow the paper: the setting, the failure, its three questions (Q1 what causes it? Q2 how general is it? Q3 where in the model?), the three fixes and the conclusion. The caption above the picture says what each step shows and where to look, and the colours button explains the colours. Press play or click the numbers; drag to turn the scene, use + and − to zoom, and hover any part for its name and number.
A claim that one sentence works “across models” is only as strong as the range of models and tests behind it. Here is the size of the study, as the paper reports it.
Every condition runs on the same scenarios, so each comparison is paired: the same model, the same chat, one change.
Here is what was actually tested. The model roles and sample sizes belong to specific experiments; they are not interchangeable coverage claims.
32 models shown
42 scenarios in 8 artifact families; JSON records have 4–6 fields. Can the model keep one never-provided detail unknown? Paired prompt and field-type comparisons on the same scenario.
Source and method ↗Three translations of the scenarios and prompts, not three independent benchmark datasets. Tests whether the permission effect crosses scripts and languages.
Source and method ↗Part of the 120 real dialogues in total across MultiWOZ and SGD. Dialogues are cut before the user supplies a required booking value.
Source and method ↗Part of the same combined 120-dialogue pool. Service-API conversations are cut before a needed value appears.
Source and method ↗40 social threads and 20 support tickets with missing reply/transcript content, plus their 60 answerable controls. Tested on 11 models. Hard inferential fields: sentiment/themes of content the model never sees.
Source and method ↗100 missing-argument items and 100 items where a tool call is correct. Tested on 12 models. Tests whether the model asks for the missing argument instead of making a premature tool call.
Source and method ↗The paper’s 32-model headline counts the core subject panels. Auxiliary pilot/scaling or discarded frontier outputs are separately documented and should not be mixed into that total.
In plain wordsAn agent fills a JSON form for a Web service. The user never gave one of the details. Does the model leave that field empty, or make a value up? The paper asks what causes the made-up value, how widely the answer holds, and where inside the model the choice is made. Then it fixes it at three levels of access.
In plain wordsPick one of the 42 short chats and one model. You see the model’s real answer five times: once in prose and four times as a JSON record (required or nullable field, without or with the permission sentence). Red marks a made-up value, blue a field left empty. The grid below shows the same for every chat at once.
Each card is that model's real output under one condition, with the field the user never filled marked: red where the model wrote a value, blue where it left the field empty. Verdicts follow the paper's strict scoring rule.
Columns: prose, required, nullable, required + license, nullable + license. Click a square to open it.
In plain wordsThe same request, asked two ways. In prose, models usually say they don’t know the detail or leave a blank to fill in. In a JSON record with a required field, they usually write a value they were never given. Listing the same fields in prose already raises the rate: an empty, named slot pulls a value into it.
In plain wordsTwo things could stop the invention: changing the field’s type so that null is allowed (nullable), or adding one sentence that permits null (the license). We tried all four combinations. The type alone helps only partly. The sentence brings invention down whatever the type, and once it is there, the type no longer matters.
Rows: whether the prompt adds the license. Columns: whether the field is required or nullable. The key comparison is the diagonal: a required field with the license against a nullable field without it.
In plain wordsMaybe the sentence works only because it is a late, explicit instruction. A sham sentence of the same length and place, with no permission in it, does not help. The real one works at the start of the prompt too. So it is what the sentence says that matters.
In plain wordsThe same comparison, repeated where real agents work: in Spanish, Chinese and Bengali; on real conversations collected by others; through the function-calling feature of the APIs; and on two test sets built by other research groups. The sentence helps everywhere. Where the answer has to be inferred rather than stated, it helps but is not enough alone, and an explicit escape value does better.
In plain wordsWe run an open model twice: once where it leaves the field empty, once where it makes a value up. Then we copy the model’s internal state at one layer from the first run into the second. If that alone makes it write null, that layer carries the decision. Early layers never do; a band in the later middle of the model does. There, the permission sentence restores the empty field more than the nullable type does.
In plain wordsHow you can fix it depends on what you control. With only an API, add the sentence (fix 1). If you see the model’s scores for each next word, decode with the sentence’s effect pushed a little further (fix 2, LCD). If you have the weights, a small probe reads the model’s internal state, predicts that the detail was never given, and writes null in that field (fix 3, GCA), in one pass.
In plain wordsModels have seen far more complete records than records with empty fields, so a required slot reads as “fill me”. Showing them examples with empty fields barely changes this. Telling them, in one sentence, that empty is fine does. Models need to be told, not shown.
In plain wordsBelow is a real conversation between a person and a booking service. It stops just before the person gives one detail. On the right is what a real model sent to the service: with a required field it made the detail up; with one added sentence of permission it left the field empty. Further down, the same test with native tool calls.
Agents act on Web services by filling interface contracts: a JSON Schema, an OpenAPI operation, a function definition. These are real task-oriented dialogues from MultiWOZ and the Schema-Guided Dialogue dataset (built on service APIs), cut just before the user gives a detail the request needs. Each card shows a real model's request body under a required field, and under the same field with one sentence of permission. The endpoint is an illustration; the bodies are the models' outputs, unedited.
The same 42 scenarios through native function calling, with the call forced (pooled over models). Only the contract or the system prompt changes.
A result is more useful when we can see the alternative explanations it survived—and where it stops holding.
Cross required/nullable typing with the presence/absence of the permission sentence on the same scenarios and model. On the 18-model generalization panel: required JSON fabricates 63%, nullable 46%, required+license 10%, nullable+license 8%. The decisive diagonal contrast has pooled odds ratio 9.7 [6.3, 14.9].
Counts differ across conditions because API coverage differs. Compare paired scenarios within models; do not present all pooled cells as equal-sized.
Source and method ↗Put a same-length sham sentence in the license position, then move the actual license to the start. Across 11 models: plain 63%, late sham 74%, license at end 9%, license at start 8%. The sham improves no model significantly; the early license improves all 11.
These rates describe the 11-model salience panel, not the whole 32-model roster.
Source and method ↗Use four license paraphrases, sample at temperature 0.7, and count uncertainty-marked concrete values as abstentions in a sensitivity analysis. All four paraphrases lower fabrication in all 11 tested models (pooled 9–24% versus 63%). On five models, sampled required/nullable/licensed rates are 61/41/10%, similar in ordering to greedy 66/41/10%. Alternative scoring shifts no pooled rate by more than 1.5 points.
Prose uses cross-family judges; JSON uses a deterministic rule. The paper also checks both formats under the same prose judge.
Source and method ↗Repeat on two real-dialogue datasets, force native tool calls, then evaluate PhantomFill and When2Call with answerable controls. Real-dialogue fabrication falls 26%→4% (MultiWOZ) and 38%→3% (SGD). Native tool arguments fall 70%→19% with a system license. PhantomFill required fields fall 98%→57%; adding its escape schema reaches 34%. When2Call premature calls fall 48%→33%.
Residual errors remain substantial on inferential fields; permission alone does not solve every missing-information task.
Source and method ↗Put the missing detail back into the same transcript and measure correct retention, wrong values, invalid JSON and over-abstention separately. On 11 generalization models, correct retention is 80% with the license versus 77% plain. Wrongly writing null rises from about 0% to 3% (4% in the separate main-panel check).
The license can still discard a provided detail. Lower fabrication must be shown alongside retention and JSON validity.
Source and method ↗In plain wordsAll tables of the paper and its supplement, each with the paper’s caption. Type in the box to find one; click a row to open it.
In plain wordsAll figures, with the paper’s captions. Click one to enlarge it.
In plain wordsThese are the scripts that ran the experiments and the scripts that draw every table and figure of the paper. Pick a file to read it here.
In plain wordsEvery number in the paper comes from one of these files: the raw record of every model call, the scored results, and the third-party benchmark files with their licences.
In plain wordsDownload one archive and run a few commands on an ordinary computer to rebuild every table and figure. Re-running the experiments themselves needs API keys, and a graphics card (GPU) for the open models.
Download the archive, unzip it, and run these commands from its top folder.
pip install numpy scipy matplotlib pillow python-dotenv openai python3 scripts/make_tables_figures.py python3 scripts/make_schema_general.py python3 scripts/fig1_arch.py schema python3 scripts/fig_ladders.py schema
In plain wordsWhat our results do not show, in the paper’s own words.