Position Paper
Towards Standardization of the Agent Harness
Nicolas Gertler et al.
Abstract
Agent harnesses are the software layer that runs a language model agent against a benchmark: they define the environment, the tools, the observation loop, and the scoring rules. They are also the least standardized part of the evaluation stack. Across the field, harnesses differ in how they present observations, how they time out, how they handle tool errors, and how they count a pass. The same agent, the same model, and the same benchmark can produce materially different scores under different harnesses. This paper argues that the field needs a shared, minimal standard for agent harnesses, and it proposes one. We define the core components every harness must expose, a common execution interface, and a reporting format that makes results comparable and reproducible. We ground the proposal in a case study on SWE-bench Mobile, where two plausible harness configurations produce a 2% and a 12% success rate on the same task set. Our goal is not to prescribe one implementation but to give the community a common vocabulary and contract, so that a score reported by one group can be reproduced and trusted by another.
- Submitted
- 13 August 2026
- Word count
- 2,958
- Categories
- cs.AI, cs.SE
- Comments
- A standardization proposal for agent evaluation harnesses, with a case study on SWE-bench Mobile.
1Introduction
The past few years have moved language models from answering questions to acting: reading files, running commands, browsing the web, and editing code. These agentic systems are evaluated on a growing number of benchmarks, from software engineering to web navigation to general assistance. Yet the field has paid far more attention to the models and the benchmarks than to the thin layer of software that connects them. That layer is the agent harness.
An agent harness is the program that runs a model against a benchmark. It sets up the environment, exposes the tools, drives the observation loop, and decides what counts as a pass. It is, in effect, the referee of every agent evaluation. And unlike models and benchmarks, it has no shared standard. Every research group builds its own, and the differences are not cosmetic.
This paper makes a simple argument: the agent harness is the least standardized and least reported component of the evaluation stack, and it is the one most likely to make otherwise comparable results diverge. We propose a minimal standard for agent harnesses, define its core components, specify a common execution interface, and describe a reporting format designed for reproducibility. We ground the proposal in a case study on SWE-bench Mobile, where two plausible harness configurations produce a 2% and a 12% success rate on the same task set [3]. Our aim is not to dictate a single implementation, but to give the community a shared contract that makes scores comparable, reproducible, and trustworthy.
The paper is organized as follows. Section 2 defines what an agent harness is and the five jobs it performs. Section 3 describes where harnesses diverge and why that divergence breaks comparisons. Section 4 proposes the standard itself: a set of core components, a common execution interface, and a reporting format. Section 5 presents the SWE-bench Mobile case study that motivates the design. Section 6 situates the proposal against related evaluation infrastructure, and Section 7 concludes with the immediate, low-cost step we recommend the community adopt.
2Background: What an Agent Harness Is
A benchmark for agents is not a single file. It is a contract between a task suite and the software that will run it. The harness is the part that honors that contract. It performs five jobs, and every one of them is a place where results can quietly diverge.
First, the harness instantiates the environment. For a software engineering benchmark this means checking out a repository, installing dependencies, and applying a starting state. For a web benchmark it means launching a browser and a server. Second, it exposes tools to the model: a shell, a file editor, a search index, a browser. The set of tools and their signatures define what the agent is allowed to do.
Third, the harness runs the loop. It sends the model an observation, receives an action, executes it, and returns the result. This loop is where timing and error handling live: how long the agent may think, how long a tool may run, what happens when a tool throws, and whether the agent may retry. Fourth, it manages state across turns, deciding what persists between steps and what is reset. Fifth, it scores the outcome, translating the agent's final state into a pass or a fail.
None of these five jobs has a widely agreed specification. The result is that two groups can report results on the same benchmark and the same model and mean different things. The harness, not the model, is often the difference.
To make this concrete, trace a single task through a harness. The model receives an initial observation, perhaps a repository listing and a failing test report. It responds with an action, say a command to edit a file. The harness runs that command in the environment and returns the new state. The model reads the result and acts again. After some number of steps, the harness stops the agent and grades the final state. Every step in that description is underspecified: what the initial observation contains, how long the model may take, what happens when the command fails, and how the final state is judged. The harness is the collection of decisions that fill in those blanks, and there is no agreement about what the right defaults are.
3The Fragmentation Problem
Fragmentation shows up in small, mundane choices that are easy to overlook and hard to compare. Consider how a harness formats an observation. One harness sends the model a full file listing with line numbers; another sends only a diff; a third sends a truncated preview. Each is a different input distribution, and models are sensitive to that distribution. A change that looks like an implementation detail can shift a score by several points.
Timeouts are another axis. A harness that gives an agent thirty seconds per tool call and one that gives five minutes are running different evaluations, even when the task set is identical. Retry policies compound this: some harnesses let a failed tool call be retried indefinitely, others cap it at one. Error handling matters too. A harness that surfaces a raw traceback to the model gives it information that one that collapses errors into a single message withholds.
The scoring rule is the most consequential divergence of all. Pass criteria range from exact output matching, to unit-test execution, to human judgment. On software benchmarks, whether a patch is graded by running the hidden test suite, by a subset of tests, or by a text-similarity heuristic changes the difficulty of the task substantially [2]. When the scoring rule differs, the leaderboard is not comparing agents; it is comparing graders.
The cumulative effect is that reported scores are not portable. A number published by one group cannot be reproduced by another without the harness, and the harness is rarely published in enough detail to rebuild. This is not a failure of any single group. It is a structural gap in how the field reports agent evaluation, and it is the gap this paper addresses.
The consequences go beyond inconvenience. When harnesses differ, a leaderboard can rank models by the harness rather than by the agent. Two groups comparing the same pair of models might reach opposite conclusions if their harnesses penalize different behaviors. A model that is robust to truncated observations will look strong under one harness and ordinary under another. This is not a hypothetical concern; it is the natural result of treating the harness as an invisible constant when it is, in fact, a variable.
The problem is compounded by the fact that harness differences are rarely visible in a paper. The prose may say that a model was given access to a shell and a file editor, but it will not say how observations were truncated, how long a step could run, or how a partial edit was graded. These details are the substance of the evaluation, and their absence makes the reported number unverifiable. The fix is not more careful prose; it is a structured way to record the harness so that it travels with the result.
4A Proposed Standard Harness
We propose a standard that is deliberately minimal. It does not tell anyone which framework to use or which tools to expose. It defines the few things every harness must make explicit so that results can be compared. We organize the standard around three parts: a fixed set of core components, a common execution interface, and a reporting format.
4.1Core Components
Every harness should declare five components, each with a name, a version, and a configuration. The first is the environment, described by its image or base state and the exact setup commands. The second is the tool set, listed as an enumeration of tool names and signatures. The third is the observation formatter, which defines how raw state is turned into model input. The fourth is the loop policy, covering per-step and total timeouts, retry limits, and error handling. The fifth is the scoring function, with its exact pass criterion and any thresholds.
Declaring these five components is enough to make the harness a first-class object of study. A reader can see, at a glance, where two evaluations differ, and a reviewer can check whether a reported improvement came from the model or from a change in the harness.
Versioning each component matters as much as naming it. An environment defined by a base image will change when the image changes, and a tool whose signature drifts across versions changes what the agent can do. A manifest that records versions turns a subtle drift into a discoverable fact. We recommend that the manifest be kept alongside the task suite and updated whenever any component changes, so that the harness and the benchmark are versioned as a unit.
4.2A Common Execution Interface
The second part of the standard is a small execution interface that any harness can implement. It has three operations: initialize, which builds the environment and returns a handle; step, which takes an action and returns the next observation along with a status; and grade, which produces a verdict for the task. The interface is deliberately small so that it can be layered over existing frameworks rather than replacing them.
A common interface makes harnesses interchangeable. The same model can be run through different harnesses that implement the interface, and the only variable is the harness configuration. This is what makes controlled comparison possible: hold the model and the benchmark fixed, vary the harness, and observe the effect. That is exactly the experiment we run in the case study below.
A worked example clarifies how the interface is used. Initialize returns a handle to a running task. Step is called repeatedly with model actions, each call blocking until the tool completes and returning the next observation; a status field tells the caller whether the action succeeded, timed out, or was rejected. Grade is invoked once the caller decides the task is done, returning a verdict and, when available, the evidence behind it. This shape is close to what most existing harnesses already do internally. The standard does not ask anyone to build something new; it asks them to make the shape explicit and public.
4.3Reporting and Reproducibility
The third part of the standard is a reporting format. Every published result should carry a harness manifest: the five components, their versions, and their configuration, in a machine-readable form. The manifest is the reproducibility contract. It does not require sharing code, only describing the harness precisely enough that a competent group can rebuild it.
We also recommend reporting a small set of harness diagnostics alongside the headline score: the number of tasks completed, the distribution of pass and fail reasons, and the rate of harness-level failures such as timeouts and crashes. These diagnostics separate agent failures from harness failures, which is essential for trusting a leaderboard. Without them, a harness that times out on half the tasks can look like a weak agent.
This reporting habit is a departure from current practice, where a score is published as a single number with a prose description of the setup. We are not asking for more text; we are asking for a structured record that machines can read and humans can audit. The manifest and the diagnostics together cost a few lines in an appendix, and they convert a claim into a specification. We consider this the smallest change that meaningfully improves the trustworthiness of agent evaluation.
5Case Study: SWE-bench Mobile
To show how much the harness matters, we ran a controlled experiment on SWE-bench Mobile, a benchmark of real mobile app issues. We held the model and the task set fixed and varied only the harness configuration [3]. The two configurations were both reasonable choices, the kind a group would make without thinking hard about it.
The first configuration used a permissive setup: generous tool timeouts, unlimited retries on tool errors, and full error output returned to the model. The second used a stricter setup: short timeouts, a single retry, and collapsed error messages. On the same tasks and the same model, the permissive harness achieved a 12% success rate while the strict harness achieved 2% [3]. A sixfold gap, produced by configuration choices that most papers never report.
| Setting | Permissive | Strict |
|---|---|---|
| Tool timeout | 120s | 30s |
| Retries on error | Unlimited | 1 |
| Error output | Full traceback | Collapsed |
| Success rate | 12% | 2% |
The mechanism is not mysterious. The stricter harness cut off agents mid-edit when a build command ran long, and it hid the traceback that would have told the agent what to fix. Neither behavior is wrong on its own; both are defensible engineering decisions. But they change the evaluation, and without a manifest the reader cannot know which evaluation was run.
This single example is not evidence that every benchmark behaves this way. It is evidence that the harness is a real variable, large enough to dominate the differences between many models. A field that reports scores without reporting the harness is reporting an uncontrolled experiment.
The case study is deliberately narrow, and its limits are worth stating plainly. It uses one model, one benchmark, and two configurations, so it cannot tell us how large harness effects are in general or which benchmarks are most sensitive. What it can do is demonstrate that the effect exists, that it is large, and that it is produced by choices a paper would normally leave out. If the field adopted the manifest we propose, this experiment would be the first line of a reproducibility audit rather than a one-off observation.
A reader might reasonably ask which configuration is correct. Our answer is that neither is wrong, and that is precisely the point. The strict configuration is a defensible choice for a group that wants to bound compute costs, and the permissive configuration is defensible for a group that wants to give the agent every chance. Both groups are entitled to their settings. They are not entitled to report the result as if the settings did not matter. The manifest does not choose a default for them; it makes the choice visible.
7Conclusion
Agent evaluation is only as trustworthy as the harness that runs it, and the harness is currently the least standardized part of the stack. We have argued that this is a fixable problem, and we have proposed a minimal standard: five core components, a three-operation execution interface, and a machine-readable reporting manifest. The case study on SWE-bench Mobile shows why the standard matters, with a sixfold difference in measured performance coming from harness configuration alone.
We do not expect a single standard to be adopted overnight, and we are not proposing one that competes with existing frameworks. We are proposing a contract that frameworks can implement and papers can report. The immediate, low-cost step is for every published result to include a harness manifest. If the field adopts that one habit, agent scores will become comparable, reproducible, and trustworthy, and the leaderboards built on them will finally mean what they claim.
Several questions remain open and are natural directions for future work. We have not specified the exact schema for the manifest, and we expect it to evolve as groups adopt it. We have not measured how sensitive each major benchmark is to harness configuration, which would help the community know where the standard matters most. And we have not addressed the incentives: a group with a strong result has little reason to volunteer the settings that produced it. Addressing that last point, whether through community norms, reviewer requirements, or platform policy, may matter more than any technical detail. The standard gives the field the vocabulary it needs; building the habit is the work that remains.
RReferences
- [1]Kapoor, S., et al. Holistic Agent Leaderboard: The Missing Infrastructure for AI Agent Evaluation In International Conference on Learning Representations (ICLR), 2026.
- [2]Jimenez, C. E., et al. SWE-bench: Can Language Models Resolve Real-World GitHub Issues? In International Conference on Learning Representations (ICLR), 2024.
- [3]SWE-bench Mobile comparison Agent harness configurations on mobile app tasks Benchmark comparison reported in Section 5.Source for the 2% to 12% result: the SWE-bench Mobile comparison of agent harness configurations.
- [4]Liu, X., et al. AgentBench: Evaluating LLMs as Agents In International Conference on Learning Representations (ICLR), 2024.
- [5]Mialon, G., et al. GAIA: A Benchmark for General AI Assistants In International Conference on Learning Representations (ICLR), 2024.
- [6]Anthropic Building Effective Agents Technical report, 2024.
- [7]OpenAI Evals for Everyone OpenAI Blog, 2023.
- [8]LangChain Open-source framework for building language-model applications and agent harnesses https://www.langchain.com
Supplementary Notes
AHarness Configuration Checklist
The checklist below is the practical form of the manifest described in Section 4.3. Fill in one row per component before running an evaluation, and publish the completed checklist with the result.
| Component | What to record | Example |
|---|---|---|
| Environment | Base image, setup commands, seed state | ubuntu:24.04, npm ci |
| Tool set | Tool names and signatures | bash, edit, search |
| Observation formatter | How state becomes model input | diff + file listing |
| Loop policy | Timeouts, retries, error handling | 30s / 1 retry / full traceback |
| Scoring function | Exact pass criterion | hidden test suite |
BReporting Template
We propose that every published agent result include a short reporting block alongside the headline number. The block is three lines long and fits in a footnote or a paper appendix.
harness: { framework: "...", version: "..." }
manifest: { env: "...", tools: [...], formatter: "...", loop: {...}, score: "..." }
diagnostics: { tasks: N, completed: N, harness_failures: N, pass_reasons: {...} }
The first line names the framework and its version. The second line is the machine-readable manifest from Section 4.3. The third line reports the harness diagnostics that separate agent failures from harness failures. Publishing these three lines costs almost nothing and turns a bare score into a reproducible result.
CReproducibility Notes
Reproducibility begins with the manifest, but a few practical notes make it more reliable. Pin every dependency, including the model version and any sampling parameters. Record the hardware and the concurrency settings, since both can change timing behavior and, with it, timeout-driven outcomes. Save the exact prompts sent to the model, including the system prompt, because the harness often injects instructions that shape the agent's behavior.
When a result cannot be reproduced, the first question should be about the harness, not the model. If the manifest is present, the comparison is a matter of checking each component. If it is absent, the result is effectively unrepeatable. This asymmetry is the strongest argument for the standard: it converts reproducibility from an aspiration into an audit.
DGlossary of Harness Terms
The field uses harness vocabulary loosely, and loose vocabulary is part of the fragmentation problem. We define the terms as we use them.
| Harness | The software that runs a model against a benchmark and scores the outcome. |
| Environment | The isolated state in which a task runs, including its setup and dependencies. |
| Tool | An operation the agent may invoke, with a name and a signature. |
| Observation | The model input produced from the environment state after each step. |
| Loop policy | The rules governing timeouts, retries, and error handling across steps. |
| Scoring function | The rule that maps an agent's final state to a pass or a fail. |
| Manifest | A machine-readable record of the harness components and their configuration. |
Reader feedback
Comments are stored in the project database and scoped to the paper. A GitHub Discussions integration (Giscus) can be enabled later by configuring a repository.
Comments on paper
0Loading comments...