What decides whether Harness² fits a task?
Harness² runs each task several times, tries edits to the agent's prompts, tools and scripts, and keeps whatever changed the result. Lessons get filed by field and handed to the next task in that field (how it works). So it rewards three things: work that repeats in one field, so the lessons stack up; runs you can check, because with no right answer to compare against, the judge is the ceiling; and a starting harness with room to improve, because the original setup never makes the final pick.
We've only run Harness² on the example that ships with it, so none of this is measured. The lessons below are ours, written in the format Harness² uses, to show the kind of thing each case would teach it.
Site fixes at scale
An agent works through a queue of websites, fixing what an audit found: missing structured data, titles that don't say what the page is, pages nothing links to. The fixes are basically the same everywhere. Applying them isn't. A Shopify theme, a WordPress plugin and a static site all hide the same field in a different file.
- cue: Product JSON-LD is missing but the theme has a schema snippet - lesson: Edit snippets/product-schema.liquid, not the product template; the template only renders the snippet. - evidence: the probe that edited the template left the audit unchanged; the probe that edited the snippet passed the structured-data rule.
WatchAn audit can be gamed. If the score is the judge, the loop learns to satisfy the rule instead of the reader. The rules have to be hard to game, or the lessons don't mean much.
Codebase migrations
One framework upgrade across hundreds of repos. The first fifty go fine. The rest each break their own way: a custom test runner, a pinned plugin, a build step nobody remembers. That's where the time actually goes, and where a harness that learns from each repo would pay for itself fastest.
- cue: Tests fail with "Cannot find module" after the upgrade - lesson: Update moduleNameMapper in jest.config before bumping the framework; path aliases moved. - evidence: two probes bumped first and failed 41 tests; the probe that mapped aliases first passed all of them.
WatchPassing tests aren't the same as a migration that works. A probe that deletes a failing test passes too. Guardrails on what the agent can touch matter more here than anywhere else.
Month-end close
The ledger example from Harness², grown up. Every month, for every entity, an agent reconciles the books against bank and processor statements. Same accounts, new numbers, and the mistakes are the same kind the example had: a script that drops refunds, fees netted when they should be gross, a currency converted on the wrong date.
- cue: Stripe payouts are net of fees - lesson: Book gross charges and fees as separate lines, then match the payout; matching net hides refunds. - evidence: the base run tied out in total but missed two refunds; the probe that split fees matched every line.
WatchA total can tie out and still hide errors that cancel each other. The check has to go line by line, or the loop just learns to balance, not to be right.
Contract review
An agent reviews incoming contracts against a firm's playbook: flag the indemnity cap, the auto-renewal, the governing law. It's close to what Harness²'s legal benchmark measures, and that's where the paper reports its biggest gain, up to 11.8 points of partial pass rate.
- cue: Limitation of liability refers to a schedule - lesson: Read the referenced schedule before rating the cap; the number often lives there. - evidence: the base run rated the cap uncapped; the probe that followed the reference found a 12-month fee cap.
WatchLessons stay in their field. "Follow cross-references," learned on MSAs, never reaches leases unless someone files it there too.
Support replies
The hardest of the five, and it's here because it shows where the edge is. Tickets repeat forever, so lessons would stack up. But there's rarely one right reply, and most teams already have macros they've tuned. Two of Harness²'s design choices work against it here.
- cue: Customer asks about a charge after cancelling - lesson: Look up the cancellation date before answering; most of these are the final prorated invoice. - evidence: the probe that checked the date answered with the invoice; the base run apologised and offered a refund.
WatchThe original never wins: the final pick is always an edited harness. If your macros already work, the loop can only drift. Here the judge is the whole ceiling.
Choosing your own
Before you run Harness² on your own work, three questions settle most of it:
- Will you run this kind of task a hundred times?Lessons are filed by field and only pay off with repetition. A one-off task pays for the loop and gets none of the memory.
- Can a run be checked, not just judged?A build, a balance, an audit score. Where one exists, wire it in as the judge. Where none does, the result is only as good as the model picking between runs.
- Is your current setup weak or strong?The loop always adopts an edit. That's great for a weak harness and a risk for a strong one.
References
- Xu, Chen, CuiZhu, Dalvi Mishra, Ming, Yu, Han, Lee and Pfister. Harness²: Recursive Agent Harnessing for an Open World. arXiv 2610.14224, 2026.
- google-research/harness2, commit 1cfe254, October 13, 2026. Apache 2.0.
- Inside Harness², the agent that rewrites its own harness, subinternal Research, October 16, 2026.