Three instruments, not one verdict

Ask whether Claude Code, or an agentic coding tool like it, “actually works,” and the honest answer is that the question bundles together at least three separate measurement problems, each answered by a different instrument, in a different room of the same lab. A curated benchmark measures whether a model can resolve a fixed set of pre-selected software issues under a specific harness. A randomized controlled trial measures whether real developers, on real tasks, finish faster or slower with a tool available to them. A large-sample survey measures what practitioners believe happened, aggregated across thousands of respondents who were never randomly assigned to a condition at all. Vendors report the first kind of number most often, because it is the cheapest to produce and the easiest to put in a table. It is also the least informative about what happens when a specific team turns a specific tool loose on its own repository.

This article works through what each instrument has actually measured, and keeps five kinds of statement visibly separate rather than letting them blur into one confident narrative: a fact independently verifiable in a fetched primary source; a vendor assertion reported by the company selling the tool; an analysis built on top of those facts by inference; a scenario, offered as one coherent possibility rather than a forecast; and a prediction, which is only meaningful once it names a horizon, the assumptions it rests on, and the observation that would prove it wrong. Where two credible studies disagree — and two of the studies below disagree sharply — the disagreement is treated as the finding, not as noise to be averaged away, and no attempt is made to force incomparable benchmarks into a single cross-vendor ranking.

What “Claude Code” names, mechanically

Before any of that evidence makes sense, it helps to be precise about what is being measured, because “Claude Code” is not one behavior but an assembly of separately documented, separately configurable layers. Anthropic’s own documentation describes a permission system that classifies each tool call — file reads, shell commands, edits — and decides whether it runs silently, asks first, or is refused outright, with the classification rules themselves stored in project settings and shareable across a team [3]. Sitting alongside permissions are hooks: user-defined shell commands that fire at fixed points in the agent’s lifecycle — before a tool runs, after a task completes, when a session starts — giving a team deterministic control that does not depend on the model choosing to comply on any given turn [1]. Subagents add a further layer of isolation: a subagent runs a delegated task in its own context window, under its own restricted tool list, and returns only a summary to the parent session, which keeps a large search or a long log out of the conversation the primary agent is reasoning over [2]. Memory is a fourth, separate layer again: a project’s CLAUDE.md file carries instructions a team writes and checks into version control, loaded at the start of every session, while a second, independent mechanism called auto memory lets the agent write its own short notes about corrections and preferences across sessions — and Anthropic’s documentation is explicit that both are delivered as context the model reads and can choose to follow, not an enforced constraint, which is exactly why the same documentation directs anything that must hold regardless of the model’s judgment toward a hook instead [4]. Finally, the Model Context Protocol standardizes how any of this reaches outside tools and data at all, defining hosts, clients, and servers that exchange typed resources, prompts, and tools over JSON-RPC [5].

ADVERTISEMENT

None of this is disputed; it is documentation, not a claim about outcomes. But it matters for everything that follows, because every benchmark score and every productivity study below was produced by some specific configuration of these layers — a specific permission mode, a specific set of allowed tools, a specific harness — and that configuration is usually only partially reported.

A shelf holding three distinct labelled task-packet sets side by side — a benchmark packet, a timed-trial packet, and a survey pad — with one lifted just clear of its slot
Figure 1. Three different packets measure three different things; lifting one down does not make the other two irrelevant, and stacking their scores into a single number would erase the difference between them.Image prompt and art direction by Brecht Corbeel; image generated to that direction.

What a benchmark score actually measures

The most visible number in this field is a resolve rate on SWE-bench Verified, a five-hundred-instance, human-reviewed subset of the original SWE-bench dataset, produced in collaboration with OpenAI specifically because unreviewed instances in the original set could carry unclear problem statements, incorrectly scoped tests, or tasks that were not reliably solvable as written [8]. Each instance gives a model a real GitHub issue and a real repository and asks it to produce a patch that a hidden test suite accepts. As a benchmark of literal issue resolution on a fixed distribution of mostly Python repositories, it is a reasonable, if narrow, instrument.

As a fact rather than an inference: Anthropic reports that Claude Opus 4.5 scores 80.9% on SWE-bench Verified, ahead of the 76.3% and 76.2% the same report attributes to GPT-5.1 and Gemini 3 Pro respectively [11, 10]. That is a vendor claim, sourced to the vendor’s own announcement and a secondary outlet that reproduced the same figures, and it should be read as exactly that: a self-reported score, not an independently reproduced one. Anthropic’s own methodology notes are unusually candid about how sensitive that kind of number is — the company states that its published evaluations were run with a fixed 200K context window, a stated reasoning effort, and results “averaged over 5 independent trials,” with a footnote disclosing that at least one other benchmark result used parallel test-time compute, aggregating multiple attempts per problem [10]. A vendor that averages five trials internally is telling you, implicitly, that one trial is not a stable estimate.

That instability is worth making precise rather than gesturing at. If a benchmark of nn instances is treated as nn independent Bernoulli trials with true resolve probability pp, the standard error of the observed proportion p^\hat p is

SE(p^)=p^(1p^)n. \mathrm{SE}(\hat p) = \sqrt{\frac{\hat p (1 - \hat p)}{n}}.

For n=500n = 500 and p^\hat p near one half, this is on the order of two percentage points — before accounting for the additional variance introduced by sampling temperature, agentic scaffolding, or a different number of retries per problem. A published gap of four or five points between two systems evaluated under different harnesses, different reasoning-effort settings, and different retry budgets is not obviously a capability gap at all; it may be substantially a measurement-configuration gap. This is precisely why the practice of building a single cross-vendor leaderboard out of self-reported scores, each collected under undisclosed or differing scaffolds, is not a defensible ranking — it is several different experiments stapled together and relabeled as one.

ADVERTISEMENT
A partitioned work carrel with a wall-mounted digital chronometer caught mid-count and a small rack-mounted capture recorder beside it, one status light mid-switch from amber to green
Figure 2. A stopwatch running is not yet a measurement; only many timed attempts, repeated under a control, accumulate into one — which is exactly the step a single benchmark run or a single anecdote skips.Image prompt and art direction by Brecht Corbeel; image generated to that direction.

What a randomized trial actually measures, and why two of them disagree

A benchmark asks whether a model can solve a curated problem set. A randomized controlled trial asks a different, arguably more decision-relevant question: does a working developer, given the tool, finish real tasks faster? Two such trials exist with enough methodological detail to take seriously, and they point in opposite directions.

The earlier one, run by Microsoft researchers, recruited software developers and had them implement an HTTP server in JavaScript under time pressure, half with GitHub Copilot available and half without. As a fact reported in the paper: the group with Copilot finished 55.8% faster than the control group [9]. This is a real, randomized result, and it is also a narrow one — one short greenfield task, one autocomplete-style tool from 2023, measured on time-to-first-working-version rather than on a maintained codebase’s longer-run costs.

The more recent trial, run by the AI-evaluation nonprofit METR, inverts the finding. Sixteen experienced open-source developers, averaging roughly five years of prior experience on the specific mature repositories they worked in, completed 246 real tasks in their own projects, with each task randomly assigned to allow or disallow contemporary AI tools — in practice, primarily Cursor and Claude 3.5 or 3.7 Sonnet, not the Claude Code product specifically. The reported result: allowing AI tools increased completion time by 19%, rather than decreasing it [6]. Two features of that study matter more than the headline number. First, before starting, the same developers had forecast that AI assistance would cut their time by 24%; afterward, having just been slower with it, they estimated they had been sped up by 20% — a direct empirical demonstration that developers’ own sense of whether a tool is helping them is not a reliable measurement, even immediately after the fact [6]. Second, the authors are explicit that “the influence of experimental artifacts cannot be entirely ruled out,” while arguing the slowdown does not appear to be primarily an artifact of the study’s design [6].

A wall-mounted two-slot card unit in the measurement lab, a sealed "before" prediction card half-posted into its upper slot while the lower collection tray sits empty
Figure 3. The prediction is sealed and posted before the work starts; the actual result is collected only afterward, in a separate tray — which is exactly how it became possible to catch a developer's forecast contradicting their own later result.Image prompt and art direction by Brecht Corbeel; image generated to that direction.

These two results are not a contradiction to be resolved by picking a side; they are evidence about different things. One measured short-horizon autocomplete assistance on a greenfield task for developers unfamiliar with the codebase by construction. The other measured contemporary agentic assistance on long-lived, deeply familiar codebases maintained by their own experts — precisely the setting in which an expert’s existing mental model may be faster to apply than the overhead of specifying, reviewing, and correcting an agent’s attempt. Both are real findings from real randomized designs; treating either one as “the” answer for whether agentic tools help would overstate what a single trial, run on a specific population and task mix, can tell you about a different one. And notably, as of this writing, no published randomized trial isolates the Claude Code product’s own architecture — its permission gating, its hooks, its subagent delegation — as the treatment; the closest evidence available tests the underlying model family through a different interface entirely.

How far an agent can go alone, and how much that trend can be trusted

A separate strand of measurement asks not how fast a human-plus-tool pair works, but how long a task an agent can complete with no human in the loop at all. METR’s time-horizon research defines a specific metric for this: the length of task, measured in the time a skilled human typically needs to complete it, at which a frontier model succeeds autonomously half the time. Timing humans directly against a combined set of benchmark tasks, the paper reports that this “50%-task-completion time horizon” has doubled roughly every seven months since 2019, with the frontier model evaluated in the paper reaching around 110 minutes, and the authors noting the doubling may have accelerated since 2024 [7].

Treated as a growth model rather than a guarantee, the trend can be written as

ADVERTISEMENT
T(t)    T02tt0τ,τ7 months, T(t) \;\approx\; T_0 \cdot 2^{\frac{t - t_0}{\tau}}, \qquad \tau \approx 7\ \text{months},

where T(t)T(t) is the time-horizon at date tt and τ\tau is the empirical doubling period. This is a compact way to state a real, fitted regularity — it is not a physical law, and the paper’s own authors flag that the fit is over a specific task suite combining two internal benchmarks and a small set of newly written short tasks, not over arbitrary production software work, and that the entire extrapolation depends on whether that suite’s difficulty profile actually resembles the tasks an organization needs done. Reading a doubling constant off a fitted curve and projecting it five years forward is a scenario, not a fact; the fact is the fitted curve’s shape over the period actually measured.

What a survey of five thousand engineers measures, and what it cannot

The largest-sample evidence available comes not from a controlled experiment but from a self-reported survey: Google Cloud’s DORA program collected responses from nearly five thousand technology professionals in 2025, alongside more than a hundred hours of qualitative interviews [12]. As a fact: reported AI adoption rose to 90% of respondents, more than 80% reported a perceived productivity increase, and at the same time AI adoption showed a negative statistical relationship with software delivery stability in the same sample [12]. The report’s own interpretive claim — that “AI doesn’t fix a team; it amplifies what’s already there,” so that teams with strong existing practices see compounding gains while weaker teams see existing problems intensified — is the survey authors’ analysis of their own data, not an independently established causal mechanism [12].

The value of this instrument is scale and breadth: no randomized trial will ever recruit five thousand working engineers across that many organizations. Its limit is exactly what the METR trial demonstrates directly — that a developer’s own sense of being faster is measurably unreliable, and a survey has no way to correct for that, because it has nothing to compare self-report against except more self-report. A survey this size is strong evidence about perception, adoption, and correlation; it is not evidence about what would have happened to the same teams’ delivery stability absent the tools, because no control group was ever withheld.

A data-intake bench with a row of drive caddies from the work carrels, most already racked, one caught half-seated in its bay, a stack of unopened caddies still waiting at the end of the bench
Figure 4. No single caddy settles anything by itself; an average, and the disagreement between different instruments, only becomes visible once enough of them are racked side by side.Image prompt and art direction by Brecht Corbeel; image generated to that direction.

The measurement problem inside the tool’s own security

One more class of evidence belongs here because it bears directly on whether the “verification” layer inside a tool like Claude Code can be measured to be doing its job. The Model Context Protocol’s own specification states the underlying difficulty in plain terms: “descriptions of tool behavior such as annotations should be considered untrusted, unless obtained from a trusted server,” and requires that hosts obtain explicit user consent before invoking any tool precisely because a tool description is, structurally, content an attacker can write [5]. Claude Code’s permission and hook layers exist to put a deterministic gate in front of exactly that untrusted content, refusing or requiring approval for actions regardless of what a tool’s own description claims about itself [3, 1].

Independent security research on this class of system is now starting to measure how well such gates hold up under adversarial pressure rather than nominal description. A 2026 systematic analysis of prompt-injection attacks against agentic coding assistants proposes a taxonomy spanning how an attack is delivered, what form it takes, and how it propagates once inside a session, covering skill definitions, tool integrations, and protocol-level exploitation including MCP itself; its authors report that most existing defenses they surveyed achieve less than 50% mitigation against adaptive, sophisticated attacks, and argue the field should treat prompt injection as a first-class vulnerability class requiring architectural mitigation rather than ad-hoc filtering [13]. That paper studies the class of agentic coding assistants broadly rather than certifying or condemning any single product by name, and its defense-effectiveness figures describe the state of published mitigations in the surveyed literature, not a measured audit of Claude Code’s specific permission and hook implementation. The honest reading is narrower than either a vendor’s security claim or a headline about “AI coding tools are unsafe”: a documented, actively studied attack surface exists at the tool-description and protocol layer of this entire category of system, defenses against it are still immature by the research community’s own accounting, and no public study yet reports a rigorous, adversarial measurement of any one vendor’s mitigations against that surface.

What remains genuinely uncertain

Collecting the instruments rather than the headlines leaves a shorter list of firm findings than the marketing volume around this topic would suggest, and a longer list of open questions.

Established by direct evidence: a benchmark score is a harness-and-configuration-dependent quantity, sensitive enough that vendors themselves average multiple trials internally; contemporary agentic tools measurably slowed a specific group of expert developers on their own mature repositories even as those same developers believed the opposite; an earlier, differently-scoped tool measurably sped up a different population on a different kind of task; and a documented, still-immature attack surface exists at the layer where a tool description or protocol message is trusted as instruction.

Not established by any evidence surveyed here: whether Claude Code specifically, exercised through its own permission, hook, and subagent architecture rather than through a generic model API, would replicate either the METR slowdown or the Copilot-era speedup in a randomized design; whether SWE-bench-style resolve rates predict anything about arbitrary, non-Python, non-GitHub-issue-shaped production work; whether the time-horizon doubling trend continues, accelerates, or plateaus once it reaches task lengths no existing benchmark suite covers; and whether the security mitigations documented in Claude Code’s own permission system meaningfully outperform the sub-50%-effective defenses the injection literature reports for the category as a whole, since no public adversarial audit has measured that specific implementation against that specific attack taxonomy.

Predictions, with the observations that would falsify them

These are forecasts, separated from the evidence above rather than blended into it. Horizon: 22 August 2028.

One. A methodologically comparable randomized trial — real developers, real repositories, randomized task assignment — will be published specifically on Claude Code’s agentic harness rather than on a bare model API, because the gap between the METR and Copilot findings is now large enough to be commercially decision-relevant. Disconfirmed if by that date the only available human-subject evidence on Claude Code specifically remains vendor-run case studies without randomization or a control group.

Two. Published benchmark reporting will move toward disclosing confidence intervals or multi-trial variance alongside headline scores, following the pattern Anthropic’s own five-trial averaging already shows internally. Disconfirmed if leading system cards in 2028 still report single-run percentages with no stated trial count or variance.

Three. Independent, adversarial measurement of tool-description and MCP-layer defenses in a specific named product will appear in the peer-reviewed security literature, rather than remaining a category-level survey. Disconfirmed if by 2028 published research on this attack surface still evaluates the vulnerability class in the abstract without naming and testing specific shipping implementations.

What to take away

Three instruments exist, they measure three different things, and none of them was designed to answer “should my team use this tool.” A benchmark score is real but harness-bound and noisier than a single headline number implies. A randomized trial is the strongest design available and the two that exist point in opposite directions for defensible reasons tied to what each one actually tested. A large survey captures scale and perception but cannot separate causation from the self-report bias the randomized evidence shows is already substantial. Reporting all three, attributing each claim to the instrument that produced it, and naming what none of them yet covers is not a hedge — for a question this measurement-poor, it is the only honest answer available today.