Egor Urvanov

AI agent = LLM + harnessLLM vs harness vs agent and what the harness includes

AI agent = LLM + harness. LLM vs harness vs agent in one table, the five groups a harness includes, and why the same model behaves differently in chat and in Claude Code.

· 3 min · · Harness

Agent = LLM + harness. The model reasons in text; the harness gives it a loop, tools, context, rules and checks. Below: LLM vs harness vs agent in one table, the five groups a harness includes, and the same model in two harnesses.

Agent = LLM + harness

An LLM only continues text. The harness is everything around it: the step loop, tools, access to files and services, rules and checks. Together they make an AI agent.

LLMLLMWrites text?RulesHarnessTools·ContextRules·ChecksRulesAI agentDrives the task to a result+=● model, people, systems, data  ● agent and harness
Takeaway
In this exampleThe same Claude model answers in chat and edits code in Claude Code. The difference is the harness.
In generalChat apps, assistants and agents can run on the same models. What sets them apart is what surrounds the model.
Next stepWhen you compare AI products, compare harnesses: what the product can do on its own and where.

LLM vs harness vs agent

What each of the three has. The agent column is the sum of the first two.

LLMHarnessAI agent
Model that reasons in texthasnonehas
Loop: step, act, observenonehashas
Tools and MCPnonehashas
Context and memorynonehashas
Rules: CLAUDE.md, AGENTS.md, skillsnonehashas
Permissions, sandbox, hooksnonehashas
Checks and human in the loopnonehashas
Acts on its ownnonenonehas
Takeaway
In this exampleA harness without a model has tools but nobody to choose between them. A model without a harness chooses but cannot act.
In generalNeither half is an agent on its own. Agent = model + harness works as a definition: remove either side and the agent is gone.
Next stepName the harness of the agent you use: where its loop, tools, rules and checks live.

What the harness includes: five groups

Reach→tools, MCP servers, sandbox, browser
Knowledge→context, memory, CLAUDE.md / AGENTS.md, skills
Control→permissions, hooks, human approval of risky steps
Verification→tests, linters, logs and tracing
Takeaway
In this exampleClaude Code: the loop in the CLI, tools via MCP, rules in CLAUDE.md, control through permissions and hooks, verification through your tests.
In generalIn our experience, most agent failures trace back to one of the five groups: a missing tool, missing context or a missing check.
Next stepWhen the agent fails, ask which group was missing, and fix it there instead of rewriting the prompt.

Same model, different harness

ModelChat harnessAgent harness
ClaudeClaude in the browser: conversation, no project accessClaude Code: reads the repo, edits files, runs commands
GPTChatGPT: conversation, no project accessCodex: works in the repo, runs tests, opens pull requests

A study at ICML 2026 found that picking the best harness gives gains comparable to picking the best model. Source

Takeaway
In this exampleSwitching from chat to Claude Code changes the harness only, and the task goes from advice to a finished change.
In generalModel choice and harness choice weigh about the same. Teams that only compare models miss half of the result.
Next stepBefore switching models, try a stronger harness on the model you already have.

FAQ

What is an agent harness?
All the code and configuration around the model that is not the model: loop, tools, context, rules, permissions and checks.
AI agent vs LLM: what is the difference?
An LLM generates text. An AI agent is an LLM inside a harness that turns that text into actions and checks the result.
AI agent vs chatbot?
A chatbot answers within a script or a conversation. An agent acts in your systems and decides the next step itself.
Is ChatGPT an agent?
In plain chat it is a chat app. In agent mode and in Codex the same model gets an action harness, which makes it an agent.
Harness vs framework?
A framework gives building blocks for writing an agent. A harness is the running layer that executes the loop and controls it.
© 2026 Egor Urvanov