Proprietary

Vibe Code Bench 1-100

Updated 9/16/2026

Can models extend a working web application across future user requests?

Vibe Code Bench 1-100Extending a working app, request by request
ACCURACY

Key Takeaways

  • Vibe Code Bench 1 to 100 (VCB 1-100) evaluates AI models on sustained, multi-turn software development: the ability to evolve a working web application through a long sequence of dependent product requests without breaking what already works.
  • Strong models can sustain several dependent changes, but completing an entire sequence of user requests reliably remains difficult.
  • Claude Opus 5 leads the benchmark at 28.53%, with two models not far behind – Claude Fable 5.1 at 28.00% and GPT-6 Astra at 27.64%.

Background

Most coding benchmarks stop at the first working version. Vibe Code Bench 1-100 measures what comes after: whether a model can evolve a working web application through a long sequence of dependent product requests without breaking what already works.

It picks up where Vibe Code Bench (VCB) leaves off. VCB measures zero-to-one generation, starting from scratch and producing a working web application. VCB 1-100 begins with a complete, fully passing web application from Vibe Code Bench v1.1 and asks the model to keep going.

Each task hands the model an ordered sequence of realistic requests without specific technical details, the kind a PM sends an engineer or a vibe coder types at an agent. Later requests depend on earlier features, data models, permissions and user journeys. The model keeps both its conversation and its code across the whole task. Every iteration has to add the new behavior while preserving all the behaviors before it, and the first incomplete iteration ends the attempt.

This matters because most real software work is not greenfield. It is shipping the next feature, migrating a schema without losing data, applying a policy change consistently across every surface of an app. It is the skill no one-shot benchmark touches, and the one that decides whether coding agents can be trusted with production codebases.

Overview

Long-horizon and realistic product requests

VCB v1.1 measures building an application from a specification. VCB 1–100 starts with a working application and asks the agent to extend it through up to ten dependent requests.

The requests describe product behavior that needs to be changed in plain English, similar to how developers prompt while vibe coding, without any technical jargon. The agent must locate the relevant code, understand existing systems, and choose an implementation of the feature on their own. Later turns retain the code, data, and conversation from earlier work. A short request can require substantial engineering, as compatibility with previously added features needs to be preserved.

Mean prompt length

Characters. Scale: 0–4,000. Select a row for details.

Mean total tokens processed per task

Million tokens. Scale: 0–40. Select a row for details.

Mean file change events per task

File-change events. Scale: 0–40. Select a row for details.

Regression tests ensure that the app stays usable under development

Each iteration includes tests for the new request and selected regression tests for earlier behavior that must remain active. Both sets of tests run against the same submitted candidate app. If a model successfully adds a new feature, but breaks the existing app features in the process, we still consider that a failure.

Regression workflows and coverage

Share of 11299 workflows (%). Scale: 0–100. Select a row for details.

About one third of all workflows in the dataset are regression checks: 3,747 out of 11,299 (33.2%), with the remaining 7,552 (66.8%) covering new feature checks. These numbers span the same 939 requests across 100 application arcs, including the test set and the validation set.

The regressions are a selected subset. At iteration 2 they cover 43.1% of the new request workflows from iteration 1. Later iterations still spend about 30% of each suite on regressions, but they do not re-check every earlier flow.

Methodology

A sequence of changes to one application

Each task starts with a working Vibe Code Bench v1.1 application and its saved app state. The model receives up to ten product requests, one at a time. It edits the same codebase throughout and retains its conversation and tool history. Later requests build on earlier features and decisions; they are not independent coding tasks.

After each change, a browser agent checks the new request and selected regression workflows against the submitted application. Every step must pass for a workflow to pass. The reported score counts consecutive completed iterations as long as they pass with 100% workflow success, stopping at the first incomplete or incorrect iteration. Breaking previous features (from previous iterations or the base app) also counts as failing.

All models use the same modified OpenHands V1 environment, with terminal access and preconfigured Supabase, Stripe test services, and MailHog. Each task has one ten-hour generation budget shared across its iterations. Evaluation time is excluded.

Task construction

Each task consists of a working starting application, an ordered sequence of product requests, and browser-based acceptance tests for each iteration.

Requests build on the product state left by earlier changes. They specify the desired behavior and preservation constraints without prescribing an implementation. The sequence covers five change types and contains up to ten iterations.

Each iteration includes new feature tests and selected regression tests. The tests assess observable behavior rather than require a particular internal code structure. The dataset contains 50 test set scenarios and 50 separate validation scenarios. All model scores reported on this page are only over the test subset.

Five kinds of software change

In software, the tasks cover many different types of changes that will be needed in producing and iterating on a real application.

Our feature requests are categorized into five types of changes, listed below with examples.

Change typeWhat the agent must doExample
AdditiveAdd a capability while keeping existing flows working.Add a private Saved area for posts, with notes.
Cross-cuttingApply one rule across related features and operations.Add opt-in, read-only collection sharing across the feed, profiles, and shared links.
Schema migrationChange the data model without losing identity or history.Organize saved posts into collections without losing any saved post or note.
Bug fixDiagnose a reported symptom and preserve valid nearby behavior.Make sure revoked share urls stay unavailable after new share urls are generated.
RevertRemove a feature while retaining explicitly preserved behavior.Remove public sharing while keeping collections, memberships, and notes.
Five kinds of software change distribution

Share of 939 requests (%). Scale: 0–100. Select a row for details.

Cross-cutting changes form the largest group. Success requires applying a rule consistently across the product, not only adding a screen or endpoint. Migrations and reverts test a different skill: changing or removing functionality while retaining the data and behavior that must survive.

Quality Assurance

Tasks undergo expert review for clarity, realism and consistency. The experts also review the iteration checks to ensure that expected behavior in the checks follow from the request and that all reasonable implementations can satisfy the tests.

Each workflow must have reproducible setup, actions a browser can perform, and a clear result.

The review checks four things:

  • Prompt/test agreement: Every tested expectation is supported by the request, and each core requirement has a corresponding check.
  • Executable workflows: The steps can be performed in a browser, with enough setup information and a clear yes-or-no result.
  • Realistic scope: The request gives enough information for a useful implementation without prescribing an unnecessary technology stack.
  • Preservation and edge cases: The requested change does not contradict earlier live behavior, and important unhappy paths are covered.

Task review and execution checks serve different purposes: one checks what should be tested; the other checks that the application and test can run. Missing or incomplete observations are not treated as proof of an implementation defect.

Example task: Zeeter

Zeeter is a small social application with accounts, posts, profiles, likes, and follows. This standalone example is a separate task, not part of the test or validation sets.

IterationProduct requestBehavior that must survive
1Add private saved posts and notes.Existing posts, likes, follows, and account privacy.
2Organize saved posts into collections.Saved records and private notes.
3Add opt-in, read-only collection sharing.Collection membership and note privacy.
4Keep revoked links expired after sharing resumes.Access to independently shared collections.
5Remove public sharing without losing data.Private collections, memberships, and notes.
6Reflect source edits and show deleted post placeholders.Saved references and the removal of public sharing.

Example request — iteration 1

Add a private Saved area where signed-in members can save and unsave posts from the feed, profiles, and post detail, then find their saved posts without changing likes or follows. Each saved post can have a private note of up to 500 characters; repeated saves must produce one entry, and saved posts must show the current source text after edits. Guests and other members must not see a member’s Saved area or notes.

Example acceptance workflow — save from the feed

1. Open Zeeter. Sign out if needed. Create username 'zt1w1owner', email 'zt1w1owner@example.com', password 'ZeeterPass123!'. Complete or skip profile setup to reach the home feed.

2. For this workflow only, the separate reader account is username 'zt1w1reader', email 'zt1w1reader@example.com', password 'ZeeterPass123!'. Create it only when instructed; later sign-ins use these same credentials. The original author is 'zt1w1owner' with password 'ZeeterPass123!'.

3. Publish a post with text 'zt1w1alpha source post'. Save it from the home feed.

4. Open Saved and confirm exactly one entry for 'zt1w1alpha source post'. Reload and confirm it remains.

In the example below, this workflow passed all four steps. Other workflows check note privacy, repeated saves, and existing interactions. Later regression checks include a previously shared URL: removing its button is not enough if guests can still open the URL.

Note that in real tasks from the test set the workflows are longer and test more complicated aspects of the changes, such as edge case interactions.

Example generated output

The image below shows the Zeeter starting app during a browser replay.

Zeeter starting app

The evaluation GIF below shows this save-from-feed workflow after iteration 1.

Zeeter iteration 1 saved posts

Evaluation

We use Browser Use to evaluate the submitted application through its user interface. The evaluator agent follows each workflow and checks the expected behavior. Each iteration includes checks for the new request and selected regression checks for earlier functionality.

A workflow passes only when every step succeeds. The reported score credits an iteration only when all its workflows pass. We stop the task after the first incomplete iteration - if an application is broken we do not attempt to add more features on top.

A scenario’s score is the number of consecutive iterations passed, divided by the number planned for it. The benchmark score is the mean across scenarios. All models run on the same OpenHands harness, against the same scenarios and the same checks.

Results

How many iterations each model completes

Claude Opus 5
28.5%
Claude Fable 5.1
28.0%
GPT-6 Astra
27.6%
GPT-5.6 Luna
22.6%
Muse Spark 1.3 Max
20.5%
GPT-5.6 Sol
20.0%
GLM 5.3
20.0%
Gemini 3.8 Flash
18.8%
Kimi K3
18.2%
DeepSeek V4 Pro 0813
17.5%
DeepSeek V4.1 Flash
16.4%
GLM 5.3 Flash
16.0%
GPT-5.6 Terra
14.8%
Grok 4.6
14.8%
Claude Sonnet 5
13.8%
Qwen 3.8 Max
12.8%
MiniMax-M3
9.2%
Inkling
7.3%
Gemini 3.1 Pro Preview (02/26)
6.7%
No credited iteration1–2 passed3–5 passed6+ passedFull arc

50 tasks per model. Values at right show benchmark scores.

Within a single model’s runs, the ability to reliably modify the existing application varies sharply. Even the leading models have many tasks where they fail at the first request in the existing app. Sustaining several changes is doable for many models, but none do so consistently across all tasks.

Performance by change type

Performance by change type

Evaluated iterations passing every workflow (%). Scale: 0–100. Select a row for details.

Across the reange of models, reverts have the highest pass rates and schema migrations the lowest. Removing functionality while preserving required behavior is easier for the agents to perform correctly without breaking other features than changing the data model beneath a working application.

Note: The models reach different iteration requests depending on whether they pass previous tasks, so the comparisons across models is not necessarily exact.

Failure to implement vs. Breaking what already works

Implementing the new request is only one part of maintenance. A change often damages behavior that worked before, even when the new feature is implemented correctly .

New and regression checks

Share of graded first-stop failures (%). Scale: 0–100. Select a row for details.

Most recorded workflow failures involve new request checks alone. Regression failures also contribute substantially, either on their own or alongside broken new features. Preserving existing behavior remains a separate challenge from implementing new features.

How models use their tools

Opus and Fable use the browser more frequently than Astra. Astra relies more on explicit task tracking and also runs browser automation through the terminal. This shows that similar overall scores can emerge from different working styles.

Mean tool calls per iteration
3/19 models

Where the model inspects the running app varies significantly. Opus and Fable put about one third of their calls in the browser. Astra puts about one ninth there and uses the task tracker more than either of them: 11 tracker calls per iteration, versus 3.7 for Opus. Grok spends most of its calls in the file editor and almost none in the browser. Gemini Pro and Inkling also rarely open the native browser, and all three sit in the bottom third of the table. Astra is the exception among the high scorers: it checks its work with HTTP requests from the shell rather than by driving the browser.

Refusals and fallbacks

ModelTasks with recorded refusalsTasks using fallback
Qwen 3.8 Max24/500/50
Claude Fable 5.114/5014/50

Only two models had refusals (task was rejected completely) or fallbacks (the task was routed to another model for completion). Qwen 3.8 Max refuses and the task stops there as there is no fallback enabled. Claude Fable 5.1 refuses in 14 tasks and all 14 continue, with Claude Opus 5 taking over the refused turn. Occasionally Fable 5.1 also falls back to Opus 4.8, but this covers only a couple of turns across the whole benchmark. On all tasks, the refusals eventually stop and Fable 5.1 takes back over before iteration submission.


Qualitative analysis

Failure modes

Claude Opus 5
n=48
Claude Fable 5.1
n=46
GPT-6 Astra
n=45
GPT-5.6 Luna
n=45
Muse Spark 1.3 Max
n=48
GPT-5.6 Sol
n=48
GLM 5.3
n=48
Gemini 3.8 Flash
n=47
Kimi K3
n=48
DeepSeek V4 Pro 0813
n=49
DeepSeek V4.1 Flash
n=49
GLM 5.3 Flash
n=47
GPT-5.6 Terra
n=47
Grok 4.6
n=40
Claude Sonnet 5
n=41
Qwen 3.8 Max
n=32
MiniMax-M3
n=47
Inkling
n=38
Gemini 3.1 Pro Preview (02/26)
n=48
New checks onlyRegression checks onlyNew + regression checks

Recorded workflow-failure stops only. Select a segment for exact counts.

Failures often cross feature boundaries. A wrong record association or inconsistent ledger can affect both a new workflow and an existing one. Other failures stay local: a missing control may block the new request while earlier behavior remains intact. Failed check groups show where behavior breaks, but do not identify the cause on their own.

Failed workflow groupsFailure patternObserved exampleWhat the evidence supports
New onlyMissing operation or controlAstra, contract management, iteration 3: the evaluator could not find Snooze 7d on obligation reminders.A specific missing operation, not a claim that the whole reminder system failed.
New + regressionAccounting inconsistencyTerra, coding bootcamp payments, iteration 1: receipts remained present, but the ledger lacked the expected paired entries and balanced totals.Preserved visible records can coexist with incorrect accounting structure.
New onlyPrivacy boundary violationOpus, resume builder, iteration 4: private resume fields were copied into a cover letter and appeared in its guest view.Protecting the original record does not protect a public derivative that copies its data.
New onlyDuplicate state changeInkling, patient portal, iteration 1: one follow-up appeared twice while resolve/reopen transitions were recorded correctly.A duplicate write symptom, distinct from the working status transitions.
New onlyState or test assumption mismatchOpus, contract management, iteration 1: self-testing left an inherited agreement at revision 2 while a migration check expected revision 1.Testing of the app during generation should not affect production data.
New + regressionWrong record associationTerra, coding bootcamp payments, iteration 1: the historical import created a duplicate student instead of attaching records to the existing student.Feature and regression workflows both observed the incorrect association. One shared defect can affect both groups.

Among failures on new checks alone, reviewed examples include missing controls, privacy leaks, duplicate writes, and state assumptions. The mixed example shows accounting and record association failures affecting both new and regression checks.

Astra blocks itself on resolvable clarification

One distinct failure mode that we see across multiple tasks is that Astra asks for clarification on certain points and blocks without recieving results. This causes a failure, as system prompt that the model cannot ask questions of the user, and there is no interaction with the user included in the benchmark. The specific clarification points Astra asks about are points that the model is either expected to be able to understand the correct behavior on its own, or are points where it is ensured that any reasonable implementation will pass the tests (no tests are added for interactions which are unspecified). For example, in a request to add a persistent edit history summary to a ledger, the model requested clarification on whether the delete all data function should also delete edit history. This exact interaction is not tested in the iteration checks, and either option would be acceptable. The model does not continue without receiving an answer and did not complete implementation, causing it to fail the task despite having a plan for the iteration that may have had the ability to succeed.

Multi-iteration trajectories across models

This shows an example of how each model works through one fixed reference task, iteration by iteration. Most interleave editing with browser checks, though the timing differs: Opus 5 and Fable 5.1 spread their browser use evenly across an iteration, while Gemini 3.8 Flash and Kimi K3 push most of it late. The mix also shifts from one request to the next, as GPT-5.6 Terra goes from half its calls in the browser at the first iteration to none by the sixth, while MiniMax M3 works without the browser until the last.

Note that some models stop early due to failing a check or hitting the generation time limit.

TerminalFile editorBrowserDatabaseOther
Qwen 3.8 Max
I1
I2
I3
I4
I5
I6
I7
I8
I9
Claude Fable 5.1
I1
I2
I3
I4
I5
I6
I7
I8
I9
Claude Opus 5
I1
I2
I3
I4
I5
I6
I7
I8
I9
Claude Sonnet 5
I1
I2
I3
I4
I5
I6
DeepSeek V4.1 Flash
I1
I2
I3
I4
I5
I6
I7
I8
I9
GLM 5.3
I1
I2
I3
I4
I5
I6
I7
I8
I9
GLM 5.3 Flash
I1
I2
I3
Gemini 3.1 Pro Preview (02/26)
I1
I2
I3
I4
I5
I6
I7
I8
I9
Gemini 3.8 Flash
I1
I2
I3
I4
I5
I6
I7
I8
I9
Grok 4.6
I1
I2
I3
I4
I5
I6
I7
I8
I9
Kimi K3
I1
I2
I3
I4
I5
I6
I7
I8
I9
Muse Spark 1.3 Max
I1
I2
I3
I4
I5
I6
I7
I8
I9
MiniMax-M3
I1
I2
I3
I4
I5
I6
I7
I8
I9
GPT-5.6 Luna
I1
I2
I3
I4
I5
I6
I7
I8
I9
GPT-5.6 Sol
I1
I2
I3
I4
I5
I6
I7
I8
I9
GPT-5.6 Terra
I1
I2
I3
I4
I5
I6
I7
I8
I9
GPT-6 Astra
I1
I2
I3
I4
I5
I6
I7
I8
I9
Inkling
I1
I2
I3
I4
I5

Vertical lines separate iterations. Segment widths show recorded calls within each model, not elapsed time.


Citation

Please cite this work as:

Citation (BibTeX)

@article{valsai2026vibecodebench1100,
title        = {Vibe Code Bench 1-100},
author       = {Hung Tran and Dilhan Salgado and Langston Nashold and Orestes Kassian and Rayan Krishnan},
year         = {2026},
month        = sep,
howpublished = {Vals AI},
url          = {https://vals.ai/benchmarks/vcb-1-100},
}