Check V11 · execution family · automatic · one of the 17 VS Code Marketplace checks
The question this check asks: has the Marketplace itself finished its own checks on this extension and marked the listing validated — or is RepoGates looking at a listing the Marketplace has not yet, or has never, passed?
Every extension the Marketplace publishes goes through Microsoft's automated validation, and on the way out is signed (V6). The gallery record that VS Code itself reads carries a flags field, and validated inside it means that pipeline ran and passed. Its absence is a different fact from "passed". A package uploaded minutes ago and still in the queue, and a listing the pipeline rejected, look identical in that one field — and both are listings the Marketplace has not vouched for. V11 is the Marketplace-side sibling of H13 on Hugging Face, which reports a file the Hub's scanner has not finished with: not-yet-checked is never the same fact as checked-and-passed, and treating the two as interchangeable would turn every listing in the queue into a false clearance.
The other half has to be said just as plainly: validation is an automated lint, and every named campaign on the Microsoft Marketplace passed it. ReversingLabs' 19 fake-image theme extensions (10 December 2025), Koi Security's MaliciousCorgi pair — whensunset.chatgpt-china at 1,340,869 installs and zhukunpeng.chat-moss at 151,751, as quoted by BleepingComputer and The Hacker News in January 2026 — and Secure Annex's suspublisher18.susvsex (5 November 2025) were all published, which is to say each carried the flag while it was live. So validated present is the baseline, never a clearance; its absence is the signal, and the independent signals — V1–V5, V8, V12 and the campaign blocklist — are where a published campaign is met.
V11 reads the gallery record's flags. When the record is present and validated is not among its flags, vsx-not-validated fires at HIGH, costing 12 points. The scoring table's evidence note:
"V11; the Marketplace's own gate not passed is not the same as passed; short TTL retries it"
The short TTL is what keeps the row honest. vsx-not-validated is one of the findings that key the cache's short lifetime — with unassessable, partial-scan and the Hub's hf-scan-pending — so a listing in this state is re-fetched soon rather than held for a verdict's ordinary lifetime, and is never stored as a PASS. Once the flag appears the row stops firing and the rest of the roster's answer stands on its own. The gallery query RepoGates sends deliberately leaves off the ExcludeNonValidated bit VS Code's gallery protocol offers: an extension the Marketplace has not validated is exactly what this check needs to see. The verdict rule is shared by all 17 checks: the worst fired severity decides it — any CRITICAL reads BLOCK, any HIGH or MEDIUM reads REVIEW, INFO alone reads PASS — and the score, 100 minus every fired penalty and floored at zero, is reported beside it (green at 80 and above, amber 50–79, red below 50). A lone V11 finding reads REVIEW at 88. V11 sits in two dimensions: Clone the source (with V1–V5 and V10) and Install and run (with V6–V9 and V12), each of which takes the worst of its checks and reads PASS only when every one of them ran. The same flag is read on every member of an extension pack: a member that is not validated is one of the four conditions that make V9 report a weak member.
V11 fired zero times in the 18 September 2026 measurement of the 100 most-installed extensions: every one of them carries validated, the expected result for listings the pipeline finished with long ago. Where it can fire on a legitimate extension is the window between an upload and the end of validation — a fresh version in the queue reads REVIEW at 88 until the flag lands, and the short TTL exists for exactly that: the REVIEW resolves itself on the next fetch without anyone doing anything. We have no measured count of how often that window is hit, and will not invent one.
The flag says Microsoft's automated checks ran and passed. It does not say a human read the code, and the published campaigns are the proof: the metadata tier would not have flagged MaliciousCorgi on this row or any other, and a deep scan of the bundle is the tool for that shape. V11 does not say why a listing is not validated — queued, rejected, or left behind by a change in the pipeline all read the same in the one field it has. And it reads the gallery at the time of the request: an extension already on your machine whose listing later loses the flag, or is removed after a report, is not re-checked there.
RepoGates assesses a Marketplace extension on request — through the API, the MCP server (platform="vsx") and the preflight for code --install-extension. It does not see an extension installed from the editor's own UI, or one that auto-updates; the board on marketplace pages is not built yet; Open VSX (where VSCodium, Cursor and Windsurf install from) is a different registry and is not assessed. The extension's code bundle is not read on this tier: a PASS means the provenance and the declared surface are clean, never that the JavaScript was inspected.
The listing page does not show the flag. The gallery endpoint VS Code itself uses does — it is undocumented and takes no token:
curl -s -X POST 'https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json;api-version=3.0-preview.1' \
-d '{"filters":[{"criteria":[{"filterType":7,"value":"PUBLISHER.EXTENSION"}]}],"flags":919}' \
| jq -r '.results[0].extensions[0].flags'
The answer is a comma-separated string; look for validated in it. An unknown id answers an empty list rather than an error — the gallery never 404s — so an empty result means there is no such listing, which is the "not assessable" case and not this one.
Does the validated flag mean the extension has been reviewed? No. Validation is Microsoft's automated lint, and every named campaign on the Microsoft Marketplace passed it — ReversingLabs' 19 fake-image themes, Koi Security's MaliciousCorgi pair and Secure Annex's susvsex were all published, which means each carried the flag while it was live. RepoGates treats the flag's presence as the baseline and its absence as the signal; the independent signals are V1–V5, V8, V12 and the campaign blocklist.
Why does V11 never cache as PASS? For the same reason H13 does not on Hugging Face: "not yet checked" is never the same fact as "checked and passed". vsx-not-validated keys the cache's short TTL, so a listing in that state is re-fetched soon instead of being held for a verdict's ordinary lifetime, and is never stored as a PASS. Once the flag appears the row stops firing and the rest of the roster's answer stands.
Does RepoGates check this flag when I install from inside VS Code? No. RepoGates assesses a Marketplace extension on request — through the API, the MCP server and the preflight for code --install-extension. It does not see an extension installed from the editor's own UI or one that auto-updates, the board on marketplace pages is not built yet, and Open VSX is a different registry that is not assessed.
V6 Package signature — the other thing the Marketplace attests about a package, necessary and never sufficient · V9 Extension pack and dependencies — where the same flag is read on every member an extension pulls in · H13 Hub scan incomplete — the Hub's pending-scan state, the sibling this check's short-TTL posture is copied from.
Add RepoGates to Chrome Pricing
Numbers on this page: the 18 September 2026 measurement of the 100 most-installed extensions (99 PASS, 1 REVIEW, 0 BLOCK; V11 fired 0 times) and the same day's catch-rate probe (40 named Microsoft-Marketplace exemplars, all removed); ReversingLabs (10 December 2025), Secure Annex (5 November 2025) and Koi Security's MaliciousCorgi figures as quoted by BleepingComputer and The Hacker News (23–26 January 2026), as published; weights from the product's scoring table.