Fetching from the wire…
Public story · 2026-08-17 · high
Fowler, Osmani and LangChain converge on the same five-layer definition, built around one hard rule: models never call tools directly.
Why now: Four independent sources land on the same term and definition in the coverage dated August 17, a sign the vocabulary has settled rather than one blogger coining it.
Harness engineering has consolidated into a named third phase of agent design, after prompt engineering and context engineering, per Martin Fowler.
The shift matters because it turns a vague goal, "make the agent reliable," into five checkable layers. Those layers are tool orchestration, verification loops, context and memory, guardrails, and observability, per Fowler's write-up.
The term didn't stay Fowler's alone. He traces the same five-layer idea through Addy Osmani's writing and into LangChain's shorthand, Agent = Model + Harness, with an arXiv study behind it too.
The operating principle behind the label traces to Mitchell Hashimoto, who put it this way: "anytime you find an agent makes a mistake, you take the time to engineer a solution so that the agent never makes that mistake again."
One design rule falls out of that directly: never let the model call a tool. Instead the model returns a structured tool call. The harness checks it against a schema, checks permissions, runs it, and feeds the result back.
For builders, that's the checklist. Put a schema between the model and every tool call, check permissions first, then log each step. Skip any of those and you haven't done harness engineering, whatever you call your agent loop.
Each link below shares sources, entities, or timing with this story.
Addy Osmani uses LLM / Shared entities / Same source / Shared topic / Earlier coverage
Linked by a graph relationship (Addy Osmani uses LLM); both cover Agent, Harness, LangChain, Model; cite the same source (Martin Fowler).
Addy Osmani built by Claude Code / Shared entities / Same source / Shared topic / Earlier coverage
Linked by a graph relationship (Addy Osmani built by Claude Code); both cover Agent, Harness, Martin Fowler, Model; cite the same source (Martin Fowler).
Addy Osmani uses LLM / Shared entities / Shared topic / Earlier coverage / Tension
Linked by a graph relationship (Addy Osmani uses LLM); both cover Harness, Model; overlapping topics (agent, context, engineering, harness, model).
Addy Osmani uses LLM / Shared entity: LangChain / Shared topic / Earlier coverage
Linked by a graph relationship (Addy Osmani uses LLM); both cover LangChain; overlapping topics (against, agent, context, design, tool).
Addy Osmani uses LLM / Shared entities / Same source domain / Shared topic / Earlier coverage
Linked by a graph relationship (Addy Osmani uses LLM); both cover Agent, Martin Fowler; reported by the same outlet (martinfowler.com).
Addy Osmani uses LLM / Shared entity: LangChain / Shared topic / Earlier coverage / Tension
Linked by a graph relationship (Addy Osmani uses LLM); both cover LangChain; overlapping topics (agent, context, tool).
LangChain released Managed Deep Agents / Shared entity: LangChain / Shared topic / Earlier coverage
Linked by a graph relationship (LangChain released Managed Deep Agents); both cover LangChain; overlapping topics (agent, context).
Addy Osmani works at Google / Shared entity: Addy Osmani / Shared topic / Earlier coverage
Linked by a graph relationship (Addy Osmani works at Google); both cover Addy Osmani; overlapping topics (addy, agent, engineering).