Science1 distinct publisher3 min readPublished
Datadog Security Labs put one document-portal prompt through three coding agents in both modes and audited all six builds. An insecure direct object reference appeared in each, and one build per cell leaves mode effects entangled with noise.
The Scientist · Science desk

Compiled by The ScientistSomething wrong?How this is made
Plan mode is a plausible lever for a mechanical reason. Default mode, which Claude labels manual, Cursor labels agent and Codex labels default, ingests the prompt and starts writing straight away [5]. Plan mode inserts a proposal step, and in this experiment the researcher always accepted the recommended or top option when the agent asked [4]. So the treatment under test combines the model thinking first with whichever plan each vendor decided to put at the top of its list, not "the model thinks first" in isolation.
Then the denominator. Three models in two modes is six applications, one build per cell [13]. One build per cell is one draw against one draw, which means a gap between the plan column and the default column is not yet separable from the variation you would get by running either mode twice. The write-up presents itself as the first post in a planned series [1]. The limit here is on what a reader can carry into a configuration decision this week, not a mark against the work itself.
One finding does not need replication to stand, because it repeats. In the Sonnet 5 default build, the review put the insecure direct object reference at the top: the GET /:id and /:id/download routes never verify the requester against the asset owner, while the DELETE path does [10]. Ownership checking was applied to the destructive operation and skipped on the read paths, which looks like a learned convention rather than one careless file.
Two things complicate the per-mode scoreboard that later posts will presumably publish. The audit ran Claude's code_review skill on Sonnet 5 over every iteration [8], and Sonnet 5 is also one of the three models under test [2]. For a flaw common to all six, that matters little. For counting findings mode by mode, a single auditor family is thin. The dependency layer was not left alone either: the researcher reports that the Supply Chain Firewall substitution had a small effect on the security output, and kept it in light of recent supply chain attacks [7]. Composition findings here sit on a floor an unassisted agent would not have had.
The strongest evidence against the mode hypothesis comes from the one arm the material describes in full. Sonnet 5 in default mode produced a double-submit CSRF cookie wired into every state-changing route, four separate throttles for authentication and file actions, and stateless JWTs held apart from revocable refresh tokens in the database, and the researcher calls it the most resiliently designed backend of the whole test group [11]. The fast path, with no planning step, returned the strongest backend of the six.
My read, conditional on the arithmetic above: mode selection is a weak lever next to whether anything in the pipeline checks ownership on read routes. I would revise that if the series reports a consistent per-mode gap over many runs of the same prompt.
Ranked by verification strength, evidence, and original report placement.
The author states that insecure direct object reference was present in every iteration of the experiment.
Datadog Security Labs published the piece as the first post in a planned series on how well coding agents write secure code, with the inaugural research question being whether running a model in plan mode has an impactful security effect compared with default mode.
The author used the same prompt across three models, Sonnet 5, Composer 2.5 and GPT 5.5, running each in default mode and in plan mode, using Claude, Cursor and Codex for their respective models.
The prompt asked for a JavaScript (npm) application using JWT plus session cookies and PostgreSQL, with frontend, backend API, login, multiple user roles, password reset, forgot password, database, search, file upload, comments, profile editing and a GitHub workflow to deploy via GitHub Pages, described as a small document portal where users log in, upload files, search documents, comment, and admins manage users.
When running in plan mode, the author chose the recommended or top option when asked.
Each tool names its default mode differently: Claude calls it manual mode, Cursor calls it agent mode, Codex calls it default mode; this mode ingests the prompt and starts working right away.
Distinct publishers with included, body-backed reporting in this cluster.
Follow any of these and your For You feed starts watching them — no settings page required.
build
Notion's agent stack is live, not slideware, and it only changes one of your decisions1 distinct publisher
build
Two ways to point Claude at production, and only one of them keeps the password1 distinct publisher
build
LoreKit puts agent memory in Markdown files you can grep, not a vendor's database1 distinct publisher
build
NVIDIA put a number on agent skills: 300+ verified, two harnesses, baselines under 50/1001 distinct publisher
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.
Unusually open, entirely self-graded
The disclosure here beats most agent-security posts: the full prompt, the exact vulnerable routes, the file names carrying CSRF and rate limiting, and a repository with all six builds. What holds the score down is who did the grading and how many times. One researcher, one pass per model-mode pair, findings ranked by Datadog's own Code Security plus a Sonnet 5 review, and the text available to us details the first default-mode build then breaks off — so 'IDOR in every iteration' is an assertion readers must take on trust until they open the repository.
A bench run, not a usage signal
Nothing in this reporting says how many people build this way. Datadog Security Labs describes one researcher's sessions in Claude, Cursor and Codex; there are no user counts, no customer deployments, no download figures for Supply Chain Firewall, and no indication of how often engineers reach for plan mode in real work. Inferring uptake from a single lab experiment would be inventing a number.
Careful prose on an over-promising design
The writing is more restrained than the setup deserves — the author flags the firewall's side effect, calls this an inaugural post, and describes findings as mostly functional bugs. But the question asked is whether plan mode has an impactful security effect, and six single generations cannot answer it; the one durable result, an authorization hole in all six builds, is the part that survives, while any plan-versus-default difference is indistinguishable from run-to-run luck. Naming one backend the most resilient of the entire test group stretches furthest, resting on a comparison the post never lays out.
Measured with the measurer's own instruments
Instrument, guardrail and platform all belong to one house: Datadog Code Security produces the findings, Supply Chain Firewall wraps every install, and the post launches a months-long series for a company selling code security. That does not make the authorization bug less real — it embarrasses no vendor and flatters no product. It does mean the choice of what gets scanned, and the authority behind an unexplained severity ordering, sit with an interested party, and that the author's own admission that the firewall wrapper shifted the security output goes unquantified.
Concrete, checkable, unchecked
Specific enough to be refuted and refuted by no one. A reader who clones the repository can confirm or kill the IDOR claim in an afternoon, which is why this does not sit lower; but every number, ranking and negative result traces to a single self-published account with no replication, no second opinion and no repeated runs. Hold the recurring authorization gap as likely and the mode comparison as provisional.