Build1 distinct publisher3 min readUpdated
Slopsquatting stopped being a thought experiment. The only thing standing between an AI suggestion and an install was a reviewer who happened to check the registry page.
The Engineer · Build desk
.avif)
Compiled by The EngineerSomething wrong?How this is made
An engineer asked an AI coding assistant for a library, got back a plausible-sounding package name that matched the ecosystem's naming conventions, and discovered that the name had already been registered by someone else and published with almost no download history [1][2]. The install command never ran, because a manual review flagged the low download count and the missing history first, according to a dev.to write-up that credits The Register with covering the incident [3].
That is the whole story, and its thinness is the point. The write-up notes the episode drew zero Hacker News comments [4], which is roughly the attention that "engineer performs code review correctly" usually earns.
The attack behind it, slopsquatting, needs no sophistication. Models hallucinate package names, and research has documented that certain names get suggested repeatedly across different sessions and even different models [5][6]. An attacker registers one of those names on PyPI or npm [7], publishes something that looks legitimate on the surface with a malicious payload [8], and waits for the next developer to ask a similar question and get the same name, which now resolves to real code [9]. Then pip install or npm install executes it [10]. No zero-day, no compromised maintainer account, no obfuscation [11].
Existing dependency tooling is aimed elsewhere. Scanners such as Snyk, Dependabot and npm audit compare what is already in your lockfile against known vulnerability databases [12]. A freshly registered, zero-download, attacker-controlled package has no CVEs filed against it [13]. The defect is not in the code; it is that the package should not be trusted at all [14].
Which leaves the control that actually fired here: a person noticing an unfamiliar name and opening the registry page to look [15]. That worked, and it is a bad control, because it depends on a human remembering to do it for every AI-suggested dependency, every time, and it is exactly the step that gets dropped under deadline pressure [16]. The gap the dev.to author identifies is real: there is no automated checkpoint between "the model suggests a name" and "the developer runs the install" that asks whether the package exists and whether it looks real [17].
The same post sells the fix, which is worth stating plainly [23]. It describes Sentinel's SlopScan, which extracts package names out of LLM output and checks them against live PyPI and npm data before the recommendation reaches a developer [18], with a /v1/scrub endpoint that acts before the caller does anything with the content [19]. Risk levels map to outcomes: DANGEROUS, meaning confirmed malicious or a known typosquat, is blocked; SUSPICIOUS, meaning the package does not exist or has a trust score near zero, is flagged; CAUTION covers packages that exist but are brand new [20][21][22].
Two things to watch. First, whether the check moves into the install path as a gate rather than staying a review habit, since the reported incident was caught by choice, not by process [3][15]. Second, the CAUTION tier: "exists, but brand new" is also an accurate description of every legitimate package on its first day [22], and a tier that fires constantly is a tier that gets clicked through.
The account is single-sourced and light on specifics: the write-up names no package, no registry, no assistant, and no date [24]. Treat it as one confirmed sighting of a pattern, not a sample size.
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.
Code review catches this only if the reviewer happens to notice the package is unfamiliar and manually checks its registry page, which is what happened in this incident.
The check depends on a human remembering to do it every time for every AI-suggested dependency, does not scale, and is the kind of step that gets skipped under deadline pressure.
There is no automated checkpoint between an LLM suggesting a package name and a developer running the install command that asks whether the package exists and whether it looks real.
Sentinel's SlopScan integration extracts package names out of LLM output and checks them against live registry data for PyPI and npm before the recommendation reaches a point where a developer acts on it.
For the direct scrub endpoint, /v1/scrub is described as the layer that acts before the caller does anything with the content, so an assistant's output is checked before it is displayed or used.
SlopScan's DANGEROUS level covers confirmed malicious packages or known typosquats and results in the content being blocked.
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.
Single vendor-authored account, incident unverifiable
Everything rests on one dev.to post written by the party selling the remedy. The incident is relayed second-hand as Register coverage with no link, package name, registry, assistant, or date, and the supporting 'research quantifying this at scale' is asserted without a citation or a number. The mechanism claims -- hallucinated names, name squatting, and CVE scanners being blind to zero-download packages -- are internally coherent and consistent with how the named tools work, which is what keeps the score above the floor, but no independent corroboration is present in the supplied material.
One undated near-miss, no deployment data
Adoption signal is minimal on both sides of the story. On the threat side there is a single reported incident in which no payload executed and no specifics were disclosed. On the tooling side, SlopScan is described only by its vendor: endpoints, risk tiers, and an illustrative JSON payload, with no users, install counts, customers, or detected-attack figures. That is enough to register a non-zero reading but nowhere near enough to indicate either widespread exploitation or meaningful uptake of the control.
Overstated, though the author flags the key limitation
The framing outruns the evidence: 'Payload executes. Game over.' and 'the failure mode is going to keep happening' are built on one incident where nothing executed, an uncited scale claim, and a product the author sells. Positive gap is moderated rather than maximal because the post does two honest things -- it labels its sample response as illustrative rather than from the incident, and it volunteers that on agentic proxy routes SlopScan cannot prevent execution at all, only notify after the fact. That disclosure is the opposite of overselling, so the gap reflects promotional framing around a plausible mechanism rather than a fabricated threat.
Vendor selling the described remedy
The commercial interest is direct and undisguised. The post's second half is Sentinel product documentation -- endpoint names, risk-tier semantics, and a sample response payload -- positioned against named incumbents (Snyk, Dependabot, npm audit) as solving a problem they structurally cannot. The incident functions as the demand-generating premise for the product being described, and the author is the only source in the cluster, so no counterweight exists. Partial credit for transparency: the vendor discloses where its own control fails.
Low: one publisher, unverifiable anchor incident
Confidence is limited by cluster shape as much as content. A single publisher, a single source, a second-hand and fully anonymised anchoring incident, and vendor self-description as the only account of the remedy leave little room for a firm read. The generalisable parts -- that assistants hallucinate package names and that CVE-matching scanners cannot flag an uncatalogued package -- are more dependable than anything specific to this incident or product.
build
255 tool schemas, 91K tokens: pricing the two MCP costs nobody budgets1 distinct publisher
build
AI-written code fails the same four ways, and every gate you own reports green1 distinct publisher
build
The failure modes of AI agents in low-level code have names, and names can be gated in CI1 distinct publisher
build
Claude Code's new default is a confession: the approval prompt was never a control1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 21, 2026