The prompt was never the problem

The author spent about three weeks stuck in a familiar loop, running a coding agent on Opus 5.5 to maintain a small service and opening the repo each morning to the same mess. A finished feature with failing tests. A config file edited that was never mentioned. One overnight run that retried a dead API call 41 times before the budget cap killed it. The fix everyone reaches for did nothing.

"I kept rewriting the prompt. The prompt was never the problem," the author wrote.

The realization was that Opus 5.5 was already capable of far more than the setup let it show, and the thing holding it back was the environment around it.

The experiment

To test that, the author ran 20 real tasks twice, same model, same base prompt, same machine. Run A was a bare prompt dropped into the repo. Run B added a harness built over a single weekend: a short contract per task with a "done when" line, a 40-line map file instead of a wall of docs, a test gate before anything counted as finished, a retry cap of three, and a rules file for what the agent could touch. The gap was large. Tasks accepted without any human edits went from 8 of 20 to 16 of 20. Runaway retry loops went from five to zero. The average cost per accepted task dropped from about $4.10 to roughly $1.60, and daily babysitting fell from around two hours to about 25 minutes. The 41-retry night never repeated once a cap of three was in place.

Why Your AI Agent Keeps Failing on Opus 5.5 Is the Harness, Not the Model - Logiciel Solutions Read more: Why Your AI Agent Keeps Failing on Opus 5.5 Is the Harness, Not the Model

The evidence is public too

This is not just one person's weekend. LangChain moved its own coding agent from 52.8% to 66.5% on a benchmark called Terminal Bench 2.0, a jump from outside the top 30 into the top five, by changing only the system around the model: prompts, tools and middleware. OpenAI described an experiment where three engineers drove roughly 1,500 pull requests into a repository where every line was written by Codex. When progress stalled early, the diagnosis was not that the model was too weak. It was that the environment was underspecified, and the engineers' job shifted from writing code to designing environments and feedback loops. The same lesson keeps turning up: the leverage sits in the system, not the model.

What a harness actually is

The guide boils it down to a simple equation. An agent is the model plus the harness. The model reasons and proposes the next action. The harness decides what it gets to see, which tools it can touch, what it remembers between sessions, what counts as "done," what it is forbidden to do, and what happens when something breaks. The practical fixes follow from that. Write a contract with a "done when" line so finishing is checkable. Give the agent a map, not a manual. Make evidence, usually a test script, the gate for completion, and let a separate verifier try to break the work rather than bless it. Put permissions outside the model, so a closed lane stays closed instead of resting on a sentence. Cap retries and classify failures instead of paying for the same mistake nine times. Keep decisions in a state file, not the chat. And turn every repeated mistake into a lint rule, so the environment remembers the lesson and the model does not have to.

Why it matters

This is now the third harness guide to go viral in a matter of weeks, and the message keeps hardening. Models change every few months, but the contracts, tests, maps and permissions you build around them stay, and every failure you convert into a check makes the next run better. The guide ends on one honest caveat worth keeping. Parts of any harness exist only to patch what today's models are bad at, so as the models improve, some of that scaffolding turns into dead weight and should be pruned. Start smaller than you think, it says, and add a layer only once you have actually watched the failure it prevents.