mcp-gitlab@2.3.26
CAUTION· install onlyPublisher claims: "GitLab MCP server for projects, merge requests, issues, pipelines, wiki, releases, and more" 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
COMMA_IN_PASSWORD_HINTDOWNLOAD_TOKEN_SECRETDOWNLOAD_TOKEN_TTLGITLAB_OAUTH_CLIENT_IDGITLAB_OAUTH_CLIENT_SECRETGITLAB_OAUTH_REDIRECT_URIGITLAB_OAUTH_TOKEN_PATHGITLAB_OAUTH_TOKEN_SCRIPTGITLAB_OAUTH_TOKEN_SCRIPT_TIMEOUT_SECONDSGITLAB_PERSONAL_ACCESS_TOKENGITLAB_PERSONAL_ACCESS_TOKEN_FILEGITLAB_USE_OAUTHMIN_SECRET_BYTESOAUTH_STATELESS_SECRETOAUTH_STATELESS_SECRET_PREVIOUSor--oauth/--use-oauth/--oauth-stateless-modeConfiguration, not credentials: ComSpec, DEFAULT_NULL, GITLAB_API_URL, GITLAB_MCP_REQUEST_BODY_LIMIT, GITLAB_PERMISSION_MODE, GITLAB_READ_ONLY_MODE, GITLAB_VERSION_CHECK_REGISTRY, JOB_LOG_MAX_PATTERN_LENGTH, LOG_FORMAT, MAX_PATTERN_LENGTH, PACKAGE_LATEST_PATH- Where it talks to
- no vendor host named in the codeAlso claude.ai, claude.com, chatgpt.com, client.example, a.example — 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 with a scoped credential, under the guard, and read the third-party hosts first. The code names claude.ai, claude.com, chatgpt.com, client.example, a.example as well as its own vendor. The guard injects COMMA_IN_PASSWORD_HINT, DOWNLOAD_TOKEN_SECRET, DOWNLOAD_TOKEN_TTL, GITLAB_OAUTH_CLIENT_ID, GITLAB_OAUTH_CLIENT_SECRET, GITLAB_OAUTH_REDIRECT_URI, GITLAB_OAUTH_TOKEN_PATH, GITLAB_OAUTH_TOKEN_SCRIPT, GITLAB_OAUTH_TOKEN_SCRIPT_TIMEOUT_SECONDS, GITLAB_PERSONAL_ACCESS_TOKEN, GITLAB_PERSONAL_ACCESS_TOKEN_FILE, GITLAB_USE_OAUTH, MIN_SECRET_BYTES, OAUTH_STATELESS_SECRET, OAUTH_STATELESS_SECRET_PREVIOUS only into requests to the host you bind (and its subdomains) and refuses the rest.
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-12 and scored it 79/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: Access to sensitive file paths; URL with embedded credentials; URL with embedded credentials. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 1 scenarios · 0 deviationsStatic findings
* rather than silently collapsed: `"/etc/passwd"` would otherwise encode to aFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* URLs: "http://alice:12,http://password:34,http://tail@host" givesFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// "https://user:pass@host" serializes as "https://host/"; keep the input's form.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.if (ch === " " || ch === "\t" || ch === "\n" || ch === "\r" || ch === "," || ch === "") {Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.// A URL inside another URL's path or query ("...?next=https://user:pass@host")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// "https://a.example,https:user:[email protected]" is two URLs; the "@" after theFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* there ("http://alice:p,http://w@host" gives "http://alice:p"), and an entryFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const SKILL_INSTALL = "npx skills add zereight/gitlab-mcp --skill gitlab-mcp-skill";Fix: Pin versions and sources; vendor anything fetched at install time.* host and port ("https://u:12/ab@host" has host "u"), so those forms use theFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.// by itself, so "https://alice:secret,https:word@host" stays one entry.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.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 @zereight/mcp-gitlab@2.3.26 as of 2d ago. This is the package itself, not its dependencies.
What would make this Verified
1 point to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim zereight: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- 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.
- URL with embedded credentials≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- Hidden zero-width characters detected≈ +4 on the totalKeep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.
- npx invocation of non-well-known package≈ +2 on the totalPin versions and sources; vendor anything fetched at install time.