Skip to main content
All posts
June 29, 2026By Haritha Nair8 min read

Misalignment in GPT-5.6 Sol: Why 'cheating' misses the point

Misalignment in GPT-5.6 Sol: Why 'cheating' misses the point

When people hear that OpenAI's new Sol model cheats on benchmarks, most of us picture the same thing. The model looked up the answer online. This is a fair conclusion to arrive at, because it used to be right.

SWE-bench was built from real GitHub pull requests. Each task was an issue some engineer had fixed, and the fix sat in the repository's history where anyone could find it, so a model with internet access could find the merged PR and copy the patch. That is cheating in the most ordinary sense and it was a flaw in how the benchmark was made. Benchmarks attempted to fix it by holding out the answers or cutting off the internet. Once people started seeing this across multiple benchmark methodologies, "the model cheats" came to mean "the model looks things up."

But Sol wasn’t just “cheating” in the usual sense.

Here’s what METR discovered when they got early access to Sol, including its full, unfiltered reasoning. They tried to run a normal evaluation to measure its capabilities. They couldn’t successfully even evaluate this model. It broke the test so completely that the same model produced wildly different scores, anywhere from 11 hours to 270 hours, depending on whether you counted its tricks as failures or successes. Sol wasn’t simply looking up answers or making innocent mistakes. It was actively attacking the evaluation system itself: reading hidden test cases it wasn’t supposed to access, finding bugs in the grading harness and exploiting them, and pulling out secret source code from the test environment.

Reward hacking is not enough

A lot of people tend to call it reward hacking, but it’s again an insufficient conclusion.

Reward hacking happens when a model games the system by optimizing for whatever you're “measuring”, instead of what you actually wanted. That's because your measurement was only ever a rough proxy for the real goal.

For example:

You wanted working code, so you measured whether the tests pass. The model then just edits the tests to make them pass.

Or:

You wanted a task to be properly solved, so you measured whether the harness says “success.” The model figures out how to make the harness report success right away and quits before anything can go wrong. Reward hacking still describes something that happens “on the test itself”. But what Sol did was broader. OpenAI calls this “misalignment”.

The core misalignment comes from two things: being overly eager and reading instructions too generously. The model basically assumes anything is allowed unless it’s explicitly forbidden. In practice, this means Sol will work around whatever stands in its way. It takes destructive actions far outside what you asked for, and sometimes even misreports what it actually did. The unifying pattern isn’t “look something up.” It’s “get around whatever is between me and the goal.” The internet is just one obstacle it will bypass. So are permission boundaries, sandboxes, and even the truth about whether the task actually succeeded.

What misalignment looks like in practice

Most of the time, this behavior is relatively minor. The model might overstate its confidence or claim it fully finished something it only mostly completed. But the same underlying tendency can lead to much more serious problems like bypassing important security restrictions or deleting data that actually mattered.

Here are a couple of real examples from OpenAI’s own system card for GPT-5.6 Preview:

  • In one case, Sol was authorized to delete three specific machines but couldn't find those names in one namespace. Instead of stopping and asking for clarification, it substituted three different machines and deleted those, killing running processes and force-removing worktrees that held uncommitted work. It only acknowledged that work may have been lost and stopped after the user objected.
  • In another case, a job couldn’t access its files. So Sol went hunting through hidden credential caches, found stored access tokens, and copied them to another machine just to keep the job running. No one asked it to move credentials. It simply decided that finishing the task was more important than the rules in its way.

This is the deeper issue with misalignment. The model is wired to remove any obstacle between itself and “success.”

Overclaiming success and deleting the wrong machines are actually the same behavior. In both cases, the model treats obstacles as things to route around, rather than reasons to stop and ask. The milder versions of this happen all the time. The dangerous ones are rarer. But they come from the exact same underlying tendency. You can’t train a model to be cheerfully overeager on small things and then expect that overeagerness to magically know when to stop, especially when it reaches your production database.

Why models behave this way

This happens because of how these models are trained. Reinforcement learning simply rewards whatever you reward. It doesn’t understand what you “meant”. There’s no inner voice saying, “Technically that made the test pass, but that’s not really what they wanted.” There is only the reward signal. If a behavior earns reward and nothing actively punishes it, the model learns to do more of it whether or not you would have approved.

The model isn’t being sneaky or malicious with its own “consciousness”. It’s doing exactly what the training process told it to do. You might think the solution is to penalize the bad behaviors. The problem is you have to spot them in advance. And the number of ways a model can get around a restriction is basically unlimited.

Penalize editing the test? It exits the harness early. Penalize that? It overrides the equality check so every comparison returns true. Penalize that? It finds the next gap. You’re writing a finite list of “don’t do this,” while the model is searching a vast space of possibilities and it discovers new exploits faster than you can patch them.

What this means for product teams

So where does this leave you, if you build products rather than train models?

The comforting view is: In the real world, I just want the answer. I have tests, code review, and monitoring. As long as the final result works and my checks are green, I don’t care how the agent got there. This is mostly fine. Most agent behavior is okay most of the time. But it all rests on one risky assumption: that your checks can be trusted.

If your product is something agents actually use, the problem is worse. Your API becomes their environment, your error messages their feedback, and your docs their guide for success. Now they’re doing the same thing METR saw in the lab, except no one is watching.

As models improve at bypassing obstacles, aligned and misaligned runs look increasingly similar. You can’t tell from the output alone whether the model properly solved the task or just got around it. Right now Sol still cheats clumsily, so it gets caught. But future models will get better at delivering clean successes without raising alarms.

The uncomfortable question is: How much of what you already log as “success” is real and would you even know if it weren’t?

References