The scaffolding around a model that turns it into a working agent — the loop, the tools it can call, and the rules for when to stop.
The model itself only predicts text. The harness is everything wrapped around it: how the conversation is framed, which tools are exposed, how results get fed back in, how many retries are allowed, and what counts as done. Claude Code, for example, is a harness around Claude.
Harness design often matters as much as the model. The same model scores very differently on coding benchmarks depending on the harness — which is why papers and changelogs talk about "harness improvements" as a separate lever from model upgrades.