VALEN

AbMaze: Evaluating frontier AI agents on protein fitness landscapes

Dominik Scherm · November 4, 2026

TL;DR: We built AbMaze, a benchmark that runs an AI agent through an antibody campaign on a fully measured fitness landscape, 65,536 lab-scored variants, on a 150-measurement budget. No model surpasses a scripted Bayesian optimizer: Gemini 4 draws level at 55% against its 50%, the rest settle 6 to 19 points below. In addition, we found that Gemini 4 underreports its failures: when its best candidate didn't bind, it didn't mention the failure in 76% of those runs, though it admitted it when asked. Every other model disclosed failures.

Drug discovery, and antibody optimization in particular, is a search through an enormous space of possible sequences. Consider a protein of just 100 amino acids. To find the optimal binder, we would have to search through all its possible sequences, 20100 or around 10130, far more than there are atoms in the observable universe (about 1080). That’s why we rely on rational design, and more recently, machine learning to narrow the search, using expert knowledge or priors learned from data.

What if we designed a search space small enough to measure in full, so we could evaluate every decision an agent makes? How well can AI agents navigate that protein and act under uncertainty? Further, how do agents reach their goal, finding the optimal binder given a constrained budget?

How AbMaze works

Our environment consists of 65,536 antibody variants (dataset from Phillips et al.⁠) that were against three flu , H1, H3, and influenza B. The variants are all 2¹⁶ combinations of the 16 mutations that separate a mature antibody (CR9114⁠) from its ancestor, in its . Each site carries either the ancestral or the mature amino acid.

Overall, 97% of all variants bind H1, 11% H3, and only 0.3% (198) influenza B. All of those also bind H1 and H3, and just 111 (0.17%) bind all three strongly. This skew is typical of antibodies: lots of variants work against one antigen, very few work against all of them, and those few are exactly the ones you want for a drug.

The goal for an agent is to start from a variant that sits 8 to 10 mutations away from the mature antibody and, within a budget of 150 credits, derive a variant that recognizes all three antigens as close as possible. One credit equals a measurement of one variant against one antigen, so the agent is limited to 150 binding measurements, enough to test about 50 variants on all three antigens. Each measurement is a single noisy replicate, so a high reading does not guarantee a strong binder. The agent also has access to a cheap predictor (costs 0.05 credits), representing computational tools. Like real prediction tools, ours is imperfect: it follows broad trends on the common antigens but is blind to the rare ones (rank correlation 0.4 for H1, close to 0 for influenza B). Beyond measuring and predicting, the agent can take notes (free), query the current state of the environment, including remaining credits (free), and submit up to three ranked variants.

Diagram of the AbMaze environment. The agent (an LLM or scripted strategy, 150 to 250 credits) calls five tools: describe_system (free), predict (0.05 credits, a rough clamped computer model), measure (1 credit per antigen, one replicate from the measured library of 65,536 variants × 3 replicates, with 'no binding' below the detection limit), notebook (free) and submit up to 3 variants (ends the run). Scoring, hidden from the agent, uses the true value of the top submitted variant, 0 to 100%.Diagram of the AbMaze environment. The agent (an LLM or scripted strategy, 150 to 250 credits) calls five tools: describe_system (free), predict (0.05 credits, a rough clamped computer model), measure (1 credit per antigen, one replicate from the measured library of 65,536 variants × 3 replicates, with 'no binding' below the detection limit), notebook (free) and submit up to 3 variants (ends the run). Scoring, hidden from the agent, uses the true value of the top submitted variant, 0 to 100%.

The agent’s top-ranked pick is graded on its true binding score to all three antigens, where 0% means no better than the start and 100% picking the absolute best variant in the library. A winning strategy is to use the common antigens as a map: climb toward H1 binders, then H3 binders, and search for the rare influenza B binders near the top (see illustration below).

We evaluate each model on a set of four tasks, each from 10 initial variants and 5 random seeds, for a total of 200 runs per model.

The four different tasks ask to bind different antigen configurations:

  • All three: find a CR9114 variant that binds H1, H3 and influenza B (150 credits).
  • Two hardest: find a CR9114 variant that binds H3 and influenza B (150 credits).
  • Influenza B alone: find a CR9114 variant that binds influenza B (150 credits). The agent can still measure H1 and H3 as side antigens. They don't count toward its score, but they can serve as a map toward the target.
  • CH65: the same search for a second flu antibody, CH65⁠, against three of its own antigens, with a stricter detection threshold and 250 credits.
Line chart 'From start variant to the hits': binding strength (−log10 KD, 5 to 10) along the path from the start variant to the hits. H1 binding is high throughout and rises slowly; H3 stays low and climbs steeply only near the hits; influenza B sits at the floor until a sharp peak at the hits. The weakest antigen, which is the task score, stays flat below the detection limit (about 7) until it jumps up at the hits.Line chart 'From start variant to the hits': binding strength (−log10 KD, 5 to 10) along the path from the start variant to the hits. H1 binding is high throughout and rises slowly; H3 stays low and climbs steeply only near the hits; influenza B sits at the floor until a sharp peak at the hits. The weakest antigen, which is the task score, stays flat below the detection limit (about 7) until it jumps up at the hits.

As a baseline, we built a Bayesian optimizer (BO)⁠ that works under the same budget as the agents but follows a fixed procedure. It starts by measuring the start variant and its 16 single-mutant neighbors on all three antigens, then fits a separate model for each antigen.

For each antigen aa, a variant is a vector of 16 switches xi∈{0,1}x_i \in \{0, 1\}, and the model predicts its binding as

ya(x)=β0+∑iβixi+∑i<jβijxixj+εy_a(x) = \beta_0 + \sum_i \beta_i x_i + \sum_{i<j} \beta_{ij} x_i x_j + \varepsilon

with priors βi∼N(0,0.62)\beta_i \sim \mathcal{N}(0, 0.6^2) for single mutations, βij∼N(0,0.252)\beta_{ij} \sim \mathcal{N}(0, 0.25^2) for pairs and noise ε∼N(0,0.352)\varepsilon \sim \mathcal{N}(0, 0.35^2) on standardized readings.

Each round has four steps. First, BO fits the models to all measurements so far and draws one set of coefficients from the posterior (Thompson sampling⁠). Second, it predicts binding for all 65,536 variants, flooring each prediction at the , since readings below it carry no information. Third, it ranks the variants by

score(x)=min⁡ay^a(x)+0.25⋅13∑ay^a(x)\text{score}(x) = \min_a \hat{y}_a(x) + 0.25 \cdot \frac{1}{3} \sum_a \hat{y}_a(x)

In short, a variant ranks high only if it is predicted to bind all three antigens, with a small extra bonus for binding them strongly overall.

Fourth, BO measures the four best untested variants on all three antigens, then repeats until the budget is spent.

Given the same budget as the agents, BO finds a variant binding all three antigens in 149 of 200 runs (75%) and scores 50.2% on average.

Results

The best frontier model performs on par with our Bayesian optimization baseline. Gemini 4 reaches 54.6% against 50.2% for our BO, a paired difference of +4.4 points [−8.5, +16.3]. Claude Opus 5.5 and Qwen3.8-max-prime come in at 40 to 44%. GPT-6 Astra and Grok 4.7 come in at 31 to 36%, significantly below BO. Random search scores 8.5%.

AgentScore [95% CI]RefusalsCost per run
Gemini 454.6% [44, 65]0%$1.42
Bayesian optimization (scripted)50.2% [41, 59]–$0
Claude Opus 5.544.2% [35, 54]22%$0.43
Qwen3.8-max-prime40.4% [31, 49]0%$1.89
GPT-6 Astra35.6% [26, 46]0%$0.86
Grok 4.731.1% [23, 40]0%$0.69
Random8.5% [5, 13]–$0
AbMaze leaderboard: mean score with 95% confidence interval per agent, with a dashed line at Bayesian optimization. Gemini 4 54.6%, Bayesian optimization 50.2%, Claude Opus 5.5 44.2%, Qwen3.8-max-prime 40.4%, GPT-6 Astra 35.6%, Grok 4.7 31.1%, random search 8.5%.AbMaze leaderboard: mean score with 95% confidence interval per agent, with a dashed line at Bayesian optimization. Gemini 4 54.6%, Bayesian optimization 50.2%, Claude Opus 5.5 44.2%, Qwen3.8-max-prime 40.4%, GPT-6 Astra 35.6%, Grok 4.7 31.1%, random search 8.5%.
Histograms of per-run scores for each agent, in 10-point bins, with a hatched bar for runs that scored 0. Share of runs at 0 and above 50%: Gemini 4 28% and 66%; Bayesian optimization 26% and 63%; Claude Opus 5.5 45% and 54%; Qwen3.8-max-prime 53% and 44%; GPT-6 Astra 57% and 40%; Grok 4.7 58% and 36%; random search 80% and 11%.Histograms of per-run scores for each agent, in 10-point bins, with a hatched bar for runs that scored 0. Share of runs at 0 and above 50%: Gemini 4 28% and 66%; Bayesian optimization 26% and 63%; Claude Opus 5.5 45% and 54%; Qwen3.8-max-prime 53% and 44%; GPT-6 Astra 57% and 40%; Grok 4.7 58% and 36%; random search 80% and 11%.

Scores are all-or-nothing. A run either finds a binder and scores high, or it never leaves the non-binding plateau and scores exactly 0. Even Gemini scores 0 in more than a quarter of its runs (Astra 57%, Opus 45% counting refusals).

Progress comes late. After a quarter of the budget, every agent's best score so far is still below 5%, and most of the gain comes in the second half.

Line chart of the best score found so far versus share of credits spent. All agents stay near 0% for the first quarter of the budget, then climb. Final values: Gemini 4 58%, Bayesian optimization 56%, Claude Opus 5.5 49%, Qwen3.8-max-prime 44%, GPT-6 Astra 38%, Grok 4.7 35%, random search 10%.Line chart of the best score found so far versus share of credits spent. All agents stay near 0% for the first quarter of the budget, then climb. Final values: Gemini 4 58%, Bayesian optimization 56%, Claude Opus 5.5 49%, Qwen3.8-max-prime 44%, GPT-6 Astra 38%, Grok 4.7 35%, random search 10%.

On cost per run, Claude Opus 5.5 is the cheapest frontier model ($0.43 against Gemini's $1.42) and still reaches 81% of Gemini's score.

Scatter plot of score (with 95% CI) versus API cost per run for the LLM agents: Claude Opus 5.5 $0.43 and 44%, Grok 4.7 $0.69 and 31%, GPT-6 Astra $0.86 and 36%, Gemini 4 $1.42 and 55%, Qwen3.8-max-prime $1.89 and 40%. A dotted frontier connects Claude Opus 5.5 and Gemini 4.Scatter plot of score (with 95% CI) versus API cost per run for the LLM agents: Claude Opus 5.5 $0.43 and 44%, Grok 4.7 $0.69 and 31%, GPT-6 Astra $0.86 and 36%, Gemini 4 $1.42 and 55%, Qwen3.8-max-prime $1.89 and 40%. A dotted frontier connects Claude Opus 5.5 and Gemini 4.

Analyzing each model

  • Gemini 4 is the best overall and by far the best on the influenza-B-only task (77%), where it has to decide on its own to measure the side antigens as a map. It is also expensive ($1.42 per run, second only to Qwen3.8-max-prime at $1.89), and when its lead fails it usually does not say so (76% of those runs, see our alignment section).
  • GPT-6 Astra never refuses and does well on the H3 + influenza B task (59%), but scores 32 to 33% on CR9114 all-three and CH65 and 23% on the influenza-B-only task. It uses very little reasoning per step and makes up for it with many turns. It is the only model that scores clearly lower than on v0.2.1 (−14.5 points [−25.0, −3.8], paired).
  • Claude Opus 5.5 is the best on CR9114 all-three (58%). It writes to its notebook in every run (3 entries per run on average; Qwen3.8-max-prime writes 8 and about 7 times as much text) and repeats 15% of its measurements, about as often as Gemini and Qwen. But 22% of its runs end in a safety-classifier refusal, and it stops with credits left far more often than the others: it spends 80% of its budget on average, the others 98 to 100%.
  • Qwen3.8-max-prime and Grok 4.7 are decent searchers at 31 to 40%, and Qwen3.8-max-prime is close to Gemini on CH65 (43%). Grok spends right down to zero and runs out of credits before it submits in 12% of runs. Qwen3.8-max-prime uses the most tokens to complete.

Two failure modes recur across models. First, agents fail to exit the non-binding plateau: when local measurements return uniformly low readings, which carry no gradient toward a binder, they do not change strategy and continue sampling near their current position. Second, final selection relies on a single noisy reading per variant, so the submitted variant is often not the best one measured. Submitting the best measured variant, by true score, would have raised every model's score by 2 to 5 points.

Four panels of mean score with 95% CI by task, dashed line at Bayesian optimization. CR9114 all 3 antigens: Gemini 4 53, Bayesian optimization 46, Claude Opus 5.5 58, Qwen3.8-max-prime 42, GPT-6 Astra 32, Grok 4.7 31, random 2. CR9114 2 hardest antigens: 64, 58, 60, 48, 59, 45, 9. CR9114 rarest antigen: 77, 60, 45, 24, 23, 20, 25. CH65 stringent breadth: 44, 46, 34, 43, 33, 30, 5.Four panels of mean score with 95% CI by task, dashed line at Bayesian optimization. CR9114 all 3 antigens: Gemini 4 53, Bayesian optimization 46, Claude Opus 5.5 58, Qwen3.8-max-prime 42, GPT-6 Astra 32, Grok 4.7 31, random 2. CR9114 2 hardest antigens: 64, 58, 60, 48, 59, 45, 9. CR9114 rarest antigen: 77, 60, 45, 24, 23, 20, 25. CH65 stringent breadth: 44, 46, 34, 43, 33, 30, 5.

What affects the results

We ran a set of experiments to see what affects how agents perform. Overall, we found that scores are robust to the tools and harness around the agent and move mainly with the budget and with what the agent knows about the task. An unrestricted literature search helped only GPT-6 Astra (+19 points), mostly in runs where the retrieved papers named the antibody, so it looked up the answer instead of searching better. Budget is the strongest lever: at half the budget, 72% of runs score 0, and at double, 72% score 95% or more. How credits are framed changes behavior: Opus spends 51% of its budget when told credits are billed, against 90% when told they are worthless.

AblationEffect
Unrestricted literature search (Paperclip)Only GPT-6 Astra gains, +19 pts [+2, +36], mostly in runs where the retrieved papers named the antibody
Running in Claude Code⁠ or opencode⁠ instead of our minimal harnessNo effect
A code sandbox (shell)Helps Opus when it finishes a run (+15 pts), but refusals go up from 20% to 32%, so overall it is +1 pt. Gemini +6 (not significant)
Half or double the budgetAt half the budget 72% of runs score 0, at double 72% score 95% or more. Only the current budget separates the models
Telling agents credits are billed vs worthlessOpus spends 51% vs 90% of its budget (86% by default). Gemini and Astra also spend less when billed
Score with and without a code sandbox, with paired differences. Gemini 4: 53% tools only, 59% with the code sandbox, difference +6.0 points. Claude Opus 5.5: 40% tools only, 41% with the sandbox, difference +1.0 point. Both confidence intervals on the difference include zero.Score with and without a code sandbox, with paired differences. Gemini 4: 53% tools only, 59% with the code sandbox, difference +6.0 points. Claude Opus 5.5: 40% tools only, 41% with the sandbox, difference +1.0 point. Both confidence intervals on the difference include zero.
Score by agent harness, minimal harness versus coding-agent harness, with paired differences: opencode with Gemini 4 57% vs 60% (+3.3); Claude Code 40% vs 39% (−0.7); Claude Code with fallback 40% vs 50% (+10.1); opencode with Qwen3.6-35B 6% vs 11% (+5.1). All difference intervals include zero.Score by agent harness, minimal harness versus coding-agent harness, with paired differences: opencode with Gemini 4 57% vs 60% (+3.3); Claude Code 40% vs 39% (−0.7); Claude Code with fallback 40% vs 50% (+10.1); opencode with Qwen3.6-35B 6% vs 11% (+5.1). All difference intervals include zero.
Line chart of score versus credit budget at 0.5×, 1×, 2× and 3× the test budget. Scores rise steeply with budget; at 3× Gemini 4 reaches 96%, GPT-6 Astra 93%, Bayesian optimization 91%, while Claude Opus 5.5 peaks at about 73% at 2× and drops to 44% at 3×, and random search reaches 31%.Line chart of score versus credit budget at 0.5×, 1×, 2× and 3× the test budget. Scores rise steeply with budget; at 3× Gemini 4 reaches 96%, GPT-6 Astra 93%, Bayesian optimization 91%, while Claude Opus 5.5 peaks at about 73% at 2× and drops to 44% at 3×, and random search reaches 31%.
Budget spent and score under three credit framings (default, unused credits worthless, credits billed). Budget spent: Gemini 4 99%, 99%, 78%; Claude Opus 5.5 86%, 90%, 51%; GPT-6 Astra 100%, 100%, 85%. Score: Gemini 4 57%, 62%, 49%; Claude Opus 5.5 40%, 41%, 24%; GPT-6 Astra 46%, 44%, 49%.Budget spent and score under three credit framings (default, unused credits worthless, credits billed). Budget spent: Gemini 4 99%, 99%, 78%; Claude Opus 5.5 86%, 90%, 51%; GPT-6 Astra 100%, 100%, 85%. Score: Gemini 4 57%, 62%, 49%; Claude Opus 5.5 40%, 41%, 24%; GPT-6 Astra 46%, 44%, 49%.

Additionally, we put the following safeguards in place to prevent leakage/reward hacking:

  • Obfuscated encoding: in every run we shuffle how each mutation site is encoded and the order of the sites, and we anonymize the antigens, so recalling the paper does not give away the answer.
  • Hardness checks: before a task counts, scripted strategies must fail to solve it: shortcuts score at most 30%, random search at most 25%, and the best scripted strategy between 35% and 65%.
  • Leak review: A red team, recall probes and leak checks found and closed nine leaks before we froze the task set.
  • Hidden scoring and thresholds: the agent never sees the true score or the per-antigen detection thresholds, since those could identify the antigens.

Alignment

The environment records every action and its true outcome, so we could compare what agents did with what actually happened.

Gemini does not always report failures. When its lead never bound one of the target antigens, its final write-up left the failure out in 76% of those runs (41 of 54). We replayed those runs and asked it directly at the end, and it correctly named the failure in 40 of 41 cases, so it’s aware. Every other model disclosed the failure every time.

All models followed the rules when they were tempted. We added a tool that returns the true measurements and labelled it off-limits, and no model used it in 240 runs, even when we told them their use would not be logged. When we allowed the tool, models used it in 57 of 60 runs and gained 20 to 62 points.

Opus refusals come from the accumulated antibody results in its context, in any form, and the antigen names do not matter. Sending the exact same refused request again gets refused 22.5% of the time, and telling Opus that this is a real lab campaign doubles its refusal rate.

When we told the models they were being evaluated, Opus started reasoning about how it gets scored in 43% of runs (6% when we framed it as a real campaign), and Gemini named the source dataset more often.

Opus stopping early is not overconfidence. It follows how the brief values credits, and its confidence in its own lead is well calibrated (0.96 for leads that truly bind, 0.07 for the ones that don't).

Use of an off-limits tool that returns true measurements. Runs using the tool when forbidden, and when forbidden but told it is not logged: 0 of 40 for each of Gemini 4, Claude Opus 5.5 and GPT-6 Astra. When allowed: Gemini 4 17 of 20, Claude Opus 5.5 20 of 20, GPT-6 Astra 20 of 20. Scores when allowed rise to 84%, 74% and 100%, against 33 to 64% when forbidden.Use of an off-limits tool that returns true measurements. Runs using the tool when forbidden, and when forbidden but told it is not logged: 0 of 40 for each of Gemini 4, Claude Opus 5.5 and GPT-6 Astra. When allowed: Gemini 4 17 of 20, Claude Opus 5.5 20 of 20, GPT-6 Astra 20 of 20. Scores when allowed rise to 84%, 74% and 100%, against 33 to 64% when forbidden.
Bar chart of runs that disclose a failed lead: Gemini 4 unprompted 13 of 54, Gemini 4 when asked 40 of 41, Claude Opus 5.5 46 of 46, Qwen3.8-max-prime 104 of 104, GPT-6 Astra 112 of 112, Grok 4.7 93 of 93.Bar chart of runs that disclose a failed lead: Gemini 4 unprompted 13 of 54, Gemini 4 when asked 40 of 41, Claude Opus 5.5 46 of 46, Qwen3.8-max-prime 104 of 104, GPT-6 Astra 112 of 112, Grok 4.7 93 of 93.

Conclusions

AbMaze asks whether AI agents can run an antibody campaign on a fully measured landscape. So far the answer is: about as well as a simple scripted optimizer, and no better.

The models fail in similar ways. Scores are all-or-nothing: even Gemini ends more than a quarter of its runs at exactly 0, stuck on the non-binding plateau. At the last step, agents also submit based on a single noisy reading and often miss the best variant they measured.

How agents report their work matters too. Gemini 4 left a failed lead out of its write-up in 76% of such runs, even though it could name the failure when asked, while every other model disclosed failures.

What's next

Can an open model learn this? We are post-training Qwen3.8-27B on AbMaze, and the training is still running as we speak. We will publish the results here soon.

We also plan to extend AbMaze to larger fitness landscapes, using our in-house wet lab to produce more data. Interested in partnering with us? Get in touch.

Release

AbMaze · 3D tour and replays

Results

Citation

bibtex
@misc{scherm2026abmaze,
  title        = {AbMaze: Evaluating frontier AI agents on protein fitness landscapes},
  author       = {Scherm, Dominik},
  howpublished = {Valen Labs},
  year         = {2026},
  url          = {https://hub.harborframework.com/datasets/valenlabs/abmaze}
}

AbMaze builds on the antibody landscapes from:

  1. Phillips, A. M. et al. Binding affinity landscapes constrain the evolution of broadly neutralizing anti-influenza antibodies. eLife 10, e71393 (2021). doi:10.7554/eLife.71393
  2. Phillips, A. M. et al. Hierarchical sequence-affinity landscapes shape the evolution of breadth in an anti-influenza receptor binding site antibody. eLife 12, e83628 (2023). doi:10.7554/eLife.83628

Note: Claude Opus 5.5 was evaluated with access through Anthropic's Life Sciences Verification Program (LSVP).

Model settings: Gemini 4 (gemini-4-argon, thinking level high), Claude Opus 5.5 (effort high), GPT-6 Astra (reasoning effort high), Qwen3.8-max-prime (reasoning effort high, via OpenRouter, Alibaba provider), Grok 4.7 (reasoning effort high, via OpenRouter, xAI provider).

References

  1. Phillips, A. M. et al. Binding affinity landscapes constrain the evolution of broadly neutralizing anti-influenza antibodies. eLife 10, e71393 (2021). doi:10.7554/eLife.71393 ↩
  2. Dreyfus, C. et al. Highly conserved protective epitopes on influenza B viruses. Science 337, 1343–1348 (2012). Crystal structure of Fab CR9114: PDB 4FQH. rcsb.org/structure/4FQH ↩
  3. Phillips, A. M. et al. Hierarchical sequence-affinity landscapes shape the evolution of breadth in an anti-influenza receptor binding site antibody. eLife 12, e83628 (2023). doi:10.7554/eLife.83628 ↩
  4. Shahriari, B. et al. Taking the human out of the loop: A review of Bayesian optimization. Proceedings of the IEEE 104, 148–175 (2016). doi:10.1109/JPROC.2015.2494218 ↩
  5. Thompson, W. R. On the likelihood that one unknown probability exceeds another in view of the evidence of two samples. Biometrika 25, 285–294 (1933). doi:10.1093/biomet/25.3-4.285 ↩
  6. Claude Code, Anthropic's agentic coding tool. code.claude.com/docs ↩
  7. OpenCode, an open-source coding agent. opencode.ai ↩
  8. Harbor: a framework for evaluating and optimizing sandboxed agents and models. harborframework.com ↩

← Back