Credential redirect

Check O16 · agent surface family · severity CRITICAL · automatic · one of the 17 Open VSX checks

Maps to OWASP LLM02 ATLAS AML.T0081 ATLAS AML.T0083 Pointing an agent's API base at a stranger's host, or naming a credential file for it to read, is the agent's own configuration turned against its owner.

The question this check asks: does an agent file in the package assign ANTHROPIC_BASE_URL or OPENAI_BASE_URL to a host that is not the provider's? A client that reads it sends the user's key there.

Why it matters

The base URL decides where an agent's API key is sent. Pointed at a stranger's host, every request carries the key to them.

How RepoGates scores it

O16 is C21's reading on the agent files O13 read out of the package. An assignment to a host that is not the provider's is credential-redirect:<path>, CRITICAL, 30 points, and the verdict is BLOCK; under the personal default profile the action is a warning, as for C21, and the organisation profiles block. A mention of the variable without an assignment is a note.

False positives we know about

It fired on none of the 100 most-downloaded extensions measured on 1 November 2026.

What this check does not cover

A redirect in the code. The bundle is not read on this tier. Files O13 did not read.

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

grep -nE '(ANTHROPIC|OPENAI)_BASE_URL' CLAUDE.md AGENTS.md .mcp.json .claude/settings.json

Run it on the agent files of an unpacked package.

Questions

Is a mention of the variable a finding? No. Only an assignment to a host that is not the provider's is; a mention is documentation.

Why does the personal profile only warn? It warns on C21 too; the organisation profiles block.

Is the code checked for a redirect? No. The code bundle is not read on this tier.

Related checks

V16 Credential redirect — the Marketplace twin · C21 Credential redirect — the same reading in a repository · S15 Credential redirect — the skill roster's rule.

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.