ACVE-2026-0216 · Hijack shown in a test · HIGH
WHAT HAPPENED
The agent reads the planted issue, pulls the user's private repositories into context and opens a public pull request containing their contents.
THE SETUP — is yours like this?
WHAT TO CHANGE
Scope the GitHub token to the repositories in use and keep write tools behind confirmation.
- Reconfigure
mcp:github-mcp-server:env.GITHUB_PERSONAL_ACCESS_TOKENtofine-grained token limited to selected repositories. The agent cannot read repositories the token cannot reach. Owner: operator - Reconfigure
mcp:github-mcp-server:argsto--read-only or --lockdown-mode. Read-only mode removes the write channel; lockdown mode withholds public content from authors without push access. GitHub documents lockdown mode as best-effort, not an authorization boundary. Owner: operator - Reconfigure
agent.approvaltoask. Pull-request and push calls are confirmed by a person. Owner: operator - Reconfigure
github.github-mcp-server.lockdownModetoon by default for public repository content. Recommended: the injection arrived as an issue in a public repository. Owner: tool-provider - Reconfigure
anthropic.claude-desktop.alwaysAllowtotools that publish content, such as opening a pull request, still confirmed. Recommended: the private data left through a public pull request opened without a prompt. Owner: harness-vendor
HARM, REACH AND RECOVERY
SOURCES
ARTICLE
PACKAGE
EXPLOIT
EVIDENCE
Technical details
Private repositories are published in a public pull request when Claude 4 Opus in Claude Desktop, with the GitHub MCP server on Always Allow, reads an issue planted in the user's public repository.
Reproducibility: partial (model availability not checked (no registry reference))
Claims
Confirmed means the statement matches the cited primary source. Nothing on this page has been reproduced.
Claims on this page have not been checked against primary sources.
Description
Threat
content-author · prompt-injection · exfiltration
What
Invariant Labs (2025-05-26) planted an issue in a user's public repository. Asked to look at open issues, the agent read the user's private repositories and published their contents, including salary details, in a public pull request. Invariant states this is "not a flaw in the GitHub MCP server code itself"; the token reached public and private repositories alike.
Detection
The lockfile sees the GitHub MCP server and the approval mode; it sees neither the token's repository scope nor Claude Desktop's Always Allow choice.
Fix
Use a fine-grained token limited to the repositories in use; keep confirmation on for write tools; consider the server's --read-only and --lockdown-mode flags. The post also recommends Invariant Guardrails and MCP-scan, which are Invariant's own products.
Configuration
The rule ACVE's audit tool uses to recognise this configuration. The tool is not public yet.
and
some mcpServers where
or
package in ["pkg:oci/ghcr.io/github/github-mcp-server","pkg:golang/github.com/github/github-mcp-server"]
urlHost eq "api.githubcopilot.com"
approval in ["never","allowlist"]