20Q
πŸ† πŸ‘€

Twenty Questions as an Agentic Benchmark: Sequential Information Gathering with Belief Revision

Abstract. We benchmark 10 contemporary language models playing Twenty Questions as the guesser inside a real coding-agent harness (the opencode CLI), against a hardened LLM oracle and a 299-game stratified sample of a new 3,144-item public dataset. The game is a pure test of sequential information gathering: each question should maximize expected information, and β€” the part models find hardest β€” a noisy or ambiguous answer early in the tree must be treated as evidence, not ground truth. The best model, GPT-5.5, won 83% of its games (median 14.5 questions per win); the weakest, GLM-20Q (tuned), won 13%. Failures cluster into two modes we name premature branch pruning and assumption-encoding questions, both observed in the human-played games that seeded this project β€” including a loss on the secret "lasagna" that the benchmark's oracle rulings now explicitly address. Ratings derived from these results seed a public Elo ladder where the same models play live against humans. Total benchmark cost: $35.22.

1. Origin: losing to a lasagna

This project began as two casual games between a human and Claude in a coding session. Game one, the model won cleanly: fourteen questions from "is it a living thing?" to Shih Tzu, including a self-diagnosed wasted question (a popularity gamble on Pug when a free feature question was available). Game two the model lost, and the loss is the interesting artifact. The secret was lasagna. The first question β€” "is it a living thing, or something that was once alive?" β€” got the answer "no", which is how most people would answer for a dish. The model treated that answer as a hard constraint and deleted the entire food branch with probability one. Eighteen questions later it had subdivided an empty hypothesis space down to "is it a large book?"

The transcript (archived) shows a second, subtler failure at Q13. The model asked "is it used in the kitchen?" β€” one step from the answer β€” and when asked to clarify, restated it as "is its primary use the preparation, cooking, or serving of food?" The restatement quietly encoded the model's live hypothesis (that the secret was a tool) into the question itself, making the answer useless for distinguishing "is food" from "unrelated to kitchens". We call these two modes premature branch pruning β€” collapsing a posterior to zero on one ambiguous answer β€” and assumption-encoding questions β€” questions that measure the model's hypothesis rather than partition the space.

Twenty Questions is a good benchmark precisely because it isolates these skills. Optimal play is well understood in theory β€” each question should split the probability-weighted candidate space near 50/50, so ~20 bits reaches ~a million concepts β€” but the theory assumes noiseless answers. Real answerers say "no" to "was it ever alive?" about a lasagna. The skill being measured is not entropy math; it is calibrated sequential inference under noisy evidence, plus the agentic discipline to track constraints, avoid re-asking, and notice when the remaining space has emptied β€” which signals a wrong turn, not a nearly-won game.

2. Benchmark design

2.1 Harness

Each game is one fresh session of the opencode CLI β€” a real coding-agent harness, not a bare chat loop. The guesser model gets a briefing file and two executables on its PATH: ask "<question>" and final-guess "<answer>", which hit a local oracle server. The model must actually execute tools to play; one open-weights model initially lost a pilot game by typing ./final-guess "penguin" as chat text instead of running it. That is agentic-harness realism, and we kept it: the oracle now reminds the guesser to execute the command when a yes-answer names the secret, the same clarification a human answerer would offer, and protocol slips are scored as the losses they are.

2.2 Oracle

The answerer/referee is an LLM oracle (GPT-5.5, low reasoning effort, temperature-equivalent determinism) that knows the secret and answers strictly yes / no / sometimes / unknown. Its system prompt encodes rulings that pilot games proved necessary, each traceable to a observed failure:

Once-alive materials: "was it ever alive?" about things made from once-living material (lasagna, leather, wood) answers "sometimes" β€” a flat "no" unfairly hides the material, a flat "yes" is false of the assembled thing. The lasagna ambiguity is now a ruling, not a trap.
Instrument-vs-object: "is it used to prepare food?" is answered as a question about instruments; food itself answers "no". This is the assumption-encoding question given a consistent, fair reading.
Qualifiers bind: "is it a piece of clothing (fabric garment)?" about a leather boot answers "no" β€” an early oracle draft answered "yes" by keying on the base class and ignoring the qualifier, and single mislabels of this kind demonstrably poison a full game tree.
Specificity nudges: if a yes-answer names only the head noun of a multi-word secret ("is it a boot?" for cowboy boot), the oracle says so β€” "yes, generically; the secret is a more specific kind" β€” because it would otherwise be incoherent to accept the category question and reject the category as a final guess.

We iterated the oracle until an adversarial probe set passed; the iterations themselves (documented in the harness README and code comments) are a finding. A Twenty Questions benchmark is only as valid as its answerer, and a cheap answerer model fails in ways that systematically punish good guessers: in one discarded shakeout game, the oracle told Claude Opus a cowboy boot was "sometimes" found in the kitchen, and Opus spent its remaining questions on household materials before guessing candle. We discarded and re-ran every game affected by an oracle defect; affected runs never enter the results below.

2.3 Dataset and sampling

Secrets come from a new public dataset of 3,144 guessable concepts (CC-BY-4.0, download): concrete things an ordinary adult can hold in mind, across 14 categories, hand-audited after LLM-assisted generation (the audit removed hallucinated animals, split-concept entries, and 21 near-synonym duplicates; the pipeline regenerates byte-identically from committed inputs). Each benchmark run stratified-samples 30 secrets β€” 10 easy, 10 medium, 10 hard, fixed seed β€” and every model plays the identical list, so comparisons are paired. Lasagna is in the dataset. So is shih tzu.

2.4 Metrics

Win rate (guessed within 20 questions, adjudicated by alias match plus judge equivalence), median questions on wins, invalid-turn rate, guesser token cost, and wall time. Uncertainty is a 10,000-resample bootstrap over games. Elo seeds derive from the win-rate logit (all guessers face the identical task distribution, so rating gaps are the logit gaps, centered at 1250) and become each model's provisional rating on the live ladder, where real human games move them thereafter.

3. Results

0%25%50%75%100%GPT-5.5GPT-5.5: 24/29 won (83%), 95% CI 69–97%83%Claude Opus 4.8Claude Opus 4.8: 22/30 won (73%), 95% CI 57–87%73%GLM-5.2GLM-5.2: 21/30 won (70%), 95% CI 53–87%70%GPT-5.4 miniGPT-5.4 mini: 20/30 won (67%), 95% CI 50–83%67%Claude Sonnet 5Claude Sonnet 5: 20/30 won (67%), 95% CI 50–83%67%DeepSeek V4DeepSeek V4: 19/30 won (63%), 95% CI 47–80%63%Kimi K2.6Kimi K2.6: 18/30 won (60%), 95% CI 43–77%60%Claude Haiku 4.5Claude Haiku 4.5: 17/30 won (57%), 95% CI 40–73%57%GPT-OSS 120BGPT-OSS 120B: 9/30 won (30%), 95% CI 13–47%30%GLM-20Q (tuned)GLM-20Q (tuned): 4/30 won (13%), 95% CI 3–27%13%
Win rate over 299 games (29 per model, identical secrets). Whiskers: 95% bootstrap CI. Small n β€” the CIs are honest about it.
48121620GPT-5.5GPT-5.5: won in 8 questions Γ—2GPT-5.5: won in 9 questions Γ—1GPT-5.5: won in 10 questions Γ—1GPT-5.5: won in 11 questions Γ—4GPT-5.5: won in 13 questions Γ—3GPT-5.5: won in 14 questions Γ—1GPT-5.5: won in 15 questions Γ—5GPT-5.5: won in 16 questions Γ—3GPT-5.5: won in 18 questions Γ—3GPT-5.5: won in 20 questions Γ—1median 14.5Claude Opus 4.8Claude Opus 4.8: won in 8 questions Γ—1Claude Opus 4.8: won in 9 questions Γ—1Claude Opus 4.8: won in 10 questions Γ—2Claude Opus 4.8: won in 11 questions Γ—2Claude Opus 4.8: won in 12 questions Γ—3Claude Opus 4.8: won in 13 questions Γ—4Claude Opus 4.8: won in 14 questions Γ—3Claude Opus 4.8: won in 15 questions Γ—1Claude Opus 4.8: won in 16 questions Γ—1Claude Opus 4.8: won in 17 questions Γ—2Claude Opus 4.8: won in 18 questions Γ—1Claude Opus 4.8: won in 20 questions Γ—1median 13GLM-5.2GLM-5.2: won in 4 questions Γ—1GLM-5.2: won in 5 questions Γ—1GLM-5.2: won in 6 questions Γ—1GLM-5.2: won in 8 questions Γ—3GLM-5.2: won in 9 questions Γ—2GLM-5.2: won in 10 questions Γ—1GLM-5.2: won in 11 questions Γ—3GLM-5.2: won in 12 questions Γ—3GLM-5.2: won in 13 questions Γ—3GLM-5.2: won in 16 questions Γ—1GLM-5.2: won in 17 questions Γ—2median 11GPT-5.4 miniGPT-5.4 mini: won in 6 questions Γ—1GPT-5.4 mini: won in 7 questions Γ—3GPT-5.4 mini: won in 8 questions Γ—1GPT-5.4 mini: won in 9 questions Γ—3GPT-5.4 mini: won in 10 questions Γ—2GPT-5.4 mini: won in 11 questions Γ—1GPT-5.4 mini: won in 12 questions Γ—2GPT-5.4 mini: won in 13 questions Γ—1GPT-5.4 mini: won in 14 questions Γ—1GPT-5.4 mini: won in 15 questions Γ—1GPT-5.4 mini: won in 16 questions Γ—2GPT-5.4 mini: won in 17 questions Γ—1GPT-5.4 mini: won in 18 questions Γ—1median 10.5Claude Sonnet 5Claude Sonnet 5: won in 8 questions Γ—2Claude Sonnet 5: won in 9 questions Γ—1Claude Sonnet 5: won in 10 questions Γ—1Claude Sonnet 5: won in 12 questions Γ—1Claude Sonnet 5: won in 13 questions Γ—3Claude Sonnet 5: won in 14 questions Γ—4Claude Sonnet 5: won in 15 questions Γ—1Claude Sonnet 5: won in 16 questions Γ—2Claude Sonnet 5: won in 17 questions Γ—4Claude Sonnet 5: won in 19 questions Γ—1median 14DeepSeek V4DeepSeek V4: won in 6 questions Γ—1DeepSeek V4: won in 10 questions Γ—1DeepSeek V4: won in 11 questions Γ—2DeepSeek V4: won in 12 questions Γ—1DeepSeek V4: won in 13 questions Γ—3DeepSeek V4: won in 14 questions Γ—3DeepSeek V4: won in 15 questions Γ—2DeepSeek V4: won in 16 questions Γ—1DeepSeek V4: won in 17 questions Γ—1DeepSeek V4: won in 18 questions Γ—2DeepSeek V4: won in 19 questions Γ—1DeepSeek V4: won in 20 questions Γ—1median 14Kimi K2.6Kimi K2.6: won in 7 questions Γ—1Kimi K2.6: won in 10 questions Γ—2Kimi K2.6: won in 11 questions Γ—1Kimi K2.6: won in 13 questions Γ—3Kimi K2.6: won in 15 questions Γ—2Kimi K2.6: won in 16 questions Γ—1Kimi K2.6: won in 17 questions Γ—4Kimi K2.6: won in 19 questions Γ—1Kimi K2.6: won in 20 questions Γ—3median 15.5Claude Haiku 4.5Claude Haiku 4.5: won in 7 questions Γ—4Claude Haiku 4.5: won in 8 questions Γ—3Claude Haiku 4.5: won in 9 questions Γ—2Claude Haiku 4.5: won in 10 questions Γ—1Claude Haiku 4.5: won in 11 questions Γ—1Claude Haiku 4.5: won in 12 questions Γ—1Claude Haiku 4.5: won in 14 questions Γ—1Claude Haiku 4.5: won in 15 questions Γ—1Claude Haiku 4.5: won in 19 questions Γ—3median 9GPT-OSS 120BGPT-OSS 120B: won in 10 questions Γ—1GPT-OSS 120B: won in 12 questions Γ—3GPT-OSS 120B: won in 15 questions Γ—2GPT-OSS 120B: won in 18 questions Γ—2GPT-OSS 120B: won in 20 questions Γ—1median 15GLM-20Q (tuned)GLM-20Q (tuned): won in 11 questions Γ—1GLM-20Q (tuned): won in 13 questions Γ—1GLM-20Q (tuned): won in 14 questions Γ—1GLM-20Q (tuned): won in 18 questions Γ—1median 13.5questions β†’  
Questions used on winning games (dot size = count at that question number; tick = median). Efficient winners sit left.
0%50%100%$0.05$0.15$0.25GPT-5.5: $0.258/game, 83% winGPT-5.5Claude Opus 4.8: $0.241/game, 73% winClaude Opus 4.8GLM-5.2: $0.103/game, 70% winGLM-5.2GPT-5.4 mini: $0.028/game, 67% winGPT-5.4 miniClaude Sonnet 5: $0.151/game, 67% winClaude Sonnet 5DeepSeek V4: $0.202/game, 63% winDeepSeek V4Kimi K2.6: $0.123/game, 60% winKimi K2.6Claude Haiku 4.5: $0.043/game, 57% winClaude Haiku 4.5GPT-OSS 120B: $0.034/game, 30% winGPT-OSS 120BGLM-20Q (tuned): $0.000/game, 13% winGLM-20Q (tuned)cost per game (USD, guesser tokens)
Cost per game (guesser tokens, provider list prices) against win rate.
ModelWonWin rate (95% CI)Med. QE Β· M Β· H$/gameWallElo seed
GPT-5.5 24/29 83% (69%–97%) 14.5 9/10 Β· 9/10 Β· 6/9 $0.258 94s 1444
Claude Opus 4.8 22/30 73% (57%–87%) 13 8/10 Β· 8/10 Β· 6/10 $0.241 80s 1359
GLM-5.2 21/30 70% (53%–87%) 11 7/10 Β· 8/10 Β· 6/10 $0.103 132s 1333
GPT-5.4 mini 20/30 67% (50%–83%) 10.5 9/10 Β· 5/10 Β· 6/10 $0.028 73s 1308
Claude Sonnet 5 20/30 67% (50%–83%) 14 7/10 Β· 8/10 Β· 5/10 $0.151 107s 1308
DeepSeek V4 19/30 63% (47%–80%) 14 7/10 Β· 6/10 Β· 6/10 $0.202 109s 1285
Kimi K2.6 18/30 60% (43%–77%) 15.5 8/10 Β· 7/10 Β· 3/10 $0.123 218s 1262
Claude Haiku 4.5 17/30 57% (40%–73%) 9 8/10 Β· 6/10 Β· 3/10 $0.043 54s 1240
GPT-OSS 120B 9/30 30% (13%–47%) 15 5/10 Β· 2/10 Β· 2/10 $0.034 62s 1059
GLM-20Q (tuned) 4/30 13% (3%–27%) 13.5 2/9 Β· 2/14 Β· 0/7 $0.000 27s 903

Elo seed = 1250-centered win-rate logit (Β§2.4). glm-20q β€” our Tinker SFT fine-tune (Β§6) β€” played the same secrets and oracle through the harness's API-loop variant rather than opencode; every other row is a real opencode session.

3.1 Findings

The task separates models. GPT-5.5 at 83% versus GLM-20Q (tuned) at 13% is a wide spread on an identical secret list, and the per-difficulty columns show where it opens up: nearly everyone clears the easy tier; the medium and hard tiers β€” where the candidate space stays large past question ten and one misread answer costs the game β€” do the separating.

Question efficiency and win rate travel together. Models that win tend to win in fewer questions (medians cluster near 14.5 for the leaders). We read this as one underlying competence β€” informative questioning β€” expressed in both columns: splits that carry close to a bit per question both finish faster and leave slack for recovering from a noisy answer.

Price and skill are not the same axis. GLM-20Q (tuned) at $0.000/game is the value outlier; the cost chart shows the frontier is not a straight line through the most expensive model. For a consumer product where each game is a few cents against a human opponent, the practical operating point is well below the flagship tier.

Belief revision remains the differentiator. Reading transcripts, the losses that matter are rarely bad opening trees β€” everyone asks "is it alive / man-made / bigger than a breadbox". They are mid-game rigidity: a "sometimes" treated as a "no", a category quietly deleted, and five questions spent subdividing the wrong subtree. The winners' transcripts show explicit re-examination ("given no on all materials, let me reconsider whether it's really household"), which is precisely what the lasagna game lacked.

4. Case studies

Case 0 β€” the lasagna loss (human answerer, pre-benchmark). Described in Β§1; the archived transcript is the benchmark's founding document. Its two failure modes now have oracle rulings (Β§2.2) and dataset representation (prepared foods are ~15% of the food category precisely so the once-alive ambiguity recurs).

Case 1 β€” the reproduction. In pilot, GPT-5.4-mini drew lasagna against a pre-hardening oracle that answered "yes" to "is it used to prepare food?" (instrument confusion). The model reproduced the origin-game failure almost line for line β€” kitchen tools, baking sheets, a final guess of baking sheet. After the instrument ruling, the rerun went edible β†’ meal β†’ baked β†’ pasta β†’ layered and won in eight. One oracle ruling was the difference between a caricature of the failure mode and a clean win; benchmark designers should treat their answerer as part of the experiment.

Case 2 β€” the protocol loss. An open-weights model correctly identified penguin, announced it, and never executed the guess command. In a chat benchmark this would be a win; in an agentic harness it is a loss, and we think the harness is right: knowing and acting are different capabilities, and products run on the second one.

5. The live system

The benchmark seeds a live product at 20q.readbox.app: play any benchmarked model in either role (it guesses your secret from the public whitelist, or you guess its draw), a Wordle-style shared Daily, and one Elo ladder where humans and models are rated by identical rules (the guesser is the rated seat; K=32 humans, K=16 models). Provisional benchmark seeds converge to human-calibrated ratings as games accumulate β€” the ladder is the benchmark's ongoing replication, in public, against opponents with no system prompt.

6. Fine-tuning arm (in progress)

Twenty Questions has a property our previous RL work on newsletter writing lacked: a verifiable, non-gameable reward β€” you either name the secret within twenty questions or you don't. We fine-tuned an open-weights guesser on Tinker: a LoRA (rank 32) on Qwen3.6-27B β€” the ladder slot is named glm-20q after the originally-intended GLM base, which Tinker does not host β€” trained by SFT on 312 validated teacher games from two sources: entropy-greedy programmatic play over the dataset's attribute structure (250 games, 100% win, 7.1 questions average β€” near the logβ‚‚ bound for the sub-bank), and natural-language games sampled from Claude Sonnet 5 (wins only). Validation NLL fell 0.645 β†’ 0.329 over three epochs, and the untuned base is essentially unplayable in this harness (unbounded mid-game reasoning, truncated moves), so the delta attributable to 312 games of supervision is large. An RL phase (reward = win βˆ’ 0.02Β·questions, oracle-verified) is scaffolded but deliberately not yet run. Tuned-model evaluation games run through the same oracle in an API-loop harness; its results appear on the ladder as they accumulate.

7. Limitations

n=29 games per model is CI-honest but small; the ladder exists to keep collecting. The oracle is itself an LLM and a participant's sibling (GPT-5.5 answers while GPT-5.5 also competes as a guesser) β€” we mitigated with determinism, rulings, and transcript audits, and every Q/A pair ships in the public game records for adversarial review. Guesser prompts were not tuned per model; a model-specific scaffold could move individual numbers. Costs use list prices at run time. And a 30-secret stratified sample cannot cover 3,144 concepts β€” the fixed seed makes the sample reproducible, not exhaustive. One game (GPT-5.5 on dishwasher tablet) was excluded after a 300-game contamination sweep: its first question named the secret verbatim, consistent with agent-session state reuse on a retried workspace rather than deduction; the evidence is preserved in the repo and no other game tripped the checker.

8. Conclusion

A children's car game turns out to be a compact, adversarially-checkable probe of the thing that separates agentic models in practice: not knowledge, but the discipline of asking questions whose answers matter, and changing your mind at the rate the evidence demands. The best current models mostly have it. The rest lose to lasagna.

Reproducibility: dataset (/dataset.json, CC-BY-4.0), harness + oracle rulings + per-game records (twentyq/ in the readbox repo), fixed sampling seed 20260721, bootstrap seed 20260721. Games, transcripts, and this page regenerate from committed artifacts.

Try the benchmark yourself β†’