FYI, the software around the model matters.

A harness is the software that coordinates calls to a model and connects them to tools and results. Its scope varies: context handling, checks, logging, and recovery may sit in the harness or in services around it.

A model request passes through a harness that checks permissions and runs an allowed tool call. The tool result returns through the harness to the model.

A proposed tool call is not an executed action. In this example, the harness checks permissions before running the tool; disallowed calls can be rejected or paused for approval. Responsibilities vary by system.

View diagram

See it happen

Your request“Find a quiet restaurant for two at 7.”

An agent loop Choose a step to see who does what.

The surrounding software runs the permitted tool.

It checks that the search is allowed, runs it, and passes the result back to the model. A booking would need your approval in this example.

Fictional tool result

Juniper · quiet dining room · table for two at 7 pm

The harness connects model requests to tools, context, and permission checks.

Scripted illustration, not a live AI result. No real search or booking takes place.

What happens around the model

For the fictional request “Find a quiet restaurant for two at 7,” the model proposes a search. Something still has to check that request, call the search tool, and return its result for the next model response.

That coordinating software is the harness in this example. It validates the requested tool and its inputs, runs the fictional search, and passes back the result. It also routes a booking request through an approval check instead of treating generated text as permission.

No live search or reservation happens in the demonstration. It separates the parts so you can see which component does what.

A common mix-up

The harness is not another language model, and it is not merely a clever prompt. It is software connecting model calls to the rest of an application.

There is no universal harness checklist. One system may handle conversation state inside its harness; another may use a separate service. Naming the boundary matters less than understanding the responsibilities.

Why it matters

Two products using the same model can behave differently because the surrounding software differs. One might retry a failed request, show what happened, and require approval; another might not.

Ask where permissions are enforced and how a failed tool call is handled. An instruction saying “ask before booking” is not equivalent to a booking tool that cannot execute without approval.

Sources & further reading

By Ergin Satir