← All finds

Find No. 008 · Oct 20, 2026 · 2 min read

Tuning the harness, not the model

Google Research tool that tunes an agent's harness (prompts, tools, memory, skills) instead of the weights.

google-research/harness2
Screenshot of harness2

Most agent harnesses are built by hand for one kind of task. Then the agent gets something the harness wasn't designed for, and it struggles. Harness², from Google Research, tries to fix this without touching model weights. It rewrites the harness itself while the agent works. The prompts, tools and scaffolding get refined for the task in front of it, and the lessons carry forward to the next task.

How it works

There are two loops. The inner one runs per task and the README calls it Propose, Probe, Compose. An editor proposes changes to the harness. Probes run those candidate harnesses on the same task. A composer looks at how the runs behaved differently and builds a refined harness from that. It doesn't need ground-truth feedback, which is the clever bit.

The outer loop keeps a persistent "improvement harness". After each task, a reflector adds the adopted harnesses and lessons backed by evidence, so later refinements start from what worked before.

Eight parts of the harness are editable: system prompt, guardrails, memory, tool guidance, subagents, skills, scripts and plugins. Recursion can run in parallel (K candidates at once) or sequentially (K steps in a row). The executor is OpenCode by default, with Codex as an option.

The authors report that one step improves GLM-5 and Gemini 3.5 Flash over their base harnesses. The gains are up to 11.5 points on WorkBuddy-Bench, 4.5 on JobBench and 11.8 percentage points on LAB's partial pass rate.

Try it

You need Linux, Python 3.12 and uv. The demo uses deterministic editors and doesn't need model credentials:

uv venv --python 3.12 .venv
source .venv/bin/activate
uv pip install -e '.[render]'
harness2-demo --output runs/demo --k 2

For a real benchmark run, the README uses LAB with one task:

harness2-setup lab
harness2-check --bench lab
harness2 --bench lab --k 1 --mode parallel \
  --only-domains antitrust-competition --max-tasks 1

Add --dry-run to see which tasks get picked before any model calls happen.

My take

I like the idea of treating the harness as the thing you optimize, not the model. Most of us already tweak prompts, skills and tool guidance by hand after every failed run. This automates that loop and keeps a record of what helped. Resumable runs and the credential-free demo are nice touches.

The caveats are real, though. Model-backed runs cost API money, and every probe is another full execution. The executor's network access is unrestricted, and Codex runs with its sandbox disabled. The README warns that public benchmark rubrics may be online, so lock down the network before you trust any scores. Setup gets heavy fast: Node 20+, the gcloud CLI, Docker for WorkBuddy-Bench, and Pandoc and Poppler for LAB. It's also not an officially supported Google product.

It's worth a look if you build agent scaffolding or research self-improving agents. If you just want a coding agent, skip it.