It’s tempting to think of an agent as the model. When it does something great, the model is smart. When it does something dumb, the model is dumb. So you go looking for a newer model or a better prompt.
Although a better model or prompt may help, this is just not the case. The picture that makes it click for me is thinking of an agent as a person (which we already do to a scary level), and the LLM Model and harness as the brain and body of that digital person.
The model is the brain
The brain is the large language model itself. Text goes in, and it predicts what text should come next. Everything people mean when they call an AI “smart” happens here, from the reasoning to the code it suggests.
But a brain in a jar can’t do much. It has no eyes to see your codebase and no hands to edit a file or run a test. It can’t even remember what happened five minutes ago unless someone shows it again, which is why model APIs like Anthropic’s Messages API take the full conversation history on every call. On its own, a model can describe a fix in a chat window. It can’t make one.
The harness is the body
The harness is everything around the model. The term has spread over the internet like wildfire, but I first saw it in Birgitta Böckeler’s article Harness engineering for coding agent users. She writes that harness “has emerged as a shorthand to mean everything in an AI agent except the model itself.”
That’s the body. It decides what the brain sees, what it can touch and what happens to what it produces.
I guess technically you could feed your prompt directly into the LLM model, and thats where the analogy breaks down as we are not able to shove sensory input directly into the human brain. yet…
But typically it is the harness’ eyes that consumes your prompt.
Lets say I ask the coding agent in my editor to fix a failing test. The eyes are whatever searches the repo and picks which files the model gets to look at. The hands are the tools that edit files and run npm test. The model can only ask to use them. The harness decides whether they exist and does the actual work.
Then there are the nerves. The test fails, the output goes back to the model, and it tries again. Type errors and lint failures only reach the brain if something feeds them back. It also needs to know the rules, which come from the vendor’s system prompt and my own AGENTS.md. And there are reflexes that stop it before it does damage, like a permission prompt or me reading the diff before anything lands on main.
Part of this body comes built in. When I use a coding agent like Claude Code or Cursor, the vendor has already written the hidden system prompt that tells the model how to behave. They’ve also built the code that finds the right files to show it, and the loop that runs its tools and feeds the results back. I don’t touch any of that.
The rest we build ourselves on top: my AGENTS.md, my tests and lint rules, which commands it’s allowed to run, and a review before anything merges. This outer layer is the part we actually control.
flowchart LR subgraph Harness I["Instructions<br/>system prompt, AGENTS.md"] --> M(("Model")) C["Context<br/>file search, retrieval"] --> M M --> T["Tools<br/>read, edit, run"] T --> K["Checks<br/>tests, types, lint"] K -->|results| M K --> G["Gates<br/>permissions, CI, review"] end
The agent is the whole person
AI Maths
Person = Body + Mind Agent = Harness + LLM Model
Together, the two make the agent. A brain plus a body is a person who can actually get things done. Still working out how to program the spirit though… 🤔
Thinking of it this way changed where I look when things go wrong. If a person keeps walking into a door, a smarter brain isn’t the first fix. I’d check their eyes. Agents are the same. Mine ignored a convention because the instruction lived in a file it never loaded. It said “done” with red tests because nothing ran them. It edited a file it had no business touching because nothing stopped it. None of those were brain problems.
A model is only ever as useful as the body it lives in. So when my agent does something dumb now, I’ve stopped blaming the brain. I look at the body first.