# Maybe benchmarks should be broken?

I asked GPT-5 mini to implement me a minimal git clone.[^br6aehdxth8][![](https://substackcdn.com/image/fetch/$s_!EK1_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b984538-9fad-475c-a546-e0a934e9d0eb_784x574.png)](https://substackcdn.com/image/fetch/$s_!EK1_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b984538-9fad-475c-a546-e0a934e9d0eb_784x574.png)

[full instructions here](https://gist.github.com/JonathanGabor/81dbb4c18eb0816c9bd006f425f2c4dd)

GPT-5 mini’s implementation passed the simple test cases[^w56t6qkp8qi] I had codex write, but upon closer inspection…

[![](https://substackcdn.com/image/fetch/$s_!0i3u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0b539a9-39cc-4656-bcb9-5b630e97473f_796x1156.png)](https://substackcdn.com/image/fetch/$s_!0i3u!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0b539a9-39cc-4656-bcb9-5b630e97473f_796x1156.png)

Two of these issues (#2 and #4) involve the agent explicitly violating task instructions.[^u0j6444s0m] These are easy to address; we can simply add new test cases to cover these requirements.

Another one (#1) seems like a defensible design choice.

But #3 presents us with a problem. It’s quite bad to allow files outside the repository to be committed and modified. However, no such requirement was mentioned in the task instructions.

Should we add a test case to ensure repository escape isn’t allowed?

If I were doing [an audit](https://www.lesswrong.com/posts/HzjssjeQqhf3kRw9r/every-benchmark-is-broken) of this task, I would judge such a test case as overly strict.[^wlk472l2q8j] Why? Because it would be unfair to penalize the agent for something not mentioned in the instructions.

But how would we fix *that*? We would add more detail to the instructions, specifying that writes outside the repo root should not be allowed.

But this results in a very weird sort of task, where every constraint and side effect and edge case is pointed out to the agent in advance, and the task becomes simple instruction following and implementation ability.

Which isn’t really the behavior we want to be measuring in a coding agent.

* * *

There’s a big debate about how much improvement by coding agents in benchmarks correspond to improvement in real world utility.

I think this case study helps explain some of the difference. In order to be “fair”, benchmarks give away many implementation details in the task descriptions. But to be truly useful replacements for software developers, agents would have to be able to come up with these details on their own.

We might be making progress! I ran GPT-5.2-codex [xhigh](https://x.com/josh_ai/status/1995684812234129618) a couple times on the task, using the updated test cases. It outperformed GPT-5-mini on average. Still, in 75% of runs, it allowed repository escape.

So I’d encourage benchmark creators *not* to include every specification in their task instructions, especially those that would be obvious to a human developer. Instead, we should see what assumptions agents fail to make on their own.

[^br6aehdxth8]: :) 

[^w56t6qkp8qi]: which it can’t see 

[^u0j6444s0m]: “checkout <branch> updates working tree files…to match the branch head commit snapshot.” and “diff compares the current working tree to the HEAD commit snapshot” 

[^wlk472l2q8j]: Note that in the audit I link, I only look for lenient tests, not strict ones. However, in other audits I will be publishing soon, I do mark tests as being too strict.