01 · Opening

The model is not the problem

The harness around the model decides what the model can do.

20 minutes. Engineers and leadership.

01 · Opening

It works in the demo. Then it meets our repo.

01

The demo

  • Clean prompt
  • One file
  • The happy path
02

Our reality

  • A large repo
  • House conventions
  • Flaky tests
  • Real users
What breaks half-done features declares victory early no way to check it lost context

01 · Opening

The harness is the product.

A harness is the loop, tools, context, memory, evals and guardrails around a model.

01

What a harness is

02

Why agents fail

03

The evidence

04

Building the team

02 · Anatomy

Six parts, one job.

loop — the turn cycle

Model call, tool run, observation, repeat. It ends when the model stops or a turn limit fires.

02 · Anatomy

One turn, in order.

01

Assemble context

Task, rules, memory, last result.

02

Model call

One action at a time.

03

Pick tools

Name, arguments, intent.

04

Execute in sandbox

Inside the boundary.

05

Read observation

Output, exit code, error.

06

Compact and repeat

Trim, then next turn.

The last observation becomes the next turn's first input.

02 · Anatomy

The harness sits between model and world.

REAL WORLD repo code and docs terminal shell and build tests pass or fail user asks and reviews services APIs and data CI runs the suite THE HARNESS context builder assembles the prompt tool router maps calls to runs sandbox bounds execution memory reloads what lasts evals scores every change guardrails stops before harm the model no memory, no hands
01

The world supplies raw state.

02

The harness builds the turn.

03

The model returns one next step.

03 · Why they fail

Four ways a good model fails.

Symptom

Sharp early. Deep into the run, it contradicts its own decision.

Cause

Every token competes for attention; recall fades as the window fills.

Harness fix

Compact the history, clear stale tool output, load files on demand.

03 · Why they fail

Same task. Two harnesses.

One tool. No scope, no check, no exit condition.

// the whole interface: one tool, no rules
{
  "name": "shell",
  "description": "Run any command.",
  "input_schema": { "command": "string" }
}

// loop: run it, append output, repeat until "done"
done No check ran. The word is the only evidence.

The model is identical in both runs. Only the tool schema and the loop changed.

03 · Why they fail

Scaffolding moves the number.

2.7% Patch, no tools 11.0% Shell only 15.0% Tools, no lint 18.0% Tools + lint

SWE-bench Lite, 300 tasks · GPT-4 Turbo in all four runs · Yang et al., SWE-agent, NeurIPS 2024 (Tables 1 and 3)

Same model: 2.7% to 18.0% resolved. Third bar is that agent with its edit linter removed.

03 · Why they fail

You cannot tune what you do not measure.

20–50

tasks, from your own repo

  • 01 Start from a failure you already had.
  • 02 End in a state a script can check.
  • 03 Two engineers agree on the verdict.

04 · Cost and risk

Every harness change has a bill.

Retrieved context, per turn Illustrative 6,000 tok Turns per task Illustrative 20 Added input per task 120k tok At $2 / MTok input, Sonnet 5.5 $0.24 Same tokens, cache read at $0.10 / MTok $0.012

Anthropic API pricing, Claude Sonnet 5.5: $2 input / $10 output per MTok. Read 24 Oct 2026.

Same model. Different harness. Different score.

04 · Cost and risk

Draw the trust boundary.

01

Read only

Files, logs, test output.

path allowlist
02

Write in the repo

Edits to tracked files.

sandbox
03

Execute

Build, test, migrate.

approval gate for
irreversible actions
04

Reach the network

APIs, registries, the open web.

egress allowlist

Move right only when the task needs it.

Prompt injection is an input-trust problem, not a model-behaviour problem.

05 · Team and process

Nobody owns the harness, so it rots.

01

Harness engineer

owns the loop and the tool layer

02

Eval owner

owns the task suite and the gate

03

Context owner

owns what enters the window

04

Security reviewer

owns the trust boundary: tools, permissions, data

05

Product owner

owns which workflows get a harness

Two or three people can start this, part time.

05 · Team and process

Change one thing. Measure again.

  1. 01

    Pick a failed trace

  2. 02

    Name the harness cause

  3. 03

    Change one harness part

  4. 04

    Rerun the suite

  5. 05

    Keep or revert

One change per run, or you learn nothing.

05 · Team and process

What the first thirty days look like.

  1. Week 1

    Twenty real tasks. Pass or fail, by hand.

  2. Week 2

    A full trace of every run.

  3. Week 3

    One verification step. One scoped tool set.

  4. Week 4

    The suite in CI. A regression gate.

  5. Ongoing

    One named owner. A weekly trace review.

05 · Team and process

How harness work goes wrong.

The tell

Your score climbs. Production does not.

The harness learned the tasks, not the work.

The countermeasure

Hold out ten tasks. Rotate them each quarter.

Report the held-out number, never the tuned one.

06 · Payoff

What changes for you.

If you lead

  • 01Stop shopping for models first.
  • 02Fund the harness and its evals.
  • 03Ask for cost per successful task.
  • 04Reward the boring fixes.

If you build

  • 01Own the loop, not the prompt.
  • 02Instrument every run.
  • 03Add verification before autonomy.
  • 04Keep the harness in the repo.

06 · Payoff

Pick one agent. Give it a harness.

The model will keep changing. The harness is the part you own.

This week: pick 20 tasks Questions