Agent evolution · Meta-evolution · 2026

FreeEvolveLearning to Evolve Beyond Fixed Loops

Lecheng Kong1*, Like Hui1*, Nikos Kanakaris1, Prithwish Jana2†, Sahika Genc1, Narayanan Sadagopan1

1AWS AI Labs  ·  2Georgia Institute of Technology * Equal contribution  ·  † Work done as an intern at AWS AI Labs

freeevolve / campaign-01TRACE REPLAY
Decisionwaiting for campaign
Best score0.54 →
Campaign actions0
Framework loopnone
The optimization process becomes learnable
Not a loop engineered in advance.
A capability learned from experience.

Meta-evolution learns a reusable evolution skill from completed campaigns, then installs it unchanged on fresh target agents.

+13.6 pts avg primary held-out gain+6.9 pts meta-evolved skill vs seed4 environmentsadaptive probe · branch · repeat · stop

Trace replay of the paper's reported campaign behavior; not a live model.

Video overview

See how FreeEvolve works

A short introduction to campaign autonomy, meta-evolution, and the adaptive strategies learned by the evolver.

Video hosted on LinkedIn. Open the original post.

TL;DR

Agent evolvers edit the prompts, skills and workflows around a language-model agent, yet a human still designs the search loop they run in. FreeEvolve gives that loop to the evolver. It decides what to test, how much evidence to collect, which candidates to keep and when to stop. An editable evolution skill guides those decisions, and meta-evolution improves the skill by scoring the agents it produces.

+13.6pts
average held-out gain on the primary metric, across four environments
6of 7
held-out metrics where FreeEvolve matches or beats hand-designed evolvers
+6.9pts
added by meta-evolution over the seed skill, on fresh workers
1call
per campaign; no external loop fixes executions, search or stopping
Motivation

The search loop is still designed by hand

An evolver runs a target agent, reads its failures and edits its harness. Around that edit step sits a loop that someone wrote in advance.

The loop decides which tasks are evaluated, how often a measurement is repeated, how candidates are compared and when the search stops. Each choice encodes a guess about evaluation noise, task difficulty, useful curricula and available parallelism. Those guesses differ across agents and environments, and they go stale as evidence arrives. An evolver that only proposes edits cannot act on what it learns, so adapting the loop means re-engineering it by hand.

FreeEvolve moves each of those decisions inside the evolver.

Prescribed loopfixed before the run
FreeEvolvedecided by the evolver from evidence
Task schedule
Preset, the same every round
Adaptive curriculumTest where failures cluster
Evaluation budget
Fixed for every candidate
Resource allocationRepeat only the close calls
Acceptance rule
Fixed before the run
Regression controlRe-check before accepting
Branching & stopping
Fixed width and number of rounds
Search strategyBranch, and stop on evidence

Autonomy alone is not enough

Handing over control does not by itself produce a good campaign. With the hand-written seed skill, the evolver improves a fresh worker by at most 1.1 points. After meta-evolution, the frozen skill improves fresh workers by 2.2 to 13.8 points, and the skill learned on τ³-bench also improves ARC-AGI-2 and ARC-AGI-3.

Held-out gain over the base workerpoints, same fresh worker and budget for both skills
  • Seed skill (autonomy only)
  • Meta-evolved skill
Show data
Method

One invocation, two levels

A conventional evolver framework calls a proposer at fixed stages and keeps control of evaluation, selection and stopping. FreeEvolve invokes the evolver once, and the evolver stays in control until it returns an improved target.

The same interface works at two levels. At the agent level, the evolver improves a worker. At the meta level, the editable target is the evolution skill itself, and each candidate skill is judged by the workers its campaigns produce.

Diagram. (a) The environment holds the goal, evolution data, editable target, execution function and valid requests. The evolver, a coding agent with skill s, is invoked once, sends requests (x, u) choosing tasks, repeats, concurrency and timeout, and receives scores, traces and logs into a campaign state of kept and dropped candidates, returning x-star when it decides to stop. (b) Meta-evolution: an outer evolver edits a copy of skill s; one execution runs whole worker campaigns Evolve(s; E_i) that each return a worker, score and trace; it returns a frozen reusable skill s-star.

Scroll sideways to see the whole figure.

The interface at both levels. (a) The environment fixes the goal, data, editable target, execution function and valid requests. Each request \((x, u)\) picks a candidate and how to run it; the returned artifacts steer the next request, and the evolver returns \(x^\star\) when it decides to stop. (b) Meta-evolution applies the same Evolve with the skill as the target. One execution runs complete worker campaigns.

A bounded environment

Giving control to the evolver needs a clear boundary. Inside it the evolver can explore however it likes, but it cannot change the goal, the evaluation rules or the resource limits. An environment initialized with target \(x_0\) is

\[ \mathcal{E}[x_0] = \big(g,\ \mathcal{D},\ x_0,\ R_{\mathcal{E}},\ \mathcal{C}_{\mathcal{E}}\big) \]

The request \(u\) is where autonomy lives. The evolver picks which tasks to run, how many repetitions and seeds, and how much concurrency and time each execution gets. A prescribed loop fixes \(u\) before the run, so its evolver only ever sees \(R_{\mathcal{E}}(x)\) under one setting.

The evolver runs the whole campaign

The evolver is Claude Code equipped with a single markdown file of instructions, the evolution skill \(s\). A complete campaign is one call:

\[ x^\star = \mathrm{Evolve}\big(s;\ \mathcal{E}[x_0]\big) \equiv s\big(g,\ \mathcal{D},\ x_0,\ R_{\mathcal{E}},\ \mathcal{C}_{\mathcal{E}}\big) \]

The framework provides access to \(R_{\mathcal{E}}\) and takes no further role. The evolver decides which candidate to edit, which request to issue, how the returned artifacts change its next move and when to return \(x^\star\). Stable measurements let it move on, close comparisons justify more repetitions, and failures concentrated in one part of the data can be searched there before a candidate is validated broadly.

What is still written by hand

Two pieces, and neither is an evolution loop. Claude Code's own read, act, observe loop is generic tool use with no evaluation schedule, acceptance rule or stopping criterion. The seed skill fixes only dispositions:

  • Treat ENVIRONMENT.md as the source of truth and edit only the declared target.
  • Keep raw runs and make claims proportional to the evidence.
  • Use the available time and continue from the best-supported target.
  • Leave the strongest target under best/ with a short evidence summary.

Which tasks to evaluate, how many repeats to buy, when to branch and when to accept are left to the evolver.

Meta-evolution learns the campaign policy

Because the skill is a text file, meta-evolution needs no new machinery. A meta-environment makes the skill the editable target and uses worker environments as its data, \(\mathcal{D}^{\mathrm{m}} = \{\mathcal{E}^{\mathrm{w}}_i[w_i]\}_{i=1}^{n}\). A candidate skill has no score of its own. It is installed in an evolver, runs complete worker campaigns, and is judged by the workers and traces they produce:

\[ R_{\mathrm{m}}(s, u) = \mathrm{EvaluateWorkers}\Big(\big\{\mathrm{Evolve}\big(s;\ \mathcal{E}^{\mathrm{w}}_i[w_i]\big) : i \in I(u)\big\}\Big) \]
\[ s^\star = \mathrm{Evolve}\big(s_{\mathrm{outer}};\ \mathcal{E}^{\mathrm{m}}[s_0]\big) \]

The outer evolver edits \(s_0\), decides which inner campaigns to launch and reads their outcomes as feedback. \(s_{\mathrm{outer}}\) and \(s_0\) start as separate copies of the same seed, so editing the candidate never changes the controller. Meta-environments are excluded from their own data, which bounds nesting at two levels. The result is a frozen skill that can be installed in new environments without carrying over any source worker or campaign state.

What the evolver actually sees

One call to evolve.sh installs an environment in a fresh run directory and invokes the agent once. The meta-environment uses exactly the same layout.

$ ./evolve.sh --env arc_agi_3
run/
├── ENVIRONMENT.md    # goal, data, limits, how to read results
├── .target           # the editable surface x₀
├── run.sh            # R(x, u): run a candidate under request u
└── workspace-<env>/  # candidates, artifacts, notes (starts empty)

The environment files stay fixed for the whole campaign; only the declared target is editable. Evaluation always reads the declared edit surface, so the candidate being scored is the candidate being evolved.

Worker: ARC-AGI-3Meta: evolution skill
Targetagent/arc3_agent/, the game-playing harnesstarget/SKILL.md, instructions for a whole campaign
One runSelected games and attemptsA complete worker-evolution campaign
EvidenceRHAE, levels, actions, per-game tracesInner evaluations, workers, cost, campaign trace
Budget12 h on one 128-CPU node, ≤ 24 concurrent attempts24 h on five Slurm nodes, ≤ 5 inner campaigns at once
Q1Can a learned autonomous campaign perform well without a prescribed loop?

Stronger workers than hand-designed evolvers

We compare against GEPA, OpenEvolve and EvoX (SkyDiscover settings) and HyperAgents (default settings). Every method searches only on the evolution split, picks its final worker by its own rules, and only then is the held-out split revealed. Each returned worker is evaluated on held-out tasks three times.

τ³-benchTool-mediated banking conversations with a simulated customer.
split
68 evolve / 29 held-out
metric
mean, pass@3
worker
Claude Opus 4.8
ARC-AGI-2Few-shot visual grid transformations that test rule induction.
split
56 evolve / 111 held-out
metric
mean, pass@3
worker
Claude Opus 4.7
ARC-AGI-3Interactive abstract-reasoning games, scored on action efficiency.
split
17 evolve / 8 held-out games
metric
RHAE
worker
Claude Opus 5
Terminal-Bench 2.1Containerized command-line tasks across software, systems and science.
split
61 held-out tasks
metric
mean, pass@3
worker
Claude Opus 4.8
Primary held-out metricmean ± s.d. over three held-out runs of each returned worker
  • Base agent
  • Hand-designed evolvers
  • FreeEvolve
τ³-benchmean (%)
ARC-AGI-2mean (%)
ARC-AGI-3RHAE (%)
Terminal-Bench 2.1mean (%)

FreeEvolve improves the primary held-out metric by 13.6 points on average and has the best result on six of seven metrics. It also matches or beats EvoX and HyperAgents, which meta-evolve their own search procedures. Moving the target of meta-evolution from a specific search loop to the organization of the campaign pays off.

Terminal-Bench 2.1 is the exception: FreeEvolve has the best pass@3 but trails GEPA on mean score. Terminal evaluation is CPU-heavy, and a shared concurrency setting causes blocking and uneven throughput that the environment does not yet expose to the evolver.

Methodτ³-benchARC-AGI-2ARC-AGI-3Terminal-Bench 2.1
MeanPass@3MeanPass@3RHAEMeanPass@3
Base agent33.3±5.348.355.4±4.075.061.0±1.180.9±5.088.5
GEPA202535.6±2.551.758.0±5.776.465.8±2.684.7±2.491.8
OpenEvolve202535.6±2.455.258.6±5.079.163.4±1.582.5±1.890.2
EvoX2026meta36.8±3.558.664.0±6.480.065.1±3.482.0±1.890.2
HyperAgents2026meta36.8±5.158.659.6±4.277.872.1±2.882.5±2.190.2
FreeEvolve meta51.7±6.069.069.1±5.486.581.6±3.082.5±2.593.4
relative gain over base+55.3%+40.5%+24.7%+15.3%+33.8%+2.0%+5.5%

Held-out performance (%) of the worker each method returns. Bold marks the best in each column. meta marks methods that also meta-evolve their search procedure. Baselines run until improvement stalls for five iterations; FreeEvolve receives a 24-hour meta-evolution budget.

Wall-clock hours by method
Q2Does meta-evolution turn campaign autonomy into a stronger evolver?

Meta-evolution produces a better evolver

Each skill is frozen and installed on the same fresh base worker with the same resource budget. No evolved worker or campaign artifact carries over. The no-data variant asks an LLM to improve the seed skill without seeing any execution results.

Frozen skills on fresh workersheld-out score; Δ is meta-evolved minus seed
  • Base worker
  • Seed skill
  • No-data rewrite
  • Meta-evolved skill
Show data

The seed skill already improves workers, but only by 0.6 points on average across the four mean metrics. The meta-evolved skill adds a further 6.9 points, improves every available pass@3 metric and beats the no-data rewrite in every environment. The gain comes from execution experience. Rewriting the instructions without it does not reproduce the effect.

Q3Does the learned skill generalize beyond its source environment and model?

Learned skills transfer across environments and models

A skill captures how to organize improvement, not a particular worker, so it should be reusable. If it is, the compute-heavy meta-evolution runs once and the resulting evolver serves new environments. We freeze each meta-evolved skill and install it on a fresh worker in every target environment.

Cross-environment transfer of frozen skillsheld-out score of a fresh worker; the small number is the change over the minimal seed
worse better than seed skill meta-evolved on this environment

Transfer is positive on most target metrics. The τ³-bench skill reaches 64.3% on ARC-AGI-2 and 71.0 RHAE on ARC-AGI-3, matching or beating the skills meta-evolved on those environments directly. Both single-source skills lower the Terminal-Bench mean, which marks a boundary when the target's hardware and execution behavior change a lot. Meta-evolving on τ³-bench and Terminal-Bench 2.1 jointly gives a skill that improves every target metric over the seed.

Evolved workers run on cheaper models

Each method evolves its harness with the native Opus worker; the frozen harness then runs unchanged with Sonnet 4.6 and Haiku 4.5. FreeEvolve is the strongest harness in all six settings and keeps a 5.3-point average gain over the base harness on the four non-native ones, while several baseline gains on τ³-bench shrink or reverse. A worker can be evolved with a strong model and deployed with a cheaper one without re-evolution.

Frozen harnesses on other worker modelsheld-out mean (%)
Opus 4.8 (native)
Sonnet 4.6
Haiku 4.5
Show data

A stronger skill for fewer tokens

On ARC-AGI-3 we track the best training RHAE of the worker each method's skill produces against the total tokens spent to produce that skill, counting every evolver, evaluation and model call. FreeEvolve reaches 90.6 at 0.74B tokens. The best baseline stops at 81.7 after 1.3B.

Token efficiency on ARC-AGI-3best-so-far training RHAE vs. total tokens; hover to compare
    Show data
    Q4How does the evolver use campaign autonomy as evolution unfolds?

    The campaign reorganizes itself as evidence arrives

    Here is one ARC-AGI-2 worker-evolution campaign run under a frozen meta-evolved skill. Every marker is one evaluation on the evolution set, plotted against elapsed hours. None of the annotated moves is a stage of the framework. The evolver chose each one when the campaign called for it.

    Scatter of evolution-set performance against elapsed hours over 16 hours for one ARC-AGI-2 worker-evolution campaign. Annotations mark the evolver's decisions: three edits at once (good and bad); dropped two edits, recovered; a dataset subset confirmation probe; merged two versions; an extra repetition to confirm the gain; four search branches from an ancestor (all three, hypothesis only, grids only, review only). A star marks the harness the evolver picked.

    Scroll sideways to see the whole figure.

    One campaign, as it happened. Circle area is the number of trials; double rings are repeated draws pooled together; triangles are subset probes; crosses are crashed runs. The grey band is the middle half of all rounds. The star marks the harness the evolver returned.
    ≈0.7 → 1.3 hUndo a regressionThree edits at once cost 0.18. It dropped two and kept the helper library, recovering 0.23.
    ≈1.4 hProbe cheaply15 rollouts on 2% of a round showed that a truncation came from the agent's own prompt rather than the platform.
    ≈4.9 hCombine discoveriesMerged the best-performing code so far with a good fix found in an underperforming run.
    ≈7.4 hBuy more evidenceDrew the same version three times and pooled the draws to confirm a gain.
    ≈12.2 hBranch the searchSplit an ancestor four ways: all three changes, hypothesis only, grids only, review only.

    The harness it returned is not simply the highest single score. When choosing what goes in best/, the evolver weighs how many evaluations and paired comparisons back each candidate.

    Removing one decision weakens the result

    On τ³-bench we keep the learned skill and budget fixed and take away control of one execution decision at a time. Always evaluating the full set makes the evolver wait on expensive probes, so it makes fewer decisions within the time budget. A fixed concurrency of 24 or no task timeout leaves resources tied up by slow or failed executions; both spend more tokens and still produce a weaker worker. No single configuration is best. The benefit comes from being able to reorganize evaluation as the campaign unfolds.

    Fixed-decision ablations on τ³-benchsame learned skill and budget; one decision taken away at a time
    • Evolver controls u
    • One decision fixed
    Held-out mean% (± s.d.)
    Total tokensbillions
    Show data

    What meta-evolution writes into the skill

    Comparing the four meta-evolved skills with their common seed shows what was learned. The seed gives broad dispositions and leaves the organization of the campaign open. Meta-evolution turns those dispositions into operating rules for task selection, evaluation allocation and search control: use failures to choose new probes, move from cheap tests to confirmation only when warranted, and keep or combine changes according to accumulated evidence.

    Seed disposition
    Policy learned by meta-evolution
    Realized advantage
    Task selectionSome failure you have not explained.
    τ³-bench skillRead transcripts, tool calls, and grader output; group failures by cause; work on the largest group.
    Adaptive curriculumTarget the largest failure cluster.
    Candidate promotionYour next attempt starts from your best.
    ARC-AGI-3 skillUse per-item signs, not only the mean; re-evaluate the nominee; keep the accumulated version over the luckiest draw.
    Regression controlKeep supported gains instead of a noisy maximum.
    Seed skill · SKILL.md (abridged)
    Read ./ENVIRONMENT.md. It states the goal, how to run an evaluation, and where the results appear. It is the source of truth for what counts as better. ... The evaluation always runs the named agent: edit it in place, and leave it where it is. ...
    
    ... Spend the available wall-clock budget and reserve enough time to leave the work in order. When time is up, leave the strongest version at best/ and a short RESULT.md stating what it is and what evidence says it is strongest.
    Meta-evolved skill · SKILL.md (abridged)
    Treat an evaluation as evidence about the learner. Read the inner run, including its raw measurements and trace, before deciding what to change in the evolver instructions. Nominate the best-supported version; do not confuse the last edited state with the best version.

    The meta-evolved version adds a fuller experimental procedure: establish a baseline, diagnose failed trajectories, test different kinds of change, account for noisy measurements, keep candidate versions and restore the best-supported target before finishing.

    Q5What model capability does effective campaign control require?

    Campaign control needs a capable model

    We keep the τ³-bench worker and the meta-evolution setup fixed and change only the model that runs the evolver, from Haiku 4.5 to Opus 4.8.

    Evolver model vs. held-out result on τ³-benchheld-out mean (%) ± s.d. of the worker produced; dashed line is the base worker
    Show data

    Haiku 4.5 improves neither held-out metric: its evolution-split score climbs to 52.2 while held-out accuracy falls to 32.2. From Sonnet 4.6 onward, meta-evolution consistently improves held-out performance, and the strongest Opus models produce the best workers. Gains generally grow with newer and stronger models, although Sonnet 4.6 beats Opus 4.6.

    Takeaway

    The optimization process can be learned

    Agent evolvers automated the design of harnesses but left the process that designs them in human hands. FreeEvolve automates that process too. The evolver runs its own improvement campaign inside a bounded environment, and meta-evolution learns from the outcomes how to run it. Across four environments the self-organized campaign matches or beats hand-designed evolvers, and the learned skill keeps improving with experience and transfers to new environments. What it carries is a way of running an improvement campaign, not domain knowledge.

    Limitations

    • Held-out gains need a capable evolver model. Haiku 4.5 did not produce them; Sonnet 4.6 and stronger did.
    • Transfer weakens when the target's hardware and execution behavior differ a lot, as on Terminal-Bench 2.1.
    • Meta-evolution consumes substantial compute. Bounded nesting, retained evaluation records and separate acceptance make runs auditable, but they do not make autonomous improvement safe for high-stakes deployment.
    Citation

    Cite FreeEvolve

    @misc{kong2026freeevolve,
      title         = {FreeEvolve: Learning to Evolve Beyond Fixed Loops},
      author        = {Kong, Lecheng and Hui, Like and Kanakaris, Nikos and
                       Jana, Prithwish and Genc, Sahika and Sadagopan, Narayanan},
      year          = {2026},
      eprint        = {2610.09197},
      archivePrefix = {arXiv},
      primaryClass  = {cs.AI},
      url           = {https://arxiv.org/abs/2610.09197}
    }