Rethinking Harness Evolution: Are We Building Better Agents or Just Searching Harder?
Rethinking the Evaluation of Harness Evolution for Agents
This paper critically re-evaluates automatic harness evolution for LLM agents, comparing it against simple test-time scaling baselines like parallel sampling and sequential refinement. Using Terminal-Bench 2.1 and frontier models (GPT-5.4, Claude Opus 4.6), the authors demonstrate that harness evolution often fails to outperform task-level search and shows poor generalization to held-out tasks.
Executive Summary
In the rapidly evolving landscape of LLM agents, "Harness Engineering"—optimizing the prompts, tools, and control logic surrounding a model—has become a cornerstone of performance. Recently, a wave of papers (e.g., Meta-Harness, AEVO) argued for automatic harness evolution. However, this new study by Wang et al. (Allen Institute for AI) delivers a sobering reality check: Automatic harness evolution often fails to outperform simple test-time scaling and struggles to generalize.
The TL;DR: When we give an agent more compute, it is usually better at fixing its own specific answer than "learning" how to be a better agent across all tasks. Most reported gains in prior work may be due to task-specific overfitting or simply the benefits of repeated sampling.
The Problem: The "Search" vs. "Design" Conflation
Existing methods for evolving agent harnesses follow an iterative loop: the agent tries a task, fails, analyzes the failure, and updates the harness (e.g., adding a "be more concise" rule to the prompt).
The authors identify two fatal flaws in how this is currently measured:
- Feedback Matching: Harness evolution uses task feedback many times during its search. If we gave a simple "Parallel Sampling" baseline the same amount of feedback, would it perform just as well?
- Overfitting: If the agent modifies its prompt based on Task A and is then evaluated on Task A, it hasn't "designed" a better harness; it has just "cracked" that specific task.
Methodology: A Unified Budget Framework
To level the playing field, the authors compared four distinct ways to spend a "compute budget" ():
- Parallel Sampling: The "brute force" baseline. Generate solutions and pick the best one.
- Sequential Refinement: The "iterative" baseline. The agent tries, reflects, and tries again times.
- Harness Evolution: The "learning" approach. The agent modifies a global harness based on experience across a batch of tasks.
- Harness Scaling: The "hybrid" approach. The agent modifies its harness specifically for the task at hand.

The "Zero-Generalization" Shock
The most striking finding comes from the Generalization Test. The authors split the Terminal-Bench tasks into "Training" and "Held-out Test" sets.
While Harness Evolution showed improvements when the training and testing tasks were the same, those gains vanished on unseen tasks. On GPT-5.4, the improvement was 0.0%. This suggests that the "evolved" harnesses were filled with task-specific hints (like hardcoded file paths or specific command sequences) rather than generalizable strategies.

Deep Dive: Why Does Evolution Fail?
The authors conducted a qualitative analysis of what the agents actually changed in the harnesses. They found that meta-agents (like GPT-5.4) make "rational" edits:
- Prompt layer: Adding rules like "copy fragile state before mutating."
- Middleware layer: Adding turn counters or output truncators.
- Tool layer: Injecting recovery hints into terminal commands.
So why no gain? The researchers argue that a "stable core" of hard tasks remains. These tasks require deep domain reasoning that no amount of prompt-tweaking can fix. Furthermore, as the harness grows with more "rules," it suffers from context bloat, which can actually confuse the model and negate any benefits.
Critical Analysis & The Path Forward
This paper serves as a "Call to Arms" for more rigorous agent evaluation. It suggests that:
- Harness Evolution isn't dead, but it needs better benchmarks. Terminal-Bench might be "harness-insensitive"—meaning a basic bash shell is already "good enough," so the bottleneck is the model's brain, not the harness.
- Evaluation must be disjoint: Never evaluate an evolved harness on the same tasks used for its evolution.
- Baselines matter: If your fancy evolution algorithm can't beat "Sampling @ 5" (running the agent 5 times and picking the best), it isn't ready for production.
Final Takeaway: For practitioners, if you want to improve your agent's performance today, focus on Test-Time Scaling (verification and multiple attempts) rather than trying to build a self-evolving prompt system.
