The harness is the software that runs the model, and, in the case of agents, implements the agentic loop, and provides capabilities external to the model (either directly or by interfacing with other systems.)
You need a harness for ANY use of a model because otherwise you just have a bunch of numbers that are the weights and no actual software that does anything with them, and you can’t have agents without a harness that provides the capabilities that define agents.
I think that is what OP was fishing for. Wrong answers ;).
Llama.cpp is not harness, setting up prompt template to have instruct model is also not what people call harness.
What people call harness nowadays is software that you interact with and it proxies model interactions. It can do agentic loop but the loop is not really much use for models that do “thinking” unless you want to layer your own loop on top for dealing with results and good harness can help - but usually if something runs loop it is called an agent not a harness.
So if harness proxies all interaction with model it also provides tools for model. It can provide context management and security features, where as security features would be preventing injections and making sure model doesn’t access stuff it shouldn’t.