Scans GitHub repositories and profiles for malware and scam signals to provide risk verdicts for AI agents and developers.
Also known as flagrix-io/flagrix-cli, flagrix-cli
- Stars
- 2
- Tools
- —
- Downloads, 30 days
- —
- Latest version
- 0.5.1
- Last commit
- Nov 10, 2026
- License
- MIT
What is flagrix MCP?
flagrix scans GitHub repositories and profiles for malware and scam signals to provide risk verdicts for AI agents and developers.
Summary generated from the project's README
About flagrix MCP server
Flagrix provides a security scanning layer for developers and AI agents to identify malware and scam signals in GitHub repositories and user profiles. It functions as a local tool that can be run via the terminal, integrated into CI pipelines, or connected to AI clients using the MCP stdio protocol. By analyzing specific commits, the system ensures that the risk verdict is pinned to a exact state of the code, preventing silent changes from invalidating a scan.
Users can perform repository scans using the scan command or profile evaluations with scan-user. The tool operates with GitHub's default rate limits, but providing a GITHUB_TOKEN increases the capacity from 60 to 5,000 requests per hour and enables scanning of private repositories. All scanning logic and dependency checks against the OSV malicious-package feed happen locally to maintain privacy, as no telemetry or data is sent to a central Flagrix backend.
What you can do with it
- 1Verify repository safety before cloningAn AI agent can use the scan_github_repo tool to check a repository for data exfiltration patterns before downloading the code.
- 2Evaluate GitHub profile riskA developer can check if a GitHub user profile shows signs of being a scammer or a fake recruiter.
- 3Automate security gates in CIIntegrate the scanner into a continuous integration pipeline to automatically stop builds if high-risk code is detected.
Written from the project's README. Every use case is checked against a quote from it.
How to install flagrix MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall flagrix MCP in Claude Code
$ claude mcp add --env 'GITHUB_TOKEN=<YOUR_GITHUB_TOKEN>' flagrix-cli -- npx -y flagrixInstall flagrix MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"flagrix-cli": {
"command": "npx",
"args": [
"-y",
"flagrix"
],
"env": {
"GITHUB_TOKEN": "<YOUR_GITHUB_TOKEN>"
}
}
}
}Install flagrix MCP in VS Code
.vscode/mcp.json
{
"servers": {
"flagrix-cli": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"flagrix"
],
"env": {
"GITHUB_TOKEN": "<YOUR_GITHUB_TOKEN>"
}
}
}
}Install flagrix MCP in VS Code CLI
$ code --add-mcp '{"name":"flagrix-cli","type":"stdio","command":"npx","args":["-y","flagrix"],"env":{"GITHUB_TOKEN":"<YOUR_GITHUB_TOKEN>"}}'Install flagrix MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"flagrix-cli": {
"command": "npx",
"args": [
"-y",
"flagrix"
],
"env": {
"GITHUB_TOKEN": "<YOUR_GITHUB_TOKEN>"
}
}
}
}Install flagrix MCP in Codex
$ codex mcp add flagrix-cli --env 'GITHUB_TOKEN=<YOUR_GITHUB_TOKEN>' -- npx -y flagrixInstall flagrix MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.flagrix-cli] command = "npx" args = ["-y", "flagrix"] [mcp_servers.flagrix-cli.env] GITHUB_TOKEN = "<YOUR_GITHUB_TOKEN>"
Install flagrix MCP in Gemini CLI
$ gemini mcp add -s user -e 'GITHUB_TOKEN=<YOUR_GITHUB_TOKEN>' flagrix-cli npx -- -y flagrixInstall flagrix MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"flagrix-cli": {
"command": "npx",
"args": [
"-y",
"flagrix"
],
"env": {
"GITHUB_TOKEN": "<YOUR_GITHUB_TOKEN>"
}
}
}
}Configuration
GITHUB_TOKENSecretOptional GitHub token — raises API rate limits and enables private-repo scans
| Name | Description | |
|---|---|---|
| GITHUB_TOKEN | Optional GitHub token — raises API rate limits and enables private-repo scans | Secret |
Automated checks
Ran Nov 13, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachableflagrix-io/flagrix-cli is public and reachablegithub.com/flagrix-io/flagrix-cli ↗Pass
- Package names this repository as its sourceflagrix names flagrix-io/flagrix-cli as sourcenpmjs.com/package/flagrix ↗Pass
- Build provenance (Sigstore attestation)Sigstore attestation for flagrixnpmjs.com/package/flagrix/v/0.5.1#provenance ↗Pass
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-11-10github.com/flagrix-io/flagrix-cli ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNo popular package one edit away from flagrixPass
- No critical advisory in the package or its dependencies99 resolved dependencies checked; no critical advisoryosv.dev ↗Pass
- No hidden instructions to the model0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNot checked
- Remote endpoint answers the MCP handshakeNot checked
README
View on GitHubflagrix
Scan GitHub repositories and profiles for malware before you clone — from the terminal, CI, or an AI agent. The same commit-pinned verdict as the Flagrix browser extension, made callable.
npx flagrix scan https://github.com/some-org/coding-assignment
some-org/coding-assignment @ 3f9c2a1
HIGH RISK — Do not clone security score 12/100
3 files scanned · 10 dependencies · 2 issues
CRITICAL Data exfiltration patterns detected: Keylogger Pattern
assignment.js:14
14 document.addEventListener("keydown", (e) => send(e.key))
Built after real fake-recruiter campaigns ("coding assignment" repos that steal wallets, SSH keys, and browser sessions) started targeting developers.
Commands
flagrix scan <url | owner/repo> # scan a repository (--ref <branch|sha>)
flagrix scan-user <username> # score a GitHub profile for scam signals
flagrix mcp # MCP server (stdio) for AI agents
Exit codes
| code | meaning |
|---|---|
| 0 | low risk |
| 1 | scan failed |
| 2 | medium risk — review before proceeding |
| 3 | high risk — do not clone |
| 4 | scan incomplete — not enough of the repository was read to give a verdict |
--json (automatic when stdout is piped) emits the full result. The verdict is
pinned to the scanned commit (commitSha in the JSON): every file is read at
that SHA, so a push mid-scan or after the verdict can't silently invalidate it.
Incomplete scans (exit 4)
A repository scan is one tree request plus up to ~200 file reads, and GitHub allows 60 requests an hour without a token. When the budget runs out part way through, the rest of the repository is never looked at — so a "low risk, no findings" result over 30 of 180 files is the absence of looking, not a clean bill of health.
The result says so (scanSummary.complete: false, with
scanSummary.incompleteReason of "rate-limit" or "fetch-errors"), the
human output withholds the verdict and the score, and the exit code is 4
instead of 0. In CI the exit code is the decision and nobody reads stdout, so
a gate on flagrix scan stops here as it does on any non-zero code. Findings
are the other way round: evidence found is evidence however little else was
read, so a medium or high verdict keeps its own code and the coverage note
reads "there may be more".
In --json output, read verdict and coverage rather than riskLevel:
{
"verdict": "incomplete",
"coverage": {
"complete": false,
"unreliableClear": true,
"filesRead": 30,
"filesUnread": 150,
"reason": "rate-limit"
},
"riskLevel": "low",
"safeToClone": false,
...
}
verdictis"low","medium","high", or"incomplete"when a low result rests on files that were never read. It matches the exit code (0 / 2 / 3 / 4).coverage.unreliableClearis true exactly whenverdictis"incomplete";coverage.completeis false on any partial scan, including a medium or high one.reasonis present only when coverage is incomplete.riskLevel,riskScoreand the rest of the engine's result are unchanged, so existing consumers keep working — butriskLevelis the engine's reading of the files it did see, so on an incomplete scan it can still say"low".safeToCloneis kept for compatibility and is nowfalsewheneververdictis"incomplete"(in 0.4.0 and earlier it could betruethere). Gate onverdictor the exit code instead.
The MCP tool's JSON block carries the same fields.
Set a token to make this rare: GITHUB_TOKEN raises the budget to 5,000/h.
AI agents
claude mcp add flagrix -- npx -y flagrix mcp
Tools: scan_github_repo, scan_github_user. A Claude Code hook that gates every
git clone on a scan ships in hooks/ — see
docs/agent-gating.md.
Tokens & rate limits
Unauthenticated scans use GitHub's 60 req/h budget (a scan issues one request per
scanned file, up to ~200). Set GITHUB_TOKEN (or FLAGRIX_GITHUB_TOKEN, or
--token) to raise it to 5,000/h and to scan private repositories. A scan that
runs out of budget reports partial coverage and exits 4 — see
Incomplete scans.
Privacy
Fully local. No telemetry, no accounts, no Flagrix backend — the only network calls go to the GitHub/npm APIs and the public detection-rules repository (signature refresh, cached 6 h, with a bundled offline snapshot).
Dependencies are also checked against the OSV malicious-package feed
(osv-malicious.json from the same repository: every npm/PyPI package the
OpenSSF malicious-packages project has confirmed malicious). The feed is
downloaded and matched locally, so dependency names never leave your machine.
It is cached 6 h and revalidated with its ETag. Set FLAGRIX_OSV_FEED=0 to
skip it (the curated list in the signatures still applies).
How it works
Scanning logic lives in @flagrix/scanner-core (MIT), signatures in flagrix-detection-rules (MIT) — the same engine and rules the browser extension uses. Verdicts are risk assessments, not definitive fraud determinations; always verify through official channels.
AI Disclosure
This project leverages Claude AI for boilerplate generation, test-suite expansion, and optimization. All AI-generated code is strictly reviewed, refactored, and verified by human maintainers before merging.
License
MIT — see LICENSE.
flagrix MCP questions
How do I add flagrix MCP to Claude Code?
Run claude mcp add --env 'GITHUB_TOKEN=<YOUR_GITHUB_TOKEN>' flagrix-cli -- npx -y flagrix in your terminal. Add --scope user to make it available in every project.
How do I add flagrix MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
Is my data private when using flagrix?
Yes, the tool is fully local with no telemetry or Flagrix backend; network calls only go to GitHub/npm APIs and the detection rules repository.
What does exit code 4 mean?
Exit code 4 indicates an incomplete scan where not enough of the repository was read to provide a full verdict, often due to rate limiting.