Two API settings took GPT-5.6 Sol from 13.3% to 38.3% on ARC-AGI-3
- OpenAI walked through a failed benchmark run of its own model: same GPT-5.6 Sol, same tasks, only two API settings flipped on—and the ARC-AGI-3 public-set score jumped from 13.3% to 38.3%.
- The bug was in the harness that runs the model. After every step, the model's private reasoning was thrown away, so the next step had to re-learn the game from scratch.
- Second problem: when context filled up, the oldest messages were deleted—including past keypresses. The model effectively had no past.
- The fix is two switches: pass the previous response ID through the Responses API so reasoning sticks around, and turn on compaction so full context compresses into a summary at the limit instead of truncating the front.
- The cost win is bigger than the score win: at max reasoning, output tokens per game fell from 2.9M to 0.49M. The new harness at "high" matched the old harness at "xhigh" on score, with about 12× fewer tokens.
- ARC's own May analysis pointed elsewhere—three failure modes around never building a world model. And only the official-harness scores of 13.33% (public set) and 7.78% (semi-private set) are ARC Prize–verified.
Same model, same tasks, nearly 3× the score
OpenAI published a concrete postmortem: same GPT-5.6 Sol, same benchmark tasks, only two API settings turned on—score from 13.3% to 38.3%, and output tokens per game down to about one-sixth. If you run any multi-step job over the API, those two switches decide both score and bill.
When a model scores low, the usual first guess is "the model is weak." This time the answer is different: the harness was wiping the model's memory. They tested on ARC-AGI-3—puzzle games with no manual—and ran all five reasoning-effort levels.
Calling this a failure only makes sense because Sol looks nothing like one elsewhere. It resolved the cycle double cover conjecture in graph theory open for decades; cleared Pokémon FireRed from pixels alone with no game API; beat Slay the Spire in Codex; and finished the early levels of Baba Is You. In a log Wharton's Ethan Mollick shared, it won the Slay the Spire 2 daily random challenge in Codex—a game released after Sol's knowledge cutoff.
That same model scored a little over 10% on 25 short 2D puzzle games. The side-by-side video below is the same game (id cd82) and the same Sol: official harness on the left, OpenAI's Responses API rewrite on the right. The game has six levels; no frontier model on the leaderboard clears level one. With the new harness, Sol clears all six.
No manual—and the score is not "how many puzzles solved"
ARC-AGI-3 is an ARC Prize benchmark: 135 hand-built mini-game environments, with 25 demos public so anyone can play at arcprize.org. One rule runs through everything: no manual. No object list, no rule text, no goal description, no intermediate reward scores.
Each step, the model gets only this: a 64×64 grid of cells colored 0–15, plus seven buttons it can press.
- RESET
- restart run
- ACTION1
- up
- ACTION2
- down
- ACTION3
- left
- ACTION4
- right
- ACTION5
- confirm / delete
- ACTION6
- click a cell (x, y each 0–63)
The only way through: act, guess the rules, revise when wrong. Press a key, watch what changes, infer what that key does, then test the next step.
That percentage is not "puzzles solved"
The ARC-AGI-3 score is RHAE (Relative Human Action Efficiency). It does not count how many tasks you clear. It compares steps: model steps to clear each level versus steps a first-time human needed on that same level—and the penalty is squared.
Three more scoring details matter if you want to read the numbers: each level's score is weighted by level index—later levels count more; early tutorial levels barely matter; a run's ceiling is capped by how far you got, so missing the last level blocks 100% no matter how efficient you were; the human baseline is a high-median first-timer across players on that level, so an ordinary person will not hit 100% either. OpenAI's estimated human average is 48%.
Actions that do not change the game screen do not count as steps—tool calls, thinking, retries, none of them.
So 13.3% → 38.3% measures only "how many fewer wrong turns," not "how much less thinking." Burning four-fifths fewer output tokens is a separate ledger. This run won on both.
The model isn't dumb—its memory is wiped every step
If the score only punishes detours, where did Sol's detours come from? OpenAI reviewed several game logs. First impression matched ARC's: the model looked slow and unfocused, deliberating at length on each step and spinning in place. Digging further showed the model was fine—the harness was not. Two issues.
First: after every step, the private reasoning the model wrote for itself was discarded wholesale. On the next step, Sol had to re-learn the game from scratch. It could see which keys it had pressed and short notes, but not why it pressed them, what it had already figured out, or what it planned next—all gone.
Second: the harness used rolling truncation. Once context crossed a limit, the oldest messages were dropped. So past ideas could not stick around—and even the record of past keypresses was slowly pushed out of the window.
Imagine playing a puzzle game where every keypress wipes your last thought, leaving only a list: "you pressed right, right, up." The list never says what you had already figured out. You can see the path you took, not why. Every step you re-derive the game—and often re-try routes you already ruled out.
Both issues show up in ARC's open-source harness
ARC open-sourced the evaluation harness on GitHub (ARC-AGI-3-Agents; latest commit May 28, 2026). We pulled it and checked. Both problems are in the code.
First: every OpenAI call in the repo goes through chat.completions.create—20 call sites total. Zero responses.create, zero previous_response_id. That is stronger than "a setting was left off": the older API cannot structurally carry encrypted reasoning into the next turn. Dropped reasoning is not a missed flag—pick that API and the outcome is baked in.
Second: the message stack is true FIFO—oldest first to go:
agents/templates/llm_agents.pydef push_message(self, message):
"""Push a message onto stack, store up to MESSAGE_LIMIT with FIFO."""
self.messages.append(message)
if len(self.messages) > self.MESSAGE_LIMIT:
self.messages = self.messages[-self.MESSAGE_LIMIT :]
That last line is rolling truncation: keep only the newest MESSAGE_LIMIT messages; drop the rest. In the public templates the cap is message count (10 for the basic agent, 5 for the reasoning agent).
When context fills, compress into a summary—don't delete the oldest
If the root cause is forgetting, the fix is two moves: let it remember, and stop freeing space by deleting.
OpenAI's models are trained to write private reasoning first, then answer or call a tool—and those reasoning messages are meant to stay in the dialogue history. When history no longer fits, compress and keep going. That is how ChatGPT and Codex are deployed. To match that production setup, they rewrote the ARC-AGI-3 harness on the Responses API.
Switch 1: retained reasoning—pass back the previous response ID
This switch is retained reasoning. On the Responses API, feed the previous response's ID (previous_response_id) into the next request and reasoning is kept automatically across tool calls and turns. Two things change: each step takes less thinking time, because the model does not need to re-learn the game; and it actually learns—strategies stay coherent instead of restarting every step.
Switch 2: replace rolling truncation with compaction
compaction is context compression. Per OpenAI's API docs, set context_management's compact_threshold on the request: once rendered tokens cross that threshold, the server runs a compression pass, packing prior state and reasoning into an encrypted compact item, then continues. That item is a black box to humans, but it carries what the conversation needs next.
The difference in one line: rolling truncation deletes the oldest records when memory is full—gone for good; compaction writes those records into a condensed form, frees space, and keeps writing. One truly forgets. The other keeps an abbreviated memory.
OpenAI's own diagram shows this mechanism across a real multi-step run:
Rolling truncation has a secondary side effect: the model spends most of its time in a nearly full context window, and fuller windows slightly hurt performance. Compaction empties the window again and sidesteps that too.
All five reasoning levels move up—~12× fewer tokens at the same score
The chart below plots both harnesses: x-axis is output tokens per game, y-axis is score. Each line has five points for low, medium, high, xhigh, and max reasoning.
The shapes tell the story at a glance: the official line crawls right—2.9M tokens per game to hit 13.3%; the new line climbs almost up the y-axis—0.49M tokens per game at max for 38.3%.
| Reasoning | Official score | Official tokens/game | Retained+compact score | New tokens/game |
|---|---|---|---|---|
| low | 0.9% | 58,809 | 3.7% | 84,316 |
| medium | 1.5% | 207,188 | 7.3% | 141,939 |
| high | 5.2% | 728,188 | 13.4% | 243,258 |
| xhigh | 7.2% | 1,285,393 | 25.7% | 428,540 |
| max | 13.3% | 2,900,997 | 38.3% | 485,485 |
All five levels move up—first takeaway. OpenAI's own summary: at max, about 3× the score on about one-sixth the output tokens.
Go back to the scoring rule and the two ledgers separate cleanly: RHAE does not count thinking steps, so 13.3% → 38.3% is pure "fewer wrong turns"—remember your own judgments and you stop replaying ruled-out routes. Lower output tokens means you no longer re-learn the game from scratch every step. One change, two non-overlapping gains.
OpenAI also shipped a 4:29 animation that follows Sol's 175K context window across a sequence of levels:
ARC's own analysis points somewhere else
OpenAI says this deeper look was sparked by an ARC analysis. Published May 1, that piece reviewed 160 game replays and reasoning traces and landed elsewhere: the model never builds an understanding of the game. Same material; two readings side by side.
The confusion comes from the harness: private reasoning dropped every step, old actions truncated out—no past, so no learning.
Evidence: fix those two and the same model nearly triples score while cutting tokens to one-sixth.
The model never builds a working model of the game. Three failure modes:
- Local effects correct, global rules missing—knows ACTION3 rotates an object, never gets to "aim the bucket first, then dip paint."
- Forces old training-game templates onto new ones—treats cd82 as sand physics and Flood-It, ls20 as Breakout.
- Clears a level without learning the game—level one passes on a wrong theory that locks level two.
ARC's closing contrast: Opus 4.7 compresses into a confident wrong theory; GPT-5.5 never compresses at all.
They didn't fail because they didn't observe things. They failed because they couldn't ground those observations into a world model.
ARC Prize, "Analyzing GPT-5.5 and Opus 4.7 with ARC-AGI-3," May 1, 2026
The two stories are not mutually exclusive—forgetting last step's judgment makes a coherent world model harder. They do point at different places: one at the harness, one at the model.
Two more facts belong together. First, ARC's own footnote in that piece: under default testing GPT-5.5 does not return reasoning traces, so the qualitative analysis used a special setup—the official score does not come from that mode. That confirms from ARC's side that missing reasoning is a real phenomenon.
Second, ARC's July results page for the GPT-5.6 line is quite positive on Sol itself: the only competitive model of its generation, able to read unfamiliar scenes in the game's own vocabulary, replan when hypotheses fail instead of thrashing, and the first model to truly win a full public ARC-AGI-3 game (id ft09, 87%). "Looked not very smart" was OpenAI's impression from replays—not ARC's verdict on Sol.
Push the harness rewrite further and the numbers can climb much higher.
New API, keep the model's thinking, compact instead of delete
For practitioners, OpenAI's advice to API developers is three lines—no expansion in the original.
The concrete fields look like this.
previous_response_id context_management.compact_threshold store=false POST /responses/compact
First: pass back the previous response ID so reasoning is kept across tool calls and turns. Second: compact threshold—once rendered tokens cross it, the server compresses automatically, no extra call. Third: with this set, server-side compaction also works when data is not stored. Last: a standalone compact endpoint, fully stateless—you send full context, get a compressed context back, and hand it to the next request as-is.
Their closing claim: benchmarks rarely measure the model alone. They also measure a pile of less-visible choices—API settings, harness design, prompts. And this is not the first time: they have seen public scores look oddly low before, only to find the eval's generic harness was dropping reasoning messages.
We hope these experiments are a reminder: benchmarks rarely measure the model alone. They also measure a whole set of less-visible choices—API settings, harness design, and prompts.
Ilan Bigio, Ted Sanders, OpenAI, July 29, 2026
One step further: Sol's score on this benchmark runs from ARC-verified 13.33%, to OpenAI's self-run 38.3%, to Schema's self-reported 95.35%—with the model weights never moved. Human baseline: 48%. Lined up like that, "how capable is this model?" still does not have a single settled answer.
OpenAI postmortem: their own model bombed a test because the runner discarded its thinking after every step
OpenAI's Ilan Bigio and Ted Sanders swapped the ARC-AGI-3 harness onto a new API and flipped two settings. Same GPT-5.6 Sol — score and bill both moved. One page, with a diagram that moves.
↓ One page · one animated figure
Same GPT-5.6 Sol, same eval suite, same reasoning effort. Flip two API settings (options on the model call) and the ARC-AGI-3 public-set score jumps from 13.3% to 38.3%. Not a single byte of model weights changed.
38.3% is OpenAI's own run. ARC Prize has independently verified only the official harness numbers: 13.33% on the public set and 7.78% on the semi-private set. The three figures below all come from OpenAI's July 29, 2026 postmortem.
ARC-AGI-3 is ARC Prize's puzzle-game eval. No manual at all: no rules text, no goal description, no intermediate reward. Each step the model gets only a 64×64 color grid plus seven pressable keys. Clear a level by pressing, guessing the rules, and revising when wrong.
The score is RHAE (Relative Human Action Efficiency). It compares steps: the model's steps to clear each level versus a first-time human on the same level, with a squared penalty on the extra steps. That percentage has nothing to do with "how many questions got right."
One more rule shapes every number below: actions that don't change the game screen don't count as steps — thinking, tool calls, retries, none of them. A rising score means fewer wasted moves. Saved output volume is a separate ledger.
OpenAI dug through a few match logs. First impression: the model looks dull — long pauses each step, looping in place. Dig further and the fault sits in the runner (the industry word is harness: the external code that feeds frames to the model, sends back chosen actions, and decides how much history it sees).
After every step, the private reasoning the model wrote for itself was thrown away wholesale. Once context filled up, even the keypress history was trimmed from the oldest end. The next step had to re-learn the game from scratch. What stayed in its hands:
✔ One short note
✘ Why those keys then
✘ What the last step already figured out
✘ The plan for the next move
The bug is forgetting. The fix is two moves: keep what it thought, and stop freeing space by deleting.
The old API can't return private reasoning. The second line is rolling truncation: keep only the latest N messages (10 in the public template, 5 in the reasoning variant) and drop everything earlier.
The first line passes back the prior response ID so reasoning persists across tool calls and turns. The second is the compaction threshold: past it, the server compresses automatically — no extra call.
All five reasoning-effort tiers moved up. OpenAI's own summary at max: roughly 3× the score and about one-sixth the output tokens (model output, billed by volume). The more useful cell is same-score:
25 puzzle runs
Mini-games
frame by frame.
backtracking?
- × Why those keys were pressed
- × What the last step already figured out
- × The plan for the next move
wipes the thought
just formed.
drop the earliest—
gone for good
what was learned stays with it
compact_threshold|hit this size, compact once
what it thought.
13.3% → 38.3%
↓
490K
Members can copy or download the full Markdown, and let their AI subscribe and ask.
Found this useful? Leave your email — every new explainer, the moment it's out. Unsubscribe anytime.
