99.61 on ARC-AGI-3

All 25 public games won. All 183 levels cleared. Claude Code with Opus 5, run on 14 August 2026.

99.61
score, computed by ARC
25 / 25
games won
183 / 183
levels cleared
$572
total model spend

The starting point was Jeremy Berman's arc-code, which scored 96.2 on the same 25 games. This run reuses his design and adds a small number of changes aimed at the specific ways his sessions lost. Those changes are described below, along with everything that went wrong along the way.

What the number means

ARC computes the score on its own servers. You do not calculate it yourself. Each level is scored against a published baseline action count, so clearing a level in fewer actions than the baseline earns full marks and grinding through it earns less. Winning every game is not enough on its own to reach 100.

Of the 25 games, 23 scored a flat 100. Two did not. g50t scored 90.40 because one of its levels took 226 actions against a baseline of 96. bp35 scored 99.80. Everything else was perfect.

Compared with arc-code

 this runarc-code
Score99.6196.2
Games won25 of 2524 of 25
ModelOpus 5, 1M contextOpus 5, high effort
Spend$572about $540

Where this sits on the ARC leaderboard

ARC Prize runs a community leaderboard for agent harnesses played on the public games. A score of 99.61 would place third on it, behind Tycho at 100.0 and Retrodict at 99.9, and ahead of baseline1 at 99.0. It would also sit above the Human Intelligence Harness at 95.3, which is people playing the games by hand.

On cost it compares well. Tycho spent $2,986 and Retrodict spent $654. This run spent $572, which is the lowest of the top three.

ARC-AGI Community Leaderboard screenshot
arcprize.org/leaderboard/community, captured 14 August 2026. Standings change, so check the live page.

Not submitted, and not submittable as it stands. Nothing here has been entered on that leaderboard, and this result could not be entered without running it again.

Submitting means opening a pull request on the ARC community leaderboard repo. For ARC-AGI-3 you do not report a number at all. You give one scorecard link and ARC reads the score off it, and that scorecard has to be produced in Competition Mode. This run was not.

Competition Mode is much stricter than ordinary play. One scorecard covers all 25 games, each game may be started exactly once, restarts are not allowed, and every game counts whether you played it or not. The per game scorecards that kept this run alive through the failures below are the same thing that makes it ineligible. A submittable run has to survive start to finish with no restarts at all.

Was every game won on the first try

Yes, in the sense that matters. No game was ever lost and then played again. The agent never failed a game and got a second chance at it.

What did happen is that ARC dropped the game session for 8 of the 25 games while they were being played. When that happens the game is gone and has to be started again from level one. In those cases the harness restarted the game and let the agent read back its own notes from the interrupted run. arc-code does the same thing when ARC deletes a session.

The important detail is what those interrupted runs had already achieved when they were cut off:

GameScored runBaselineWhat the interrupted run had already reached
lf529841,339976 actions, all 10 levels. It had already won.
bp35531651476 actions, level 9 of 9
tn36121317152 actions, level 6 of 7
re866591,255264 actions, level 6 of 8
s5i5285638141 actions, level 6 of 8
sb2612421393 actions, level 6 of 8
sp80158518669 actions, level 5 of 6
tu93205462interrupted at level 6 of 9

lf52 is the clearest case. The run that got cut off had already cleared all ten levels. The restart was not a second attempt at a puzzle it could not solve. It was re-earning a scorecard for a game it had already beaten, and it took 984 actions the second time against 976 the first, so knowing the answer saved it almost nothing.

The one place prior knowledge probably helped the score.

sp80 had spent 669 actions to reach level 5 before it was cut off, which was already over its 518 action baseline and heading for a deduction. With its notes it won in 158 actions and scored 100. That is worth about 0.2 points on the final number. Every other restarted game was already comfortably under baseline when it was interrupted, so those scores would most likely have stood anyway.

What went wrong during the run

Two problems, both outside the games themselves. They are worth writing down because the fixes are part of why the final number came out where it did.

Running out of Claude usage part way through

The Claude account hit its usage limit twice. Sessions started exiting straight away without playing anything and without spending anything. The first time this happened, the harness misread those instant exits as the agent giving up, wound down, and let the shared scorecard go idle. ARC then deleted it, which took the remaining games with it. That first run ended at 63.43 with 12 games never played.

The fix was to notice a session that exits without spending anything, treat it as an infrastructure failure rather than a result, pause every game on one shared timer, and probe again every 20 minutes until the limit clears. Nothing is counted against the game while it waits.

ARC deleting scorecards during those pauses

ARC removes a scorecard after about 15 minutes of no activity, and takes its game sessions with it. While everything was paused waiting for usage to reset, nothing was touching those scorecards, so they were deleted. Worse, the recovery code then restarted those games from level one while the account still could not play, so it spent the progress and got nothing back. Five games were reset this way for no benefit.

Two fixes went in. A background task now touches every unfinished game's scorecard every seven minutes. And a game is never restarted while the account is paused, only when a session can actually play. After that change, a later usage pause happened and no game was reset.

Scorecards still got deleted a few times even so, because polling a scorecard does not appear to count as activity on ARC's side. What actually saved the run was the restart keeping the agent's notes, not the keepalive.

What is in the harness

The design is arc-code's. The agent gets a 15 line description of the environment, a 110 line description of how to play, and one command to act with. It gets no ARC specific knowledge, no solver, no planner, no world model, and no grid tools. It has Bash, Read, Write, Edit, Grep and Glob, and nothing else.

Everything else is written by the model while it plays. Across this run the agents wrote and kept 222 programs totalling about 13,900 lines, which is roughly ten times the size of the harness they can see. Parsers, simulators, search routines and planners, all written during the game and thrown away when the game ended.

The changes that pushed the score up

arc-code published an unusually honest breakdown of how its runs lost, across 191 sessions. Six of the 14 losses were sessions that decided a level was impossible and stopped with between 1,391 and 2,218 of their 2,500 actions unused. In five of those six, the experiment that would have settled the question was already written in the agent's own notes and never run. On one game, no session across 9,792 moves ever pressed one of the seven available buttons. Every change below is aimed at one of those findings.

ChangeWhat it is for
Sessions restart if they stop early If a session ends with the game unfinished and actions still in the budget, a fresh session is started in the same folder. It reads the same notes and the same log, and continues on the same budget. The brief it gets says plainly that stopping early is the most common way to lose and that an impossibility proof is usually a sign of one wrong rule.
./act untested Lists the actions the agent has never played, both for the whole game and for the level it is on. This directly targets the game where nobody ever pressed a button that was available the entire time.
./act diff Prints exactly which cells changed between any two recorded moves, with a summary of the changes. arc-code's own prompt says comparing two states is the single most useful thing an agent can do, so it seemed worth building in rather than leaving each game to write it again and possibly get it wrong.
A checklist for stuck levels The prompt now says a search that finds nothing is evidence about your own rules, not about the level. Before concluding anything is impossible: play every untested action, test the opposite of every rule you only saw once, physically visit places you have never been, and try to build the state your model says cannot exist. Rules are also marked with how many separate observations support them.
Early probing of every action The prompt asks the agent to try every available action at least once within its first 40 moves, and to re-check on later levels, because an action that did nothing on level one can turn out to be the whole mechanic on level six.
One scorecard per game Each game's score is recorded with ARC the moment that game finishes, so a later failure cannot take it away. This is what stopped the second run from losing everything the way the first one did. The trade off is that it does not produce the single scorecard a leaderboard submission wants.

Whether the changes or the model configuration deserve the credit is not cleanly separable. This run used Opus 5 with the 1 million token context window, while arc-code used its default setting, so some of the difference may come from that rather than from anything in the harness.

Every game

Actions are what this run spent. Baseline is what ARC publishes for the game, added up across its levels. Every scorecard below is public and can be checked.

GameScoreLevelsActionsBaselineRunProof
ar25100.008/8310748one run, start to finishcard
cd82100.006/6125171one run, start to finishcard
cn04100.006/6235789one run, start to finishcard
dc22100.006/67251,228one run, start to finishcard
ft09100.006/682208one run, start to finishcard
ka59100.007/7446730one run, start to finishcard
lf52100.0010/109841,339restarted after the game session was droppedcard
lp85100.008/897388one run, start to finishcard
ls20100.007/7576776one run, start to finishcard
m0r0100.006/62671,107one run, start to finishcard
r11l100.006/688233one run, start to finishcard
re86100.008/86591,255restarted after the game session was droppedcard
s5i5100.008/8285638restarted after the game session was droppedcard
sb26100.008/8124213restarted after the game session was droppedcard
sc25100.006/6174350one run, start to finishcard
sk48100.008/84041,070one run, start to finishcard
sp80100.006/6158518restarted after the game session was droppedcard
su15100.009/9162361one run, start to finishcard
tn36100.007/7121317restarted after the game session was droppedcard
tr87100.006/6216414one run, start to finishcard
tu93100.009/9205462restarted after the game session was droppedcard
vc33100.007/7248447one run, start to finishcard
wa30100.009/98691,843one run, start to finishcard
bp3599.809/9531651restarted after the game session was droppedcard
g50t90.407/7510879one run, start to finishcard

The games that beat arc-code

Six of the 25 games account for all of arc-code's losses. All six were won here.

Things to be careful about

Reproducing it. The harness is act.py and run.py plus two short markdown files. It needs an ARC API key, the Claude CLI, and uv. There are 11 offline tests that run against a built in practice game with no key and no cost. A full pass over the 25 games takes most of a day and around $550.

Built on jerber/arc-code, MIT licensed. Scores computed by ARC Prize. Leaderboard screenshot captured 14 August 2026 from arcprize.org/leaderboard/community. Benchmark details at arcprize.org/arc-agi/3.