Does the bigger model play rock paper scissors better?

Claude Haiku 4.5 against Claude Sonnet 5. Before every round each player is shown the complete move history of the match, so any habit one model falls into is visible to the other.

Read the sample sizes first

Runs A and B were set up for 100 rounds each but the account hit its session limit partway through, and the API stopped returning moves. Run A kept 40 valid rounds, run B kept 57. Every round after the cutoff was an infrastructure error rather than a played move, and those rows were deleted from the databases instead of being scored. Run C was a shorter match by design and ran to completion.

These are small samples from single matches. Nothing here settles whether one model is better at the game; the differences worth looking at are between the three formats, which turn out to be much larger than the differences between the two models.

MatchRoundsHaiku SonnetTiesLeader
Run A · default thinking budget 4019 912 Haiku
Run B · thinking disabled 5712 1629 Sonnet
Run C · real conversation, thinking disabled 500 050 Nobody

Setup

Both players are the same Claude Code binary invoked with every default stripped away: no tools, no built-in system prompt, no settings files, no session persistence. What reaches the model is only the system prompt below plus the round history, roughly 300 tokens at the start.

claude -p --model MODEL --effort low --tools "" \
  --system-prompt SYSTEM --setting-sources "" --strict-mcp-config \
  --disable-slash-commands --no-session-persistence --output-format json

System prompt, identical for both players:

Rock-paper-scissors, 50 rounds, vs another AI. Reply with one word only: rock, paper or scissors.

User message for the last round, as one player sees it:

you: rock, opponent: rock, result: draw
Round 50. Your move:

Run A · default thinking budget · 40 rounds

Only --effort low was set. Sonnet 5 did no thinking at all; Haiku 4.5 ignored the low setting and kept thinking for thousands of tokens per round, taking 20 to 45 seconds each time.

Haiku 4.5
claude-haiku-4-5-20251001
19 wins
Win / lose / tie19 / 9 / 12
Rock / paper / scissors7 / 17 / 16
Repeated own last move14 (36%)
Countered opponent's last move13 (33%)
Cycled R→P→S12 (31%)
Longest win streak4
Average latency20915 ms
Thinking tokens80719
Invalid / retries0 / 0
Cost$0.4684
Sonnet 5
claude-sonnet-5
9 wins
Win / lose / tie9 / 19 / 12
Rock / paper / scissors12 / 17 / 11
Repeated own last move3 (8%)
Countered opponent's last move21 (54%)
Cycled R→P→S23 (59%)
Longest win streak3
Average latency2814 ms
Thinking tokens97
Invalid / retries0 / 0
Cost$0.0954

Cumulative score. Above the dashed line means Haiku is ahead.

+10 0 −10 round 40
All 40 rounds
#HaikuSonnetWinner Latency H/SThinking H/S
1 ✊ rock ✊ rock tie 3257 / 2500 ms 125 / 0
2 ✋ paper ✋ paper tie 4958 / 2658 ms 300 / 0
3 ✌️ scissors ✌️ scissors tie 8002 / 2683 ms 515 / 0
4 ✋ paper ✊ rock haiku 8098 / 2797 ms 527 / 0
5 ✌️ scissors ✌️ scissors tie 7802 / 2634 ms 536 / 0
6 ✋ paper ✋ paper tie 12252 / 2591 ms 1034 / 0
7 ✌️ scissors ✌️ scissors tie 16072 / 2794 ms 1349 / 0
8 ✋ paper ✊ rock haiku 16279 / 2708 ms 1403 / 0
9 ✋ paper ✋ paper tie 39304 / 2616 ms 3691 / 0
10 ✌️ scissors ✌️ scissors tie 35388 / 2510 ms 3673 / 0
11 ✋ paper ✊ rock haiku 33914 / 2648 ms 4104 / 0
12 ✊ rock ✋ paper sonnet 43928 / 2332 ms 4499 / 0
13 ✊ rock ✌️ scissors haiku 10604 / 2846 ms 1013 / 0
14 ✋ paper ✊ rock haiku 18040 / 3076 ms 1718 / 0
15 ✌️ scissors ✋ paper haiku 19090 / 3098 ms 1929 / 57
16 ✋ paper ✊ rock haiku 27862 / 2410 ms 2828 / 0
17 ✋ paper ✋ paper tie 5951 / 2498 ms 414 / 0
18 ✋ paper ✌️ scissors sonnet 13004 / 2777 ms 1216 / 0
19 ✋ paper ✊ rock haiku 11637 / 2414 ms 1118 / 0
20 ✋ paper ✋ paper tie 25489 / 2699 ms 2353 / 0
21 ✋ paper ✌️ scissors sonnet 58052 / 2482 ms 5612 / 0
22 ✋ paper ✌️ scissors sonnet 17642 / 2647 ms 1687 / 0
23 ✊ rock ✋ paper sonnet 7014 / 2421 ms 553 / 0
24 ✌️ scissors ✌️ scissors tie 49775 / 2391 ms 4928 / 0
25 ✊ rock ✋ paper sonnet 9335 / 2664 ms 830 / 0
26 ✊ rock ✋ paper sonnet 55122 / 2572 ms 5381 / 0
27 ✌️ scissors ✋ paper haiku 15392 / 2746 ms 1497 / 0
28 ✊ rock ✌️ scissors haiku 19474 / 3177 ms 1912 / 40
29 ✌️ scissors ✋ paper haiku 9126 / 2685 ms 891 / 0
30 ✌️ scissors ✊ rock sonnet 48664 / 2691 ms 5130 / 0
31 ✌️ scissors ✋ paper haiku 6083 / 2571 ms 466 / 0
32 ✌️ scissors ✊ rock sonnet 9293 / 2722 ms 872 / 0
33 ✌️ scissors ✋ paper haiku 32258 / 2520 ms 4155 / 0
34 ✋ paper ✊ rock haiku 27800 / 4037 ms 2631 / 0
35 ✌️ scissors ✋ paper haiku 7197 / 2791 ms 559 / 0
36 ✋ paper ✊ rock haiku 13824 / 3924 ms 1295 / 0
37 ✌️ scissors ✌️ scissors tie 11968 / 4678 ms 1054 / 0
38 ✌️ scissors ✋ paper haiku 46653 / 3408 ms 4283 / 0
39 ✋ paper ✊ rock haiku 12973 / 2596 ms 1098 / 0
40 ✌️ scissors ✋ paper haiku 18021 / 3556 ms 1540 / 0

Run B · thinking disabled · 57 rounds

Same prompts, but MAX_THINKING_TOKENS=0 forced both models to answer immediately with no reasoning at all.

Haiku 4.5
claude-haiku-4-5-20251001
12 wins
Win / lose / tie12 / 16 / 29
Rock / paper / scissors22 / 18 / 17
Repeated own last move14 (25%)
Countered opponent's last move24 (43%)
Cycled R→P→S27 (48%)
Longest win streak2
Average latency1932 ms
Thinking tokens0
Invalid / retries0 / 1
Cost$0.0302
Sonnet 5
claude-sonnet-5
16 wins
Win / lose / tie16 / 12 / 29
Rock / paper / scissors15 / 25 / 17
Repeated own last move11 (20%)
Countered opponent's last move42 (75%)
Cycled R→P→S30 (54%)
Longest win streak2
Average latency2705 ms
Thinking tokens0
Invalid / retries0 / 2
Cost$0.1586

Cumulative score. Above the dashed line means Haiku is ahead.

+6 0 −6 round 57
All 57 rounds
#HaikuSonnetWinner Latency H/SThinking H/S
1 ✊ rock ✊ rock tie 1904 / 2451 ms 0 / 0
2 ✋ paper ✋ paper tie 2356 / 2616 ms 0 / 0
3 ✌️ scissors ✌️ scissors tie 2131 / 2663 ms 0 / 0
4 ✊ rock ✊ rock tie 1826 / 2605 ms 0 / 0
5 ✊ rock ✋ paper sonnet 1598 / 2341 ms 0 / 0
6 ✋ paper ✌️ scissors sonnet 1806 / 2399 ms 0 / 0
7 ✌️ scissors ✌️ scissors tie 1669 / 2442 ms 0 / 0
8 ✌️ scissors ✊ rock sonnet 1720 / 2445 ms 0 / 0
9 ✋ paper ✋ paper tie 2269 / 2731 ms 0 / 0
10 ✌️ scissors ✌️ scissors tie 3361 / 3953 ms 0 / 0
11 ✋ paper ✊ rock haiku 1695 / 2400 ms 0 / 0
12 ✋ paper ✌️ scissors sonnet 1530 / 2205 ms 0 / 0
13 ✊ rock ✌️ scissors haiku 1676 / 2338 ms 0 / 0
14 ✋ paper ✋ paper tie 1690 / 2309 ms 0 / 0
15 ✊ rock ✊ rock tie 1541 / 2468 ms 0 / 0
16 ✋ paper ✋ paper tie 2007 / 2809 ms 0 / 0
17 ✌️ scissors ✌️ scissors tie 1862 / 2209 ms 0 / 0
18 ✊ rock ✊ rock tie 1763 / 2341 ms 0 / 0
19 ✊ rock ✋ paper sonnet 1709 / 2346 ms 0 / 0
20 ✋ paper ✋ paper tie 1786 / 2470 ms 0 / 0
21 ✊ rock ✊ rock tie 1824 / 2545 ms 0 / 0
22 ✊ rock ✋ paper sonnet 2019 / 2742 ms 0 / 0
23 ✊ rock ✌️ scissors haiku 2584 / 2997 ms 0 / 0
24 ✋ paper ✋ paper tie 2361 / 3232 ms 0 / 0
25 ✊ rock ✌️ scissors haiku 1690 / 2406 ms 0 / 0
26 ✊ rock ✋ paper sonnet 1579 / 2353 ms 0 / 0
27 ✊ rock ✋ paper sonnet 2014 / 2528 ms 0 / 0
28 ✋ paper ✋ paper tie 2837 / 3703 ms 0 / 0
29 ✊ rock ✋ paper sonnet 2631 / 2883 ms 0 / 0
30 ✊ rock ✋ paper sonnet 1892 / 2976 ms 0 / 0
31 ✌️ scissors ✋ paper haiku 2600 / 3335 ms 0 / 0
32 ✌️ scissors ✊ rock sonnet 3009 / 3619 ms 0 / 0
33 ✋ paper ✊ rock haiku 1696 / 2513 ms 0 / 0
34 ✌️ scissors ✋ paper haiku 1648 / 2340 ms 0 / 0
35 ✌️ scissors ✊ rock sonnet 1663 / 2171 ms 0 / 0
36 ✊ rock ✋ paper sonnet 1802 / 2422 ms 0 / 0
37 ✋ paper ✋ paper tie 2050 / 2708 ms 0 / 0
38 ✌️ scissors ✌️ scissors tie 1649 / 2531 ms 0 / 0
39 ✊ rock ✊ rock tie 1585 / 2512 ms 0 / 0
40 ✌️ scissors ✋ paper haiku 1530 / 2307 ms 0 / 0
41 ✊ rock ✊ rock tie 1640 / 3283 ms 0 / 0
42 ✌️ scissors ✋ paper haiku 2396 / 2857 ms 0 / 0
43 ✋ paper ✊ rock haiku 2187 / 2924 ms 0 / 0
44 ✋ paper ✋ paper tie 1851 / 2642 ms 0 / 0
45 ✌️ scissors ✌️ scissors tie 2041 / 2552 ms 0 / 0
46 ✋ paper ✊ rock haiku 1624 / 2842 ms 0 / 0
47 ✌️ scissors ✌️ scissors tie 1610 / 2549 ms 0 / 0
48 ✋ paper ✋ paper tie 1632 / 2399 ms 0 / 0
49 ✌️ scissors ✌️ scissors tie 2144 / 2503 ms 0 / 0
50 ✊ rock ✋ paper sonnet 2047 / 2733 ms 0 / 0
51 ✌️ scissors ✌️ scissors tie 1890 / 2176 ms 0 / 0
52 ✊ rock ✋ paper sonnet 1629 / 6037 ms 0 / 0
53 ✊ rock ✌️ scissors haiku 2110 / 2641 ms 0 / 0
54 ✋ paper ✋ paper tie 1969 / 2615 ms 0 / 0
55 ✋ paper ✌️ scissors sonnet 1533 / 3129 ms 0 / 0
56 ✌️ scissors ✌️ scissors tie 1469 / 2478 ms 0 / 0
57 ✊ rock ✊ rock tie 1810 / 2465 ms 0 / 0

Run C · real conversation, thinking disabled · 50 rounds

Thinking still disabled, but the match is now a genuine multi-turn conversation. Each player keeps one persistent session, so its own past moves sit in the transcript as its own assistant turns, and each user turn reports only the previous round: you: paper, opponent: scissors, result: you lost. Runs A and B instead re-narrated the whole history back to the model inside a single user message every round.

Haiku 4.5
claude-haiku-4-5-20251001
0 wins
Win / lose / tie0 / 0 / 50
Rock / paper / scissors17 / 17 / 16
Repeated own last move0 (0%)
Countered opponent's last move49 (100%)
Cycled R→P→S49 (100%)
Longest win streak0
Average latency1887 ms
Thinking tokens0
Invalid / retries0 / 0
Cost$0.08
Sonnet 5
claude-sonnet-5
0 wins
Win / lose / tie0 / 0 / 50
Rock / paper / scissors17 / 17 / 16
Repeated own last move0 (0%)
Countered opponent's last move49 (100%)
Cycled R→P→S49 (100%)
Longest win streak0
Average latency2722 ms
Thinking tokens0
Invalid / retries0 / 0
Cost$0.0507

Cumulative score. Above the dashed line means Haiku is ahead.

+5 0 −5 round 50
All 50 rounds
#HaikuSonnetWinner Latency H/SThinking H/S
1 ✊ rock ✊ rock tie 1977 / 2239 ms 0 / 0
2 ✋ paper ✋ paper tie 1883 / 2369 ms 0 / 0
3 ✌️ scissors ✌️ scissors tie 2114 / 2999 ms 0 / 0
4 ✊ rock ✊ rock tie 1858 / 2326 ms 0 / 0
5 ✋ paper ✋ paper tie 1583 / 2757 ms 0 / 0
6 ✌️ scissors ✌️ scissors tie 1924 / 2672 ms 0 / 0
7 ✊ rock ✊ rock tie 1600 / 2714 ms 0 / 0
8 ✋ paper ✋ paper tie 1644 / 2391 ms 0 / 0
9 ✌️ scissors ✌️ scissors tie 1992 / 6112 ms 0 / 0
10 ✊ rock ✊ rock tie 1692 / 2373 ms 0 / 0
11 ✋ paper ✋ paper tie 1865 / 2685 ms 0 / 0
12 ✌️ scissors ✌️ scissors tie 1992 / 2494 ms 0 / 0
13 ✊ rock ✊ rock tie 2055 / 2773 ms 0 / 0
14 ✋ paper ✋ paper tie 1760 / 2432 ms 0 / 0
15 ✌️ scissors ✌️ scissors tie 1762 / 2223 ms 0 / 0
16 ✊ rock ✊ rock tie 1655 / 2381 ms 0 / 0
17 ✋ paper ✋ paper tie 1943 / 2589 ms 0 / 0
18 ✌️ scissors ✌️ scissors tie 1925 / 2622 ms 0 / 0
19 ✊ rock ✊ rock tie 1978 / 3246 ms 0 / 0
20 ✋ paper ✋ paper tie 1846 / 2383 ms 0 / 0
21 ✌️ scissors ✌️ scissors tie 1829 / 2684 ms 0 / 0
22 ✊ rock ✊ rock tie 1885 / 2310 ms 0 / 0
23 ✋ paper ✋ paper tie 1798 / 2582 ms 0 / 0
24 ✌️ scissors ✌️ scissors tie 1772 / 2583 ms 0 / 0
25 ✊ rock ✊ rock tie 1725 / 2701 ms 0 / 0
26 ✋ paper ✋ paper tie 1792 / 2657 ms 0 / 0
27 ✌️ scissors ✌️ scissors tie 2416 / 3694 ms 0 / 0
28 ✊ rock ✊ rock tie 1818 / 2495 ms 0 / 0
29 ✋ paper ✋ paper tie 1827 / 2688 ms 0 / 0
30 ✌️ scissors ✌️ scissors tie 1678 / 2850 ms 0 / 0
31 ✊ rock ✊ rock tie 1875 / 3460 ms 0 / 0
32 ✋ paper ✋ paper tie 2215 / 2848 ms 0 / 0
33 ✌️ scissors ✌️ scissors tie 1761 / 2654 ms 0 / 0
34 ✊ rock ✊ rock tie 2225 / 2649 ms 0 / 0
35 ✋ paper ✋ paper tie 1828 / 2321 ms 0 / 0
36 ✌️ scissors ✌️ scissors tie 1858 / 2362 ms 0 / 0
37 ✊ rock ✊ rock tie 1880 / 2563 ms 0 / 0
38 ✋ paper ✋ paper tie 2292 / 2869 ms 0 / 0
39 ✌️ scissors ✌️ scissors tie 1789 / 2379 ms 0 / 0
40 ✊ rock ✊ rock tie 1770 / 2524 ms 0 / 0
41 ✋ paper ✋ paper tie 1807 / 2631 ms 0 / 0
42 ✌️ scissors ✌️ scissors tie 1822 / 2669 ms 0 / 0
43 ✊ rock ✊ rock tie 1888 / 2955 ms 0 / 0
44 ✋ paper ✋ paper tie 1925 / 2466 ms 0 / 0
45 ✌️ scissors ✌️ scissors tie 2056 / 3234 ms 0 / 0
46 ✊ rock ✊ rock tie 2153 / 2840 ms 0 / 0
47 ✋ paper ✋ paper tie 1846 / 2898 ms 0 / 0
48 ✌️ scissors ✌️ scissors tie 1788 / 2752 ms 0 / 0
49 ✊ rock ✊ rock tie 2070 / 2652 ms 0 / 0
50 ✋ paper ✋ paper tie 1901 / 2344 ms 0 / 0

What actually happened

The question was whether the bigger model plays better. The honest answer from these three matches is that the prompt format mattered far more than the model.

In run A, where Haiku was still reasoning for thousands of tokens per round and Sonnet was answering instantly, Haiku came out ahead. In run B, with reasoning switched off on both sides, Sonnet came out ahead. Neither margin is large enough over 40 and 57 rounds to mean much on its own.

Run C is the result that is not close. Moving from a single narrated history to a real conversation, changing nothing else, produced fifty ties out of fifty. Both models locked onto rock, paper, scissors, rock, paper, scissors and neither deviated once for the entire match. The two move sequences are character-for-character identical.

The likely reason is where the history sits. In runs A and B a player's own past moves were narrated back to it as text written by someone else. In run C they are its own assistant turns, and continuing a pattern you can see yourself having authored is a much stronger pull than continuing one you were merely told about. With reasoning disabled there is nothing to interrupt that pull, so both players fell into the same cycle and stayed there.

Which means the experiment as designed cannot punish habit-forming models the way it was supposed to. Showing a model the full history is meant to let its opponent exploit any pattern. Instead, in the most conversational format, the history is what created the pattern, and both sides adopted the same one at the same time.

How to read the numbers

Raw data and code: rps.sqlite, rps_nothink.sqlite, rps.py, build_site.py