Illustration for The Model Is Not the Whole System
AI Field note / 2026-07-22

The Model Is Not the Whole System

How an agent harness and its skills can sharpen an AI—or quietly make it worse

Written by Coolemur Read slowly. Think clearly.

The same model can feel like a different machine

Give the same language model to two different AI applications and you can get two very different results.

One reads the right files, uses the correct tools, remembers the important constraints, verifies its work, and stops when the job is done. The other loses context, calls the wrong command, follows stale instructions, declares victory early, and leaves a polished explanation beside a broken result.

The model may be identical. The difference is everything wrapped around it.

That surrounding system is often called the agent harness.

People spend a lot of time comparing models, benchmark scores, and context-window sizes. Those things matter. But once a model is expected to do work rather than only produce an answer, the harness can be just as important as the intelligence inside it.

A capable model inside a poor harness can look incompetent. A weaker model inside a disciplined harness can look surprisingly effective.

Is a harness the app or shell that controls the model?

The app, command-line interface, or chat window is usually the part we can see. It is the cockpit. The harness is the machinery behind the controls.

An agent harness typically handles things such as:

  • Building the prompt and deciding what context the model sees.
  • Calling the model, receiving its response, and continuing the work loop.
  • Exposing tools for files, terminals, browsers, APIs, databases, or other systems.
  • Executing tool calls and returning the results to the model.
  • Managing conversation history, memory, and context-window limits.
  • Enforcing permissions, approval gates, sandboxes, and other safety rules.
  • Tracking plans, retries, failures, and completion conditions.
  • Persisting enough state for the work to continue later.

This is close to how the term is used in both Microsoft’s Agent Framework documentation and Cloudflare’s Agents documentation: the harness is the runtime loop and scaffolding that turns a model call into an agent that can act.

A small command-line program could contain the whole harness. A larger product may split it across a desktop app, local daemon, remote services, policy layer, memory store, and tool servers. The visible shell is therefore part of the experience, but it is not necessarily the whole system.

The harness decides what intelligence can reach

A raw model produces tokens. It does not naturally know which folder contains your project, which database is safe to query, whether a command succeeded, or whether the UI it changed still works on a phone.

The harness creates the path between reasoning and reality.

Consider a coding task. A useful harness might let the model:

  1. Inspect the repository.
  2. Search for the relevant code.
  3. Read project-specific instructions.
  4. Edit only the permitted files.
  5. Run the correct checks.
  6. Open the real application in a browser.
  7. Observe a failure and try again.
  8. Report the change with evidence.

Remove file search and the model starts guessing where things live. Give it a noisy repository dump and the important details disappear inside irrelevant context. Hide test output and it cannot react to failure. Let it run forever and a recoverable mistake becomes a tour of increasingly creative damage.

The harness does not make the model smarter in the biological sense. It changes what the model can observe, what it can do, and what feedback it receives. In practical work, that can look a lot like a change in intelligence.

Good harnesses improve the work

The best harnesses reduce avoidable uncertainty.

They supply the right context

More context is not automatically better context. A good harness retrieves the instructions, files, memory, and tool results that matter now. It also removes or compresses information when it is no longer useful.

This is the difference between giving someone the page they need and tipping the entire filing cabinet onto their desk.

They make tools understandable

A model can only use a tool well if the tool’s purpose, inputs, outputs, and failure states are clear. Precise tool descriptions and structured results make good decisions easier. Five overlapping tools with vague names turn tool selection into a lottery.

They create useful feedback loops

An agent becomes more reliable when action produces evidence. Run the check. Inspect the result. Compare it with the acceptance criteria. Continue only when something remains unresolved.

Without that loop, the model is rewarded for producing a plausible ending, not a correct outcome.

They constrain the blast radius

Permissions are not merely a security feature. They shape reasoning. A harness that makes the workspace clear, keeps writes scoped, and asks before destructive or external actions gives the model a safer problem to solve.

They know what “done” means

Stopping too early leaves unfinished work. Stopping too late wastes time and can undo a good result. A useful harness ties completion to observable criteria rather than confidence or word count.

Bad harnesses make good models look bad

Harness problems are easy to misdiagnose as model problems because the model is the part that speaks.

If an agent repeatedly ignores a repository rule, perhaps the rule was never loaded. If it calls a tool incorrectly, perhaps the schema is ambiguous. If it forgets the goal halfway through a long task, perhaps context compaction removed the wrong information. If it claims success after a failed command, perhaps the harness buried the exit code inside a wall of logs.

Common harness failures include:

  • Injecting too much irrelevant context.
  • Loading contradictory instructions without a clear priority.
  • Exposing tools with misleading descriptions or inconsistent results.
  • Hiding errors, truncating the useful part of output, or losing state between steps.
  • Giving broad permissions before the target is resolved.
  • Persisting bad assumptions as memory.
  • Retrying failure without changing the approach.
  • Using a completion signal that measures confidence instead of correctness.

These failures compound. Bad context leads to a bad action. The action creates misleading output. That output becomes the next turn’s context. Soon the model is confidently navigating a world the harness accidentally invented.

Skills are part of the harness story

A skill is usually a reusable package that teaches an agent how to perform a particular kind of work. Depending on the system, it may contain instructions, decision rules, examples, scripts, templates, or references.

The exact ownership varies. Skills might live in the user’s filesystem, inside a project, in a shared registry, or as built-in product resources. Operationally, however, the harness often discovers the available skills, decides when to expose or load them, and provides the tools they depend on.

Hermes Agent is a useful example. Its documentation describes a built-in learning loop that can create skills from experience, improve them during use, and persist knowledge across sessions. That turns a successful workflow into something the agent may reuse instead of rediscovering from scratch.

This can be powerful. A good skill can encode hard-won knowledge such as:

  • The correct sequence for packaging and signing an application.
  • Which files define a project’s architecture.
  • How to validate a document visually instead of only checking that it opens.
  • Which API fields are unreliable and what evidence confirms the real value.
  • When a task requires a browser, a sandbox, an approval, or a human decision.

A skill can narrow a broad model into a competent specialist for a repeatable task.

Skills can also make the agent worse

Installing a skill is not the same as installing truth.

A skill is context with authority. If it is outdated, incorrect, vague, or written for a different environment, it can steer the model away from a solution it might otherwise have found.

Outdated skills

Tools change. APIs remove fields. Frameworks replace conventions. Commands gain safer flags. A skill written against last year’s system may confidently prescribe a workflow that no longer exists.

The more specific the instructions, the more reliably the agent may repeat the obsolete behavior.

Incorrect skills

A skill can be wrong from the beginning. Perhaps its author misunderstood the failure, copied an unverified workaround, or generalized from one lucky result. Polished instructions do not become facts merely because they live in a SKILL.md file.

Over-broad skills

A useful procedure in one repository may be harmful when applied everywhere. “Always regenerate this file,” “always disable the sandbox,” or “always use this framework” are warning signs. Good skills define when they apply and when they do not.

Conflicting skills

Two individually reasonable skills may disagree about tools, file ownership, validation, or safety. If the harness loads both without clear precedence, the model has to resolve a policy dispute inside the same context window in which it is trying to solve the task.

Bloated skills

A giant skill can bury its own important instruction. Every extra example, exception, and reference consumes attention. Progressive loading helps, but only if the harness selects the right material at the right time.

Self-reinforcing skills

An agent that creates or updates its own skills introduces a deeper risk: a mistaken lesson can become persistent. The agent fails, explains the failure incorrectly, stores that explanation, and then treats it as established procedure next time.

Learning loops need correction loops.

Treat skills like production code

Skills deserve maintenance because they influence actions.

A healthy skill should have:

  • A clear trigger and narrow scope.
  • An owner or trustworthy source.
  • A creation or review date.
  • Version assumptions for important dependencies.
  • Concrete success and failure checks.
  • Safe defaults and explicit permission boundaries.
  • Examples that have actually been tested.
  • A way to retire or replace the skill when reality changes.

High-risk skills should be evaluated against representative tasks. Do they improve success rate? Do they reduce time without increasing unsafe actions? Do they still work after the underlying tool changes? Can the agent recognize when the skill does not apply?

The right question is not “does the agent have more skills?” It is “does this skill make the system more reliable on the work it claims to cover?”

Evaluate the system, not only the model

When AI work goes wrong, separate the layers before blaming the most visible one.

Ask:

  1. Did the model receive the right goal and constraints?
  2. Did the harness select the right context?
  3. Were the necessary tools available and clearly described?
  4. Did a memory or skill inject a bad assumption?
  5. Did the system expose failures and feed them back correctly?
  6. Were the completion checks strong enough to detect the mistake?

Changing the model may help. But if the harness continues hiding errors, loading stale skills, or rewarding premature completion, a more capable model may simply reach the wrong answer faster.

Intelligence is a system property

For practical agentic work, the product is not the model alone.

It is the model plus the harness, tools, context, memory, skills, permissions, environment, and feedback loop. Every layer can add leverage. Every layer can also add distortion.

So yes: the app or shell matters. But the important thing is what it wraps around the model and how carefully that machinery has been built.

Choose models thoughtfully. Engineer the harness. Audit the skills. Verify the outcome.

The intelligence you experience is the whole system working—or failing—together.

That’s the note.