26

Harness Over Model

You control the harness far more than the model. Why the fundamentals that worked for thirty years still win in the agent era.

Two things you're actually working with

Every session with Claude Code has two separate parts, and it's easy to conflate them. There's the model — the reasoning engine, upgraded by Anthropic on their schedule, out of your hands. And there's the harness — the repo, the docs, the tests, the guardrails, the prompts. That's yours.

The thesis

You control the harness far more than you control the model. Model quality is a rising tide that lifts every user equally — you didn't earn it and you can't direct it. Harness quality is the one lever that's entirely yours, and it's what actually separates people getting real leverage from people stuck re-prompting the same broken task all week.

A faster engine in a bad car is still a bad car

Think of the model as the engine and the harness as everything else — chassis, tires, the pit crew, the track itself. A new engine drops in every few months (Sonnet, Opus, whatever ships next) and every driver on the road gets it at the same time. It's not a competitive edge; it's a floor that keeps rising under everyone.

M
Model improvements are borrowed

They arrive for free, apply to every user equally, and you have zero say in when or how much. Betting your whole workflow on "the model will just get smarter" is betting on someone else's roadmap.

H
Harness improvements are owned

A clearer CLAUDE.md, a test suite that actually catches regressions, an interface that hides complexity instead of leaking it — these compound. They make every future session better, on any model, and nobody can take them back.

Why this matters right now

When an agent does something wrong, the instinct is to blame the model and re-roll the prompt. Often the real bug is in the harness — an unclear instruction, a missing test, a file the agent never should have been allowed to touch. Fix the harness once and the failure mode is gone for good, on every model you ever swap in.

Nothing here is new — that's the point

Look at what actually makes a harness good, and none of it is AI-specific. It's the same discipline software engineers have argued for since before language models existed. Version control. Tests. Clear interfaces. Small diffs. Written-down context. The agent era didn't invent these — it made skipping them expensive again.

Tests

A test suite is a harness the agent can't argue with. It either passes or it doesn't — no persuading, no confident-sounding wrong answer gets through.

Version control

Commits, branches, reflog. The full undo ladder means you can let an agent work fearlessly, because nothing it does is unrecoverable.

Deep modules, clear interfaces

Ousterhout's strategic-programming idea from decades ago. A codebase with clean seams lets a cheaper, dumber model still do good work in it — the interface does the thinking a smarter model would otherwise have to.

Written-down context

Docs, ADRs, a CONTEXT.md. This used to be "for the next engineer." Now the next engineer might read it in eleven seconds and act on it immediately — the payoff arrived faster, the practice didn't change.

Small, reviewable diffs

A change you can actually read end to end is a change you can actually verify. Agents will happily produce a 2,000-line diff if you let them — the discipline of keeping changes small was always yours to enforce.

Debugging methodology

Reproduce, isolate, form a hypothesis, test it. An agent that guesses randomly at a fix is doing what an undisciplined human does — the fundamentals fix both.

You've already been building this harness

This isn't abstract — you can point at the harness pieces already sitting in this workspace. Each one is exactly the "fundamentals that still win" idea, wearing a Claude Code costume.

CLAUDE.md
git (restore / reset / reflog / worktree)
/verify skill
tests + typecheck before commit
CONTEXT.md / domain docs
loop guardrails (budget caps, dead-letter)
Written instructions the agent reads before it acts — the interface between you and it
The undo ladder — lets you and the agent experiment without fear of losing work
A step that actually exercises the change instead of trusting a claim that it works
The gate that decides whether a change is real, before it ships
Domain language written down once, read by every future session instead of re-explained every time
Rails that stop an unattended agent from spending or breaking more than it should
None of this required a smarter model

Every one of those existed as good practice for engineers working alone, long before any of this. Adding an agent to the loop didn't change what "good" looks like — it just made bad practice fail louder and faster, and good practice pay off sooner.

The question to ask when something goes wrong

Next time an agent does something dumb, resist the reflex to just re-prompt harder or switch models. Ask instead: is this a model problem, or a harness problem? Almost every time, it's the harness.

1
It reused the wrong pattern

Harness problem. There was no test forcing it to notice the mismatch, or no doc telling it which pattern is current.

2
It touched a file it shouldn't have

Harness problem. Nothing in the setup constrained scope — no permission boundary, no explicit instruction about what's off-limits.

3
It claimed success without checking

Harness problem. There was no verify step, no test, nothing forcing a real check before the claim.

4
It genuinely misunderstood a hard, well-specified problem

The rare true model problem. Everything else on this list, fix the harness first — it's cheaper, it's permanent, and it works on whichever model you're running next month.

Model or harness?

Three situations. Diagnose where the real fix belongs.

Scenario

An agent says "done, tests pass" — but you check and the tests were never actually run.

What's the real fix?

Scenario

You have an hour to spend improving how well agents work in a messy module.

Which gives more durable leverage?

Scenario

A junior dev asks why "harness engineering" — tests, docs, clean interfaces — suddenly matters so much in the agent era.

The most accurate answer?

Your move

Pick one repo you work in with agents. Find the last time one of them did something wrong, and ask the diagnostic question from Screen 5: model problem or harness problem? Fix the harness gap — a test, a doc, a boundary — and it stays fixed no matter which model you're running next month.