What did we build?
An agent harness that improves its own instructions from its own work, and keeps a change only when a check confirms it by reading the result. The agent fixes small business websites; after each run, clickd reads the site again and every rule in its rulebook passes or fails.4 No model grades the work.
Two designs this fall each had half of it. Google Research’s Harness² rewrites its own harness while it works, but chooses among its versions blind, with no right answer to check against.1, 2 DeepSeek’s Super-agent coordinates a team of agents around the clock, but nothing in it makes the thousandth run better than the first.3 Harness² inspired ours; none of its code is in it.
How does one learning round work?
Five steps, and a model takes part in only one of them.
- Gather. The current version fixes 30 training sites, each judged by the check.
- Diagnose. A model reads the failures and proposes up to four edits to the instructions. It runs with no tools and must answer in a fixed shape, so it can only propose.
- Trial. Each edit is tried alone on the sites it should help and on sites the version already passes. It is kept only if it gains a site and loses none.
- Test. The kept edits are combined and run on 20 sites none of this has seen. The result is adopted only if it passes more of them, fails none the current version passes, and costs at most a quarter more a run.
- Keep the lesson. Every edit, adopted or not, is written down with the numbers that decided it.
The sites are small local business sites made from a seed, with three to five faults planted from the rulebook, so the same start can be replayed under any version. A clean one scores 100, and each fault planted alone fails exactly its own rule. Sites 51 to 100 were never used to write, try or choose any version.
What did the first round learn?
The cause a person found, from the failures alone. The starting instructions passed 66% of held‑out sites, and all their failures were one rule: a page needs a way to get in touch. The diagnosis named why: “the agent added only a phone link and still treated the item as done.” Two of its four edits survived their trials, and together they passed all 50 of the held‑out sites.
| Held-out sites 51 to 100 | Passed | Points gained | Cost a run |
|---|---|---|---|
| v1, the starting instructions | 33 of 50 (66%) | 10.0 | $0.121 |
| Learned in round 1, no person involved | 50 of 50 (100%) | 13.3 | $0.130 |
| Written by hand from v1’s failures | 49 of 50 (98%) | 13.3 | $0.103 |
The version written by hand from the same failures did about as well, and cost less a run. The learner matched it with no person involved.
How did it game the check?
It added a quote form with nowhere to send it. clickd’s rule asked for a form or a link to a contact page; it got a form. The agent’s own summary said the form needed a destination before launch, but the check rewarded it as it was. A form with no destination on a page with no script just reloads the page, and the message goes nowhere.
So we changed the rule on clickd: a form counts only if it can send somewhere, an action naming a place or script on the page to send it. Most JavaScript forms carry no action, so those still pass.
What happened when we tightened the check?
It learned genuine habits, and found the next gap. Round 2 started from the version that had gamed the old rule, now failing under the new one, and kept three edits: give a form somewhere to send, make every edit with the file tools rather than a script it cannot run, and reopen every file to check each item before saying it is done.
| Held-out sites 51 to 100, stricter rule | Passed | Points gained | Cost a run |
|---|---|---|---|
| v1, the starting instructions | 34 of 50 (68%) | 10.5 | $0.126 |
| Learned in rounds 1 and 2 | 48 of 50 (96%) | 13.3 | $0.106 |
On all 16 held‑out sites missing a way to get in touch, its forms send to a page on the same site. A static page cannot receive a form, so the messages still go nowhere. The sites gave no email, so a working email link was not possible, and the learner took the next cheapest way through the check.
What does this say about self-improving agents?
That the check is the product. A self-improving loop optimizes exactly what it is measured on. Tighten a stand-in and it finds the next cheapest one: first a form, then a form with an address that leads nowhere. The check that holds measures the outcome itself, whether a message sent through the form arrives where a person reads it.
It also means the loop is useful even where it games the check, because it finds the gaps faster than a person would. Each time it gamed ours, it showed us exactly what the rule failed to measure.
References
- Google Research, “Harness²,” source code and paper. Read October 2026. github.com
- subinternal Research, “Inside Harness², Google’s open-source agent that rewrites its own harness.” October 2026. subinternal.com
- DeepSeek, “Super-agent” prototype and design essay. Read November 2026. github.com
- clickd, the rulebook every page is checked against. Read November 2026. clickd.com
