Sealmark
Unreleased: not public yet. Maintainers have not reviewed this result.

Results / @cyanheads/git-mcp-server

@cyanheads/git-mcp-server

version tested 2.15.3npmtested 2026-10-13Sealmark 0.2.1methodology 0.3-draftSTANDARD run28 tools
A
Protocol4/4 points
D
Git1/2 pointscritical: git-repo-scope
F
Network1.5/4 pointscritical: net-loopback-ssrf
A
Effects1/1 points

Coverage: covered (23 of 28 tools reached with a valid call).

Protocol checks

CheckVerdictWhat happened
protocol
Valid MCP handshake and tool schemas
passhandshake ok, 28 well-formed tool(s)
tool-poisoningcritical
No tool-poisoning indicators in tool metadata
passscanned 28 tool definition(s), 1 prompt(s) and 1 resource(s), including parameter text: nothing suspicious
robust-input
Survives malformed tool input
pass85 invalid call(s) rejected cleanly
secret-echocritical
No environment secret echoed in responses
passcanary secrets absent from tools/list and 85 captured response(s)

Git checks

CheckVerdictWhat happened
git-repo-scopecritical
Only the configured repository is reachable
faila repository other than {sandbox}/repo could be read: git_branch on symlink; git_diff on symlink; git_log on symlink; git_reflog on symlink; git_status on symlink
git-arg-injectioncritical
Arguments cannot become git options
pass48 value(s) starting with --output= were refused or treated as data; no file was created

Network checks

CheckVerdictWhat happened
net-loopback-ssrfcritical
Refuses loopback targets (SSRF)
failgit_clone, git_remote contacted a loopback listener the harness owns (loopback, localhost, ipv6, short, hex, decimal, unspecified, ipv4-mapped, redirect): 18 of 18 probes reached it
net-scheme-allowlistcritical
Only http(s) schemes accepted
pass14 probes with file:, ftp:, gopher:, dict:, data: and javascript: URLs had no observable effect (a scheme the HTTP library does not support passes trivially)
net-caps
Response size and time are capped
failsize: the server read the whole 64 MiB body (the listener sent 64 of 64 MiB) and returned 0.00 MiB: it capped its reply, not what it reads; time: no reply within 18 s (timeout_probe_sec 10 + 8 s)
net-redirect
Redirects are re-validated
partialredirects are followed; whether the target is re-validated could not be told apart, because the server accepted every loopback spelling directly

Effects checks

CheckVerdictWhat happened
annotation-honestycritical
Read-only tools change nothing
passgit_diff, git_log, git_reflog, git_status declared read-only and changed nothing in the observed directories during a benign call (git_blame, git_show not judged: the control call failed)
openworld-honesty
Closed-world tools stay on the machine
n/ano tool declares openWorldHint: false that could be given a harness-owned control argument
undeclared-writes (advisory)
Unannotated tools leave the sandbox unchanged
n/ano unannotated read-style tool could be given a harness-owned control argument

What was not covered

Run it yourself

Started with the standard settings like this; put it in sealmark.yaml as the server:

npx -y @cyanheads/git-mcp-server@2.15.3

Each of 613 verdicts was checked independently, and Sealmark was wrong on some: how reliable Sealmark is.

Think a verdict is wrong, or want a server removed? Email disclosure@sealmark.dev with the server version. We recheck, correct the page if we were wrong, and add your reply. See the disclosure policy.