Build1 distinct publisher3 min readUpdated
A harness scored 3 of 24 until its operator stopped trusting shutil.which. The variable under test turned out to be the plumbing, not the model.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
A developer running a web-task eval on Windows 11 watched the same model, on the same prompt wording, move from 3 out of 24 to 21 out of 24 after changing only how the prompt reached the process [6]. The mechanism was a batch-file wrapper installed by npm that silently discarded everything after the first newline of a multi-line prompt [7][8].
The setup, per the dev.to writeup [0], was two harnesses over the same eight tasks: harness A calling the computer use API directly with claude-sonnet-5 and max_turns=40, one trial per task [2]; harness B running Claude Code headless via `claude -p` plus Playwright, same model, three trials per task for 24 runs [3]. Grading was machine-only: form payloads diffed against expected JSONL, downloaded files checked for existence and size, answers matched by regex, and the agent's own claim of "done" never counted as a pass [4]. That is the right way to build a scoreboard, and it still did not protect the result, because the failure was upstream of anything the grader could see.
Root cause: the npm global install drops a file called `claude.CMD` on PATH, and that is what `shutil.which("claude")` resolves to rather than the real binary. Its body is a one-line forward to `claude.exe` with `%*` [8]. The author is careful about the boundary between measurement and inference. Measured: swap only argv[0], hold prompt, flags and environment constant, and the tail either arrives or does not [9]. Inferred, and explicitly not isolated: `%*` is cmd.exe's argument forwarding and the newline appears to be lost somewhere in that path, though the author did not determine which layer drops it and stopped once either workaround sufficed [10]. The reproduction is four lines of subprocess and a marker string; through the shim, the model replies asking for the missing instruction, having seen only line one [11].
The headline number deserves a discount. The post's own progression shows 3/24 came with a prompt that never included the target URL at all, an error harness A masked because it navigated the browser programmatically before the agent's turn [14][15]. Adding the URL got it to 6/24, and at that point only tasks whose instruction fit on a single line passed [16]. So the transport bug is worth the gap from 6 to 21, or 15 of 24 runs, about 62.5 points of success rate [17]. That is still the largest single term in the result, and it is a term with no model content in it whatsoever.
What makes this a class of defect rather than one person's bad afternoon: there is no exception, no non-zero exit code, and no warning anywhere in the pipeline [13]. A truncated prompt is a well-formed prompt. The only signal is a low score, which is indistinguishable from "the model cannot do this," and the author admits to suspecting the model first [13]. Any published Windows agent benchmark that shells out to an npm-installed CLI and has not printed the bytes the child process actually received is, in my judgement, an unvalidated number. The check is cheap: send a two-line prompt with a marker on line two and assert the marker comes back.
Watch for the portability trap in the fix. Resolving `claude.exe` directly works; normalising newlines to spaces is the more portable option because it sidesteps the shim on any platform [12]. Harnesses that pick the first fix inherit a path assumption that the next installer layout will break.
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
The author states that without touching the model or the prompt wording, changing only how the prompt reached the process moved the score from 3/24 to 21/24.
The account was published on dev.to under the headline "A Batch-File Shim Was Truncating My Agent's Prompts on Windows (3/24 to 21/24)", with the environment given as Windows 11 Home, Python 3.x, and Claude Code installed via npm install -g @anthropic-ai/claude-code, measured 2026-08-14 to 2026-08-16.
Harness A used the computer use API directly with claude-sonnet-5 and max_turns=40, running 8 tasks x 1 trial.
Harness B used Claude Code headless (claude -p) plus Playwright with the same model, running 8 tasks x 3 trials = 24 runs.
Success in both harnesses was decided by machine verification only: submitted form payloads compared against expected JSONL, downloaded files checked for existence and size, answers matched by regex; the agent's own claim of "done" was never trusted as a success signal.
The first run of harness B scored 3 out of 24, with only the first task passing.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Reproducible single-box measurement, mechanism unresolved
The core behavioural claim is unusually well evidenced for a single-source post: a published ten-line reproduction keyed on a unique marker string, a differential test that varies only argv[0] with prompt, flags and environment held constant, and machine-only scoring of the eval that surfaced it. What caps the score is scope and mechanism — everything comes from one Windows 11 Home machine with one npm layout, no independent or vendor confirmation appears in the cluster, the author explicitly declines to isolate which layer drops the newline, and the headline score progression rests on single trials per condition with an intermediate step (model pinning) folded into the same delta.
One practitioner harness; no observed uptake beyond it
Observed usage in this cluster is limited to a single operator's two harnesses over 8 tasks in a three-day window, plus the fact that the claude.CMD wrapper is what a standard npm global install puts on PATH. No source here reports another team hitting the truncation, any upstream fix or issue, or any downstream adoption of the workarounds, so the score reflects only what was actually observed rather than the population of Windows users who install Claude Code this way.
Slightly understated relative to its own evidence
The write-up is scoped tighter than its findings would allow: it separates measured from inferred, refuses to name the layer that drops the newline, discards a favourable 23/24 result as a confounded comparison because the CLI model was unpinned, and labels its cost figure an estimate from list pricing. The one place framing runs ahead of the data is attributing the whole 6/24-to-21/24 move to prompt transport when that step also pinned the model, and quoting single-trial percentages to one decimal-ish precision; that is a mild overreach against otherwise conservative presentation, so the gap sits just below zero.
Independent practitioner post, no disclosed commercial stake
The cluster contains one self-published dev.to write-up by the operator who ran the eval. There is no vendor affiliation, product, paid tier or referral being promoted; the tools discussed are third-party (Claude Code, npm, Playwright), the finding is unflattering to a tool the author uses, and a favourable number was discarded on methodological grounds. Residual incentive is the ordinary reputational payoff of a striking before/after headline on a developer platform, which plausibly shapes the 3/24-to-21/24 framing but not the underlying reproduction.
High confidence in the defect, low in the numbers
Confidence is bimodal. The narrow technical claim — a claude.CMD shim on Windows truncates a multi-line prompt at the first newline when invoked via subprocess — is directly reproducible from the published snippet and rests on a clean single-variable test, so it deserves high confidence. The surrounding eval numbers deserve much less: one operator, one machine, 8 tasks, single trials per condition, an unpinned-model run discarded mid-stream, cost figures that are estimates, and no second publisher in the cluster to corroborate anything. The blended score reflects a solid finding wrapped in thin measurement.
build
Claude Code's new default is a confession: the approval prompt was never a control1 distinct publisher
build
Your Multi-Key Failover Is The Most Expensive Line On Your Coding Agent Bill1 distinct publisher
build
The 46GB Leak Your RSS Alert Cannot See: macOS Compressed Memory Breaks Threshold Monitoring1 distinct publisher
build
Screenshot retrieval gets a one-line install, and the comparison is text embeddings1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 16, 2026