Harness
The model is the engine; the harness is the car.

In one sentence
The shell around the model: system prompt, tools, permissions, loops, and checks that turn a raw LLM into a functional agent. If the model is the engine, the harness is the car around it.
Before
Raw LLM
What it does
Prompt, tools, limits, and verification
After
Functional agent
Example
The same model produces two outcomes. Without a harness, it is an LLM that writes nice letters and makes up facts. With a harness, it gets a system prompt with the organization’s policy, a tool for reading the report, a tool for querying the registry, a six-iteration cap, a hook that blocks data protected by LGPD, and mandatory verification before delivery. The text improves only slightly, but reliability rises sharply.
The common mistake
Switching models and expecting that to solve a harness problem. If the agent makes up facts, what is missing is a tool and verification. A more capable model will still make things up, just in better-written text.
In practice
- Everything that is not prompt goes into configuration: tools, permissions, limits, model.
- Test by switching the model. If the behavior breaks, something that should be in the harness is in the prompt, or vice versa.
- Version it together with the code, because harness is software and should be treated as such.
How to make it tangible
The agent configuration file (system prompt, tools, permissions, knobs, hooks), versioned in the repository.
Translated from Portuguese with AI assistance.
