What It Is
Terminology · Source Verification · LLM Engineering · Language Models · AI · ExplainerTratopedia · 15 Aug 2026
Third of five · the outermost layer
Coined for a Text File. A Month Later It Meant Everything.
On 5 February 2026 Mitchell Hashimoto needed a name for a habit — fix the agent's environment every time it errs — and, finding none, called it harness engineering. What he meant by it was an instruction file and a couple of scripts. Thirty-three days later Vivek Trivedy attached the same phrase to everything that is not the model: the filesystem, the sandbox, the orchestration layer, the hooks. That is the sense the encyclopaedia carries today. Two men made two different contributions — one the name, one the definition — and the literature has been arguing about which of them coined it ever since. Meanwhile the practice itself had been published in full months before either.
The coinage, and the redefinition that swallowed it Thirty-three days apart. Everything after the second one restates it.
- 33days from the phrase being coined for a habit to it meaning everything around the model
- 2separate contributions — one the name, one the definition — mistaken for one dispute over credit
- 1comparison found that holds the model fixed and changes only the harness
- 0sources that reconcile the one disagreement left: whether this contains context engineering or sits inside it
Mitchell Hashimoto · 5 Feb 2026
“I've grown to calling this harness engineering”
- The whole of it: anytime you find an agent makes a mistake, you take the time to engineer a solution such that the agent never makes that mistake again.
- It comes in two forms, and that is the entire scope: an
AGENTS.mdwhere each line in that file is based on a bad agent behavior, and “actual, programmed tools” — scripts for screenshots and filtered tests. No sandbox, no orchestration, no runtime substrate. - He is reluctant about it: I don't need to invent any new terms here; if another one exists, I'll jump on the bandwagon. Nobody told him one would arrive in five weeks and take the word with it.
Vivek Trivedy · LangChain · 10 Mar 2026
Agent = Model + Harness
- His gloss: if you're not the model, you're the harness. Every piece of code, configuration and execution logic that is not the model itself — filesystem, sandbox, browser, orchestration, hooks.
- He is careful that this is a choice, not a fact: there are many messy ways to split the boundaries… but in my opinion this is the cleanest.
- Every definition after this one restates it, and none restates Hashimoto's. The drift is all in those 33 days.
Wikipedia · last edited 13 Aug 2026
“The software infrastructure surrounding a model”
- In full: what “manages tool use, memory, state persistence, execution environments and feedback loops, as opposed to the model's own reasoning.”
- Context engineering, more than a year older, still has no article of its own — it is a paragraph inside another entry.
- It also mis-dates one of its own sources by a year. See section three.
Zhong & Zhu · arXiv · 13 May 2026
“A runtime substrate”
- Their opening move: the dominant explanation locates this gap in model capability. We propose a different locus.
- Eleven component responsibilities and a four-level ladder, H0 to H3. Three of the eleven — failure attribution, entropy auditing, intervention recording — exist to judge a run afterwards rather than to make it work.
- Only the abstract was read here, so nothing on this page reports a result from the paper.
How firm is each of these? What was read, what is still missing, and what this page got wrong the first time.
| How firm | What | On what |
|---|---|---|
| Read at source | Agent = Model + Harness, and “if you're not the model, you're the harness” | Vivek Trivedy, LangChain, 10 Mar 2026, fetched at source |
| Read at source | Opus 4.6 in Claude Code scores far below Opus 4.6 in other harnesses on Terminal Bench 2.0 | Same post. The leaderboard itself was not read, and “far below” is not a number |
| Supplied, not fetched | The practice in full — initializer and coding agents, a 200-plus feature JSON, a progress file, init.sh — published 26 Nov 2025 | Anthropic, written by Justin Young. PDF supplied by djTratoh; anthropic.com returns 403 to this session |
| Supplied, not fetched | “The Codex harness” used as a settled, unglossed noun on 4 Feb 2026 | OpenAI, Celia Chen. PDF supplied by djTratoh; openai.com returns 403 |
| Read at source | Guides and sensors; computational and inferential; inner and outer harness — and that a user harness is a form of context engineering | Birgitta Böckeler, Thoughtworks, martinfowler.com, 2 Apr 2026 |
| Supplied, not fetched | Hashimoto coined the phrase on 5 February 2026, saying he knew of no accepted term — 33 days before the definition everyone now uses | “My AI Adoption Journey”, mitchellh.com. PDF supplied by djTratoh. Osmani's flat credit to Trivedy is wrong on the dates |
| Corrected | This page previously said Trivedy's post returned 404 and drew a conclusion from it. It never did. | The URL tried was guessed by this project, not taken from any source. The post has been at langchain.com/blog/… throughout |
| Corrected | Two lines were attributed here to Addy Osmani. “If you're not the model, you're the harness” is Trivedy's; the ratchet rule is Hashimoto's | Osmani introduces the first as “Viv's one-liner” and the second with “Roughly:”. His piece is a synthesis, and this project read it as a source |
| This page's reading | That the work was published before the word, and the word before the encyclopaedia, all inside nine months | Assembled from the dated documents. No source consulted says this |
Timeline
The practice, then the word, then the encyclopaedia Nine months from a full published method to a Wikipedia entry.
- Oct 2022The loop, as a paper. Yao and colleagues publish ReAct, which has a model alternate between reasoning and acting. Every harness since runs that cycle: the model reasons, the harness acts and captures what happened, the model reads the result.
- Feb 2023Tools, as a paper. Toolformer shows a model can teach itself to call external tools. Wikipedia names it, with ReAct, as the mechanism that predates the term.
- Dec 2024The idea, without the word. Anthropic argues the agent–computer interface deserves as much investment as the human–computer interface, and that a tool definition should be shaped so the model cannot easily use it wrongly.
- 26 Nov 2025The whole practice, published. Anthropic's Justin Young writes up long-running agent harnesses: an initializer agent that lays down
init.sh, a progress file and a first commit; a coding agent that does one feature per session and leaves the repository clean. The feature list is JSON rather than Markdown because the model is less likely to overwrite it. The word “harness” appears throughout as an ordinary noun. Nobody has named the discipline yet. - 23 Jan 2026The noun is already ordinary at a second lab — and it needs no defence. OpenAI's Michael Bolin, writing up how the Codex agent loop works, offers the word in passing: we hope this post gives you a good view into the role our agent (or “harness”) plays in making use of an LLM. A parenthesis, as the plainer of two names for the same thing — two weeks before anyone named the discipline.
- 4 Feb 2026And by now, no gloss at all. OpenAI's Celia Chen writes that the web app, the CLI, the IDE extension and the macOS app are “all powered by the same Codex harness—the agent loop and logic that underlies all Codex experiences.” The parenthesis is gone. It is simply the word for that thing.
- 5 Feb 2026The phrase is coined, one day later, by someone who did not want to coin it. Mitchell Hashimoto, writing up his own adoption of AI tooling, reaches step five — Engineer the Harness — and needs a word: I don't know if there is a broad industry-accepted term for this yet, but I've grown to calling this “harness engineering.” He adds: I don't need to invent any new terms here; if another one exists, I'll jump on the bandwagon. What he means by it is an
AGENTS.mdand a few scripts — every line in the file earned by a bad agent behaviour he has actually seen. - 10 Mar 2026The word is taken, and made enormous. Vivek Trivedy of LangChain publishes The Anatomy of an Agent Harness, defines Agent = Model + Harness, and derives each component backwards from a behaviour: filesystems for durable state, bash for autonomy without pre-built tools, sandboxes for somewhere safe to act. Thirty-three days after the coinage, the same phrase now covers everything that is not the model. This is the post every later source cites, and the definition none of them changes.
- 2 Apr 2026The user's side gets a shape. Birgitta Böckeler of Thoughtworks splits the harness into guides that steer before the agent acts and sensors that observe after, each either computational or inferential. In a sidebar she writes the sentence that puts her at odds with everyone else: a user harness is a specific form of context engineering.
- 13 May 2026It becomes a research programme. Hailin Zhong and Shengxin Zhu post a sixteen-page formalisation to arXiv: eleven component responsibilities, a four-level ladder from H0 to H3, and a proposal to judge an agent run by the evidence it leaves rather than by whether a patch appeared.
- 15 May 2026The practice gets its one-line rule. Addy Osmani, on O'Reilly Radar: anytime you find an agent makes a mistake, you take the time to engineer a solution such that the agent never makes that mistake again. He credits Trivedy with the coinage.
- 17 Jun 2026A vendor draws the boundary. Databricks publishes an explainer with eight building blocks, seven failure modes, and a table placing the three disciplines in a hierarchy: prompt and context engineering both live inside harness engineering.
- 13 Aug 2026The encyclopaedia catches up — five months after the naming. Wikipedia's Agent harness article is last edited, with a section conceding that nobody is sure who named it, and a citation that dates Anthropic's November 2025 post to 2026.
The Argument
Who named it, and one disagreement still open The credit question has an answer. The boundary question does not.
The first thing to say is what is not contested, because it is unusual for this series. Trivedy's March definition is used unchanged by Wikipedia, by Databricks, by the awesome list and by Osmani. Three independently compiled component lists — eight items, eleven, twelve — differ in how finely they cut and nowhere contradict each other. After two articles about words that meant different things to different people, this one is stable.
What is contested is the boundary. Databricks is explicit: prompt and context engineering both live inside harness engineering. The harness is the system around the model; prompts and context are pieces of that system. Wikipedia agrees, saying the harness “designs the whole operational environment and contains the other two as parts”. Böckeler, in a sidebar headed with exactly this question, says the opposite: engineering a user harness for a coding agent is a specific form of context engineering. Same two words, opposite nesting.
This is not one source failing to notice another. Wikipedia cites Böckeler six times — she is its most-used reference — and still states the nesting she rejects. There is a plausible reconciliation: she is writing explicitly about coding agents, where the inner harness ships with the tool and the only harness a user builds is assembled out of instruction files and context. Under that reading the two describe different scopes and both are right. But no source says so, and this page will not invent a consensus nobody published.
The second thing worth saying is about the paper trail itself. Wikipedia's citation for Anthropic's harness post dates it to 2026. The document says 26 November 2025. That is not a small slip: the whole interest of that post is that it predates the naming, and a citation putting it in 2026 erases exactly the fact that makes it worth reading.
This page made a worse error in the same direction, and it is corrected above rather than quietly dropped. The first version reported that Trivedy's post — the founding document — returned 404, and drew a conclusion from it: that a discipline premised on maintained environments had let its own record rot. It was a good line and it was false. The URL that 404ed had been guessed by this project rather than taken from any source; the post has been where it always was. A negative result about a URL you constructed yourself is a result about your guess, not about the world. The same habit — reading the summaries before the source — is why Trivedy's best-known sentence was attributed here to the man quoting him.
On who named it, the answer turns out to be plain once you read both posts. Wikipedia calls the attribution contested and Osmani credits Trivedy flatly, but Hashimoto's post is dated 5 February 2026 and says, in as many words, I don't know if there is a broad industry-accepted term for this yet, but I've grown to calling this “harness engineering.” That is a coinage, and a reluctant one — he adds that he would rather adopt an existing word if one turned up. Trivedy's post is 10 March, thirty-three days later.
So the two men made two different contributions, and the literature collapsed them into one argument about credit. Hashimoto supplied the name. Trivedy supplied the definition — and what a definition: a word coined for keeping an instruction file tidy now covers the filesystem, the sandbox, the orchestration layer and the hooks. Every later source uses Trivedy's sense. None uses Hashimoto's, which survives as a single line item inside the thing that took its name.
What Others Add
What you actually build Böckeler gives the shape; Anthropic gives the worked example.
- 1Put guides in front of the agentFeedforward controls: instruction files, skills, code mods, a bootstrap script. They anticipate the behaviour you do not want and steer before the agent acts. A harness with only these never finds out whether its rules worked.
- 2Put sensors behind itFeedback controls: tests, linters, type checkers, a reviewing agent. Böckeler's sharpest point is that a sensor should write for its reader — a linter message that tells the model how to fix the thing is a positive kind of prompt injection. A harness with only these repeats its mistakes.
- 3Know which of the two kinds you are usingComputational controls are deterministic and fast — tests, linters, structural analysis, milliseconds to seconds, reliable. Inferential ones are semantic — AI review, “LLM as judge” — slower, dearer and non-deterministic. Cheap computational sensors can run on every change; inferential ones have to earn their place.
- 4Write the state down where the model will not eat itAnthropic's worked example is the most concrete advice found anywhere: a feature list of 200-plus end-to-end descriptions, all starting as failing, that agents may edit only by flipping a
passesfield. It is JSON rather than Markdown because the model is measurably less likely to overwrite JSON. Plus a progress file and a git commit at the end of every session. - 5Ratchet every mistake into a ruleHashimoto's rule — the sentence the term was coined for, and the closest thing this field has to a method: treat mistakes as permanent signals, not bad runs to retry. Each earns a line in the instruction file, a check in the pre-commit hook, a flag in the reviewing agent. You only add a constraint once you have seen a real failure — which keeps the harness from growing rules nobody needed.
Does any of it work? The evidence, graded Two of these hold the model still. One does not.
| The claim | How it was measured | What it is worth |
|---|---|---|
| Terminal Bench 2.0 | Opus 4.6 in Claude Code scores far below Opus 4.6 in other harnesses. Same model, different harness | The right shape. The variable under test is the only one that changes, and the leaderboard belongs to neither party. Reported by LangChain, which sells a harness library — but the board is not theirs, and “far below” is not a number this page could check |
| Top 30 → Top 5 | LangChain moved its own coding agent up the same leaderboard “by only changing the harness” | Same shape, self-reported. A public leaderboard makes it checkable in principle, which is more than most claims here manage |
| OfficeQA Pro | 52.63% with GPT-5.5 and the harness, “up from 36.10% with GPT-5.4” | Does not isolate the harness — the model changed in the same step. And “cutting errors nearly in half” does not follow: 63.90% to 47.37% is about a quarter |
The comparison in the first row is the one that matters, and it is worth being precise about why. Every source in this article asserts that the harness is as important as the model or more; most of them are selling something. An assertion from an interested party is weak evidence. A comparison that holds the model fixed and varies only the harness is not an assertion at all — it is the experiment the claim requires, and Terminal Bench 2.0 is a public board rather than an internal one. That the party reporting it also sells a harness library does not make the design wrong; it means the number should be read off the leaderboard rather than off the blog, which this page has not done.
Set beside it, Databricks' number is the shape of evidence rather than evidence. It upgrades the model in the same step as the harness, so nothing in it separates the two contributions — and its own stated conclusion overstates its own figures. The vendor arguing hardest that the harness matters has the weaker measurement of the two.
The most interesting thing in the material, though, is an argument against the field, made by the person who defined it. Trivedy's closing section says plainly that as models get better at planning, self-verification and long-horizon coherence, work now done by the harness will be absorbed into the model — “that suggests harnesses should matter less over time”. He thinks the discipline survives anyway, on the same grounds prompt engineering did. But he says the quiet part, and none of the sources restating his definition repeat it.
He also names a problem the enthusiasm tends to skip. Coding agents are now post-trained with their harnesses in the loop, so models “become more capable within the harness they were trained in” — and changing a tool's logic can make a model worse at using it. He calls that overfitting, and is right to: a truly intelligent model should have little trouble switching between patch methods. Which means some of what a harness buys you is not general capability but fit to one training run.
Conclusion
What to take from this Five things, in the order they matter.
A word can change size faster than it changes meaning
Hashimoto coined “harness engineering” on 5 February 2026 for a habit with two tools: an instruction file, and a couple of scripts. Trivedy took the same phrase on 10 March and attached it to everything that is not the model. Nobody disputed either; the second simply displaced the first. Prompt engineering's scope narrowed, context engineering's inverted, and this one swelled — three words, three different ways of not meaning what they used to.
One comparison is worth four assertions
Four sources say the harness matters as much as the model; all four have something to sell. One comparison puts the same model in different harnesses and finds a large gap on a leaderboard belonging to neither party. That comparison is the reason to take the field seriously, and it is worth more than the assertions put together — including the vendor benchmark that changes the model in the same step and then overstates its own arithmetic.
The work came first, by a comfortable margin
Anthropic published a complete long-running agent harness — initializer agent, feature list, progress file, clean-state discipline — on 26 November 2025, three and a half months before anyone named the discipline. OpenAI was using “the Codex harness” as unremarkable vocabulary by 4 February 2026. The name did not create the practice; it caught up with it.
Ask which nesting someone means
The definition is settled; the boundary is not. Databricks and Wikipedia put prompt and context engineering inside harness engineering. Böckeler — whom Wikipedia cites more than any other source — says a user harness is a form of context engineering. Both readings are in print, neither is reconciled, and a claim about scope means different things under each.
Read the source, not the summary of it
Four things on this page have been corrected, and three had one cause: a well-made summary was read before the documents it summarises, and its quotations were taken for its own claims. That produced two misattributed sentences and one repeated credit that the dates contradict. Wikipedia, meanwhile, mis-dates this field's most important precursor by a year. Every one of these is the kind of error a reader who opens a single primary source catches immediately.