mcpindex-gate@0.22.2
CAUTION· install onlyPublisher claims: "mcpindex gate - the in-path trust-to-act client for MCP tool calls, from mcpindex.ai (the MCP server index). The config-wire install wires a proxy that posts nothing; the Python SDK wrapper posts credential-blind call receipts by default (MCPINDEX_RECEIPT_INGEST_ENABLED=0 to disable)." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Nothing executable in the bundle ran; the trace covers the install step only.- Tested
- every file read, file written and host contacted by what ran
- Not tested
- use of the skill by an agent
What this means for the label: Caution here covers what ran. The server's tools were not exercised with a real credential, so nothing about their behavior is asserted; the credential summary below says what to do with that.
Before you give it your token
- It will ask for
- no credential variables read in the code
- Where it talks to
- no vendor host named in the codeAlso mcpindex.ai — not the publisher's domain; check what for before connecting.
- What the honeypot saw
- no credential files read · no network
- What we could not test
- use of the skill by an agent
Connect it under the guard. Nothing executable in the bundle ran; the trace covers the install step only. The code names no credential variable; the guard pins the network to what the honeypot saw and logs every call.
Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (1 scenario; nothing executable in the bundle ran; the trace covers the install step only) on 2026-11-11 and scored it 68/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Auto-update or dynamic fetch configuration; Pipe-to-shell pattern; Auto-update or dynamic fetch configuration. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 1 scenarios · 0 deviationsStatic findings
NEVER AUTO-UPDATES (load-bearing). The check is NOTIFY-ONLY — it returns an `UpdateNotice`Fix: Pin versions and sources; vendor anything fetched at install time.# "the wiring wizard", and the `curl | sh` alternative (`install.sh`) really does detect →Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.value = re.sub(r"[ \t\n\r\f\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+", " ", value)Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.is not: a kill between the open and the final flush leaves truncated JSON at theFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# "the wiring wizard", and the `curl | sh` alternative (`install.sh`) really does detect →Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.Popen(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.self._proc = subprocess.Popen( # noqa: S603 - argv is the operator's own commandFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.Recognizes ``npx [-y] <pkg>[@ver]``, ``uvx <pkg>[==ver]`` (and ``--from``), ``pipx run``Fix: Pin versions and sources; vendor anything fetched at install time.auto-updates — it only decides whether to surface a 'newer version available' notice."""Fix: Pin versions and sources; vendor anything fetched at install time.self._proc = subprocess.Popen( # noqa: S603 — cmd is the host-configured upstreamFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.auto-updated), so upgrading is one explicit paste — no guesswork. Pure + unit-testable.Fix: Pin versions and sources; vendor anything fetched at install time.has no passwd entry (k8s `runAsUser` with no /etc/passwd row, systemd `DynamicUser=`). SoFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.r"|(?:\b(?:id_rsa|\.pem|\.env|/var/secrets|\.config/credentials)\b)",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.value = re.sub(r"[ \t\n\r\f\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+", " ", value)Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.image_proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.self._proc = subprocess.Popen(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.# start with a dash (npx `-y`, uv `--with`, `--port`, `-v`, …), and argparse treats aFix: Pin versions and sources; vendor anything fetched at install time.runtimes_proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.info = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."send drop destroy modify upload insert merge purge kill "Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# npx options that take a value. Anything else that starts with '-' is a flag.Fix: Pin versions and sources; vendor anything fetched at install time.Cost to the agent
Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.
Known vulnerabilities
No advisories in OSV for mcpindex-gate@0.22.2 as of 4d ago. This is the package itself, not its dependencies.
What would make this Verified
12 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Pipe-to-shell pattern≈ +9 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
- Unclaimed publisher≈ +8 on the totalClaim mcpindex.ai: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Auto-update or dynamic fetch configuration≈ +4 on the totalPin versions and sources; vendor anything fetched at install time.
- Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- Unicode escape sequence detected≈ +2 on the totalPut hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.
- Process kill command≈ +2 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.