Pre-release and re-publish cadence

Check O10 · provenance family · severity MEDIUM · automatic · one of the 17 Open VSX checks

Maps to OWASP LLM03 ATLAS AML.T0109 A listing that re-publishes unusually often, or ships only pre-release builds, is the shape a malicious update hides in.

The question this check asks: is the latest version marked a pre-release, and has a listing that is under 30 days old already been published five times or more?

Why it matters

A run of versions on a brand-new listing is the rhythm of a publisher re-uploading after takedowns, or tuning a payload. A pre-release is ordinary, but a reader should know the version they are installing was not offered as stable.

How RepoGates scores it

A pre-release is ovsx-prerelease, a note. Five or more versions (ovsx_churn_versions) on a listing under 30 days old is ovsx-churn, MEDIUM, 4 points (the default weight; the scoring table has no row of its own for the Open VSX checks yet). When the history cannot be read, O10 is listed as not checked.

False positives we know about

13 of the 100 most-downloaded extensions measured on 1 November 2026 are on a pre-release, all notes. The churn rule fired on none.

What this check does not cover

A slow rhythm. GlassWorm v2's sleepers (Socket, 25 April 2026) were published benign and updated weeks later, which is not churn. What changed between versions is not compared.

Scope, the same on every page of this roster: RepoGates does not see git clone, package managers or curl — outside Claude Code with the RepoGates plugin, whose hook refuses a clone or install that names a blocked repository on the command line, before it runs. The hook sees Bash tool calls in that one client and nothing else. Edit and Write are read for one thing only — an API key about to be saved — checked on the machine and never sent; that guard asks, it never denies. Open VSX is the registry VSCodium, Cursor and Windsurf install from. An extension there is assessed on request: through the API (/v1/ovsx/score/{namespace}/{extension}), the MCP server (platform="ovsx") and the preflight, which reads an open-vsx.org address and a codium, vscodium, cursor or windsurf --install-extension line. That line is read against both Open VSX and the VS Code Marketplace, because it cannot show which registry the editor uses; code --install-extension stays the Marketplace's. An extension installed from the editor's own UI, or one that auto-updates, is not a shell line the hook sees; there is no board on Open VSX's pages, and the browser's download gate does not read open-vsx.org. This roster reads what Open VSX publishes about an extension — its record, its version history, its manifest, the package's file list and at most eight agent files inside the package — and the extension's code bundle is not read on this tier. Open VSX's own scan results are admin-only and not published; its review status is evidence, and its silence is never a pass. An extension Open VSX no longer serves is not assessed, never a pass. A PASS means nothing matched on what was read.

Check it yourself

curl -s https://open-vsx.org/api/NAMESPACE/EXTENSION | jq '{preRelease, version}'
curl -s 'https://open-vsx.org/api/NAMESPACE/EXTENSION/versions?size=1' | jq .totalSize

Put the version count beside the first version's age from O2.

Questions

Is a pre-release a problem? No. It is a note so you know the version was not offered as stable.

What is churn? Five or more versions on a listing whose first version is under 30 days old.

Would O10 have flagged a sleeper? No. A sleeper is published once and updated weeks later, a slow rhythm that O10 does not read as churn.

Related checks

V10 Pre-release and re-publish cadence — the Marketplace twin · O2 Extension age — where the age comes from.

Add RepoGates to Chrome Pricing

Sources for this page: Open VSX's published record format, read on 1 November 2026; the measurement of Open VSX's 100 most-downloaded extensions the same day; the severities from the product's roster, and the default weights of its scoring table; campaign facts as the primary write-ups state them. See also the Open VSX intelligence page.