Skip to content

Why Harness Engineering Exists as a Discipline

Before you start

Prerequisite: Lessons 01-03, the executive's diagnostic: the harness-vs-model distinction, the five warning signs, and the staged-autonomy pattern. This lesson opens the engineer's path and assumes you already accept that the harness, not the model, decides most outcomes. After this lesson, you can: name the six categories production agent failures sort into, state the four foundational harness patterns from memory, and place a human-in-the-loop gate correctly using the cost-of-wrong-vs-cost-of-asking matrix.

The bottleneck moved, and most teams haven't noticed

Here's a question worth sitting with before you write another prompt: if your agent project is underperforming, is the model the problem, or is it everything you built around the model?

Most teams still reach for the first answer. Swap in a newer model, tighten the system prompt, add a few more examples. For two years that was often the right move. It isn't anymore, and there's a name for the layer that changed: harness engineering.

An agent is the model plus memory, tool calling, and planning (Claude Code, OpenAI's Codex, OpenClaw). A harness is the operator-level layer you build on top of someone else's agent: your CLAUDE.md or AGENTS.md, your slash commands, your validators, your manifests, your own rules. A sovereign agent is a specific kind of agent, always-on, state on disk, crash recovery, credential isolation, running without supervision; Claude Code and OpenClaw both qualify. Harness engineering is the discipline of designing that operator-level layer well. For the rest of this course, "harness" means that layer: not the model, not the prompt, everything else.

The shift traces cleanly over eighteen months. 2023–2024 was prompt engineering: how do I phrase the request? 2024–2025 was context engineering: what tokens does the model actually see? 2025–2026 is harness engineering: how is the whole system around the model designed? Each shift happened because the previous lever stopped moving the number. Frontier models are good enough for almost everything this course covers. The bottleneck isn't the model. It's the system around it.

Two data points, both published, both recent

Two facts anchor everything else in this course.

In February 2026, LangChain moved their deepagents-cli from 52.8% to 66.5% on Terminal-Bench 2.0 (from Top 30 to Top 5 on a public leaderboard) without changing the underlying model, per LangChain's own published report from that month. Harness changes only: how work was structured, verified, and handed off. Fourteen percentage points of leaderboard movement, zero model swaps. (Leaderboard figures shift as benchmarks get re-run and models update; treat the exact numbers as point-in-time and the harness-not-model conclusion as the durable part.)

In the same month, Anthropic published a separate finding: pure infrastructure choices (CPU and RAM allocation, nothing about the model) swing benchmark scores by plus or minus six percentage points, per Anthropic's own report. That's larger than most of the gaps you'll see between competing frontier models on a leaderboard, and, like the LangChain figure above, this is a point-in-time published number rather than a permanently fixed one.

Take those two facts together and two conclusions follow. First, most of the engineering leverage in an agent project sits in the harness, not the model. Second, a fair amount of what you read on public leaderboards is partially noise: infrastructure noise, harness noise, not a clean measure of model capability. Neither of these is a hot take. Both are published, from two different organizations, in the same month.

Where agent project failures actually originate

The term isn't settled, and that's worth saying plainly

"Harness engineering" is having a vocabulary moment right now, and it's worth naming that three adjacent conversations are using the same phrase to mean genuinely different things. Flattening them into one definition would cost credibility with anyone who has actually read the source material, so here they are, kept separate, credited by name.

Mitchell Hashimoto coined the term in a personal blog post roughly six months before this course was written. OpenAI picked it up in their February 2026 flagship report on shipping a million lines of agent-authored code. Anthropic, LangChain, and Thoughtworks now use the same framing.

Within that framing, three practitioners mean three different things:

WhoWhat they mean by "harness"AudienceArtifact
Ryan Lopopolo, OpenAIStructuring a codebase so coding agents can ship production code — skills, lint rules doubling as prompts, reviewer sub-agents, build systems kept fast so the agent's inner loop stays tightEngineering teams using AI to write softwareA codebase agents can drive
Dex Horthy, 12-Factor AgentsManaging context windows in coding-agent workflows — research/plan/implement as separate phases, sub-agent decomposition, staying out of what he calls the dumb zoneEngineers using AI in brownfield codebasesA working coding-agent loop
This courseBuilding agent-powered products that ship inside organizations — manifests, validators, citation discipline, eval suites, audit trails, human-in-the-loop designProduct and AI engineers shipping agents to customers and internal usersAn agent-powered application

These three conversations are converging on the same primitives (manifests, sub-agents, traces, validators) even though they start from different problems. This course borrows two specific failure modes from Lopopolo and Horthy below, and credits each by name every time, because conflating three practitioners' distinct work into one undifferentiated "harness engineering" is exactly the kind of flattening this lesson is arguing against.

Six ways agents actually fail

If the harness is where the leverage lives, it's also where the failures live. Across production agent work, almost every failure sorts into one of six categories.

CategoryExample failureWhere it bites
Hallucinated contentAgent invents a CEO, a clause, a transaction, a citationResearch, document AI, decision support
Lost provenanceOutput is right but undefendable — no one can say where it came fromAnywhere a stakeholder asks "show me your sources"
Loop pathologiesAgent forgets early instructions, wastes context, gets trajectory-poisoned by reviewersLong-running agents, human-AI review loops
Integration brittlenessAn upstream field gets renamed, the agent silently drops work, schema drift goes unnoticedProcess integration, document pipelines
Trust failuresCalibration drift, automation bias, permission leaks, hallucinated authorityDecision support, copilots, regulated industries
Operability failuresThe system works while you maintain it, rots six months after you leaveEvery project that ships and is then forgotten

This catalogue is the spine of the rest of this course. The archetype lessons that follow (research and synthesis, process integration, decision support) aren't a different topic from this taxonomy. They're the dimension along which it gets organized: each archetype experiences these six failures differently, and the harness patterns that defend against them carry across all three.

Four patterns worth naming once

Four patterns recur across every archetype in this course. Naming them here means the later lessons can reference them without re-explaining.

Ticket and manifest

Every unit of work produces an explicit, structured artifact: state, evidence, decisions, sources, all captured. No manifest, no success. This is the single highest-leverage pattern in harness engineering, and it's what makes work auditable, resumable, and defensible after the fact.

Summary, not raw output

Agents pass summaries to each other; raw output goes to the audit log, not into the next agent's context. Skip this and context windows fill with noise, and reasoning quality degrades along with it. The manifest holds what matters; the trace holds everything.

Human-in-the-loop at the right altitude

Humans gate where being wrong is expensive and asking is cheap: not everywhere (humans become the bottleneck) and not nowhere (a catastrophic failure slips through unreviewed). Where exactly is an architectural question, and it's different per archetype, which is why the cost-of-wrong matrix below exists.

Build the harness before the model

Manifest schema, verifier, trace logging, approval flow: all defined before the first prompt gets written. The model is interchangeable. The harness is the project.

"No manifest, no success" is a rule about shape, not content. Every archetype in this course fills the same four fields differently, but the contract never changes: a value (or an explicit unknown), a confidence level, a source, and a note.

yaml
# The shape every manifest field follows, regardless of archetype
field_name:
  value: <the extracted value, or explicitly "unknown">
  confidence: high | medium | low | unknown
  sources:
    - url: "<where this came from>"
      accessed: "<timestamp>"
  notes: "<anything the verifier or a human reviewer needs>"

unknown is a first-class value here, not a placeholder for one. An agent that can say "I couldn't find this" and have that count as done is an agent that has no incentive to invent a plausible-sounding answer instead. The archetype lessons ahead show this schema filled in for real (a research entry in lesson five, a work item in lesson six, a case file in lesson seven), but the contract above is what stays constant underneath all three.

Where the human goes: the cost-of-wrong matrix

Once you accept that humans need to be in the loop somewhere, the next question is exactly where. The framework is a simple two-by-two: cost of being wrong against cost of asking a human to check.

Cost of wrongCost of askingWhat to do
HighLowAlways gate — committing money, sending external comms, regulatory decisions
HighHighGate but design for fast review — concise summary, one-click approve
LowLowSample-based review — 5–10% audited, AI runs on the rest
LowHighLet AI run, log everything — internal classification, low-risk routing

Three failure patterns show up when teams get this placement wrong. Approve everything, and the human becomes a bottleneck who eventually starts ignoring the queue, so the AI effectively stops working because nothing ships. Approve nothing, and the AI eventually does something stupid unsupervised, trust collapses, and the project gets killed. Approve the right things, the goal, and the AI runs autonomously on low-stakes work while escalating what actually needs a human.

This matrix comes back three times in this course, in three different shapes. In the research-and-synthesis lesson, it governs which manifest fields get flagged for human review. In process integration, it governs the per-case approval gate. In decision support, most cases land in the top-left cell (high cost of wrong, low cost of asking), which is why that archetype gates by default rather than by exception.

Two loop-shape failures that aren't about the model

Once humans are regularly reviewing agent output, two failure modes appear that have nothing to do with the model being wrong. They're about the shape of the loop itself. Both are documented by practitioners shipping coding agents at scale, both have a stated countermeasure, and both come back in later lessons of this course.

Trajectory poisoning — named by Dex Horthy

The agent acts. The reviewer rejects. The agent acts again. The reviewer rejects again. The conversation history now contains a pattern (agent attempts, human rejects) and a model is a next-token predictor reading that same history. It picks up the pattern and starts producing what it predicts will be rejected, because that's what the trajectory has trained it to expect. Quality collapses, and it isn't from incompetence. It's from learning the wrong lesson.

Countermeasure: every unit of work gets a fresh session. The agent never sees its own rejected attempts. The trajectory stays clean.

The bullied agent — named by Ryan Lopopolo

The reviewer raises minor concerns. The agent over-responds: adds disclaimers, scopes the work up, second-guesses judgments the evidence actually supports. In the worst case, it capitulates on positions it should have defended. Lopopolo describes this happening at OpenAI with one Codex instance authoring and another reviewing: the author over-responds, scopes up the change, sometimes never converges.

Countermeasure: give the agent explicit permission to defend its analysis. Reviewer comments arrive with a priority: P0, P1, P2. The agent must acknowledge every comment but is only obligated to act on P0s and P1s; P2s become tickets for later, and the agent isn't required to capitulate on them or on cases where the evidence holds.

Both of these are shape-of-the-loop problems, not model-quality problems, and both will show up again in this course with archetype-specific consequences. In decision support especially, the bullied agent is more dangerous than it looks, because it quietly breaks calibration, a topic that lesson covers directly.

Quick check — A team upgrades to a newer frontier model and their agent's production failure rate barely moves. What does the Feb 2026 evidence in this lesson suggest they should look at first?

What this buys you, and what skipping it costs

Do this well and four things follow. You catch failures early, because the verifier exists from day one instead of being bolted on after an incident. You can hand the project to someone else, because the artifacts (manifests, traces, validators) are legible without you standing over them. You can defend your output, because every claim carries provenance in the trace. And the system keeps working after you leave, because it was built on boring tools and a written runbook rather than tribal knowledge.

Skip it, and the failure mode is familiar: something that works beautifully in the demo and breaks in production, in ways nobody can fully explain, that rots within six months of whoever built it moving on.

The rest of this course applies this exact vocabulary (the six failure categories, the four patterns, the cost-of-wrong matrix, trajectory poisoning and the bullied agent) to three specific project shapes. Research and synthesis first, because it's the cleanest place to see the harness primitives in isolation. Then process integration, which adds live infrastructure and review loops. Then decision support, where the stakes are highest and every claim needs to survive a challenge.

Continue to Lesson 05

Archetype A: research and synthesis agents, and the single decision in week one that determines whether the other four weeks are execution or damage control.

Have a question about this lesson?

Reply here and it goes straight to Rod. Same as replying to one of his emails.