ianewsfr-a11y/mcp-guard

GitHub ↗ · How this check works

Per-setup public labels: Linux / Haiku: Partly checked (README support for this platform is not stated) · Linux / Luna: Partly checked (README support for this platform is not stated)

Static status badge · SVG · read-only JSON. Embed with ![Coldpass status](https://coldpass.dev/badge/ianewsfr-a11y--mcp-guard.svg).

mcp-server

Works

README claims checked out on 2 recorded setups. Untested combinations remain unknown.

Answers apply to each recorded setup, revision and operation. Earlier observations remain in Run details.

Tested on Linux
PlatformHaikuLuna
LinuxREADME makes no claimREADME makes no claim

Linux / Haiku 5.5: README makes no claim · Oct 23, 2026 · 0fdcc0134379 · claude-code / 2.1.300 (Claude Code)
Recorded operation: <guest-path> inspect config_example.json --format json

Linux / Luna: README makes no claim · Oct 23, 2026 · 0fdcc0134379 · codex / codex-cli 0.163.0
Recorded operation: <guest-path> inspect config_example.json

Does what it says
1 of 1 claims checked out
  • The audit identifies command execution capabilities in server tools.: Real input produced the expected result: command-execution: bash

    Source: `mcp-guard` reads your Model Context Protocol (MCP) configuration or a server's tools list and tells you, in one table, which tools can execute commands, write data, touch a database, reach the network, or run with elevated privileges, and which ones hide instructions for the model in their descriptions (**tool poisoning**).

    Input: config_example.json

    Expected: execute_bash_command classified as CRITICAL command-execution

    Command: <guest-path> inspect config_example.json

    Observed: command-execution: bash, │ │ │ │ │ execute, shell │ │ │ │ │ privileged-access: root │ ├────────┼────────────────────────┼────────────┼───────────────────────────────┤ │ tool │ update_customer_record │ HIGH │ write-operation: update │ │ │ │ │ database-write: update │ │ │ │ │ database: database, query, │ │ │ │ │ sql, table │ ├

MCP
Documented only
Local or hosted
local
Local: runs on your machine
Needs keys or browser
None seen
Maintained
Maintained
actively maintained: last commit 0 days ago; 38 commits and 28 merged PRs in 90 days; 1 open issues, 0 open PRs; latest release 2026-10-23

Last commit Oct 23, 2026

Setup time
9 min 8 s
9 min 8 s to a working result
Issue
none found in recorded check
Examples
1 of 1 ran as expected
  • Audit the supplied example configuration: command completed successfully

    Source: README.md, Example

    Input: config_example.json

    Expected: The output identifies critical command execution risk

    Command: <guest-path> inspect config_example.json

    Observed: │ │ http, url │ ├────────┼────────────────────────┼────────────┼───────────────────────────────┤ │ server │ filesystem │ LOW │ no risky capability detected │ ├────────┼────────────────────────┼────────────┼───────────────────────────────┤ │ tool │ read_user_file │ LOW │ no risky capability detected │ └────────┴────────────────────────┴────────────┴───────────────────────────────┘ format: mcpServers (Claude Desktop / Cursor / Windsurf / Continue) + tools list 6 item(s) audited CRITICAL 2 HIGH 1 MEDIUM 1 LOW 2

Evidence
README behavior checked
Agent interfaces
CLI, MCP (documented only)
CLI, MCP (documented only)

Observed interfaces were exercised by the checker. Documentation alone does not confirm compatibility.

Tested with
Codex / Luna
  • Linux: Codex / Luna · agent codex-cli 0.163.0 · Partly checked (README support for this platform is not stated) · Oct 23, 2026 on 0fdcc0134379

Each entry describes its recorded operation and source revision. Other agent clients were not tested.

Safety
No sign of malicious behavior found in these checks

No problems traced to this repository code in these checks; a short run cannot prove safety. 6 listed items (named-host connections, static matches, dependency advisories) are below and do not change this verdict. 36 static matches retained as context.

Gitleaks found a possible hardcoded secret; value withheld. config_example.json

OSV reports a known vulnerability in this dependency version. pydantic 2 findings.

Full event, path and process lists for each observed setup:

Run details

Haiku 5.5

Native agent · Partly checked (README support for this platform is not stated)

Checked operation <guest-path> inspect config_example.json --format json

Agent-reported scope: Audit MCP server configs and live servers with mcp-guard (static audit of config_example.json, live tools/list of the official memory server, tool-poisoning detection on examples/poisoned_tools.json)

Run details
run
ianewsfr-a11y--mcp-guard-claude-haiku-5-5-1792781545288324088
date
Oct 23, 2026
time to working
687.6s
product hosting / execution
Local command in the guest
recorded operation scope
product operation
model
claude-haiku-5-5
agent / version
claude-code / 2.1.300 (Claude Code)
platform
linux
reported cost
$0.023511
Recorded source
https://github.com/ianewsfr-a11y/mcp-guard
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "0fdcc013437964be271fc57fe95e46394b1ccbb7", "url": "https://github.com/ianewsfr-a11y/mcp-guard"}
Test version
readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9
revision
0fdcc013437964be271fc57fe95e46394b1ccbb7
Whose fault: no fault assigned · resolved

Safety: Review signals: 1 hardcoded secret, 2 known vulnerability. 18 static matches retained as context.

Review signals: 1 hardcoded secret, 2 known vulnerability. 18 static matches retained as context.

Gitleaks found a possible hardcoded secret; value withheld. config_example.json

OSV reports a known vulnerability in this dependency version. pydantic 2 findings.

18 hardcoded secret matches retained as context; full list in the evidence.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

A short run cannot establish that code is safe.

Connections show IP addresses; proxies can hide the final hostname.

Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing.

Full safety evidence →

Answers recorded for this run
  • Offline by default: audits a config without starting servers: Real input produced the expected result: execute_bash_command

    Source: By default it runs entirely offline and never executes the servers it audits.

    Input: config_example.json

    Expected: JSON audit listing execute_bash_command

    Command: <guest-path> inspect config_example.json --format json

    Observed: execute_bash_command", "server": null, "risk": "CRITICAL", "findings": [ { "id": "fad9054d64b5abca4b3d8419ac2ec834", "category": "command-execution", "risk": "CRITICAL", "evidence": "bash, execute, shell" }, { "id": "6994492e89d4c3a5716087bc51558440", "category": "privileged-access", "risk": "CRITICAL", "evidence": "root" } ] }, { "kind": "tool", "name": "update_customer_record", "server": null, "risk": "HIGH", "findings": [ { "id": "0773e4a328e89cfd104d

  • --live starts the server and audits its real tools (memory server quick start): Real input produced the expected result: delete_entities

    Source: mcp-guard starts the server once, performs the MCP handshake, reads the tools it really exposes and audits each one:

    Input: npx -y @modelcontextprotocol/server-memory

    Expected: JSON audit listing the real delete_entities tool

    Command: <guest-path> inspect --live --yes --server 'npx -y @modelcontextprotocol/server-memory' --format json

    Observed: delete_entities", "server": "server-memory", "risk": "HIGH", "findings": [ { "id": "15bbe97fbbcc2c91b67f5876a704eec9", "category": "write-operation", "risk": "HIGH", "evidence": "delete" } ] }, { "kind": "tool", "name": "delete_observations", "server": "server-memory", "risk": "HIGH", "findings": [ { "id": "2ab73595feb0ebea35c99155b8995d06", "category": "write-operation", "risk": "HIGH", "evidence": "delete" } ] }, { "kind": "tool", "name": "delete_rel

  • inspect flags hidden instructions as tool poisoning: Real input produced the expected result: TOOL POISONING DETECTED

    Source: prints a **TOOL POISONING DETECTED** alert under the table

    Input: examples/poisoned_tools.json

    Expected: TOOL POISONING DETECTED alert

    Command: <guest-path> inspect examples/poisoned_tools.json

    Observed: TOOL POISONING DETECTED ───────────────────────────╮ │ 4 tool(s) carry hidden instructions for the model: get_weather, add_numbers, │ │ translate_text, format_date. │ │ Any agent connected to this server reads them as if they came from you. Do │ │ not enable these tools until their descriptions and parameter descriptions │ │ have been reviewed. │ ╰──────────────────────────────────────────────────────────────────────────────╯

Examples

  • Tool poisoning detection on the shipped sample: command completed successfully

    Source: README.md Tool poisoning section (examples/poisoned_tools.json)

    Input: examples/poisoned_tools.json

    Expected: TOOL POISONING DETECTED alert

    Command: <guest-path> inspect examples/poisoned_tools.json

    Observed: 0 HIGH 4 MEDIUM 0 LOW 1 ╭────────────────────────── TOOL POISONING DETECTED ───────────────────────────╮ │ 4 tool(s) carry hidden instructions for the model: get_weather, add_numbers, │ │ translate_text, format_date. │ │ Any agent connected to this server reads them as if they came from you. Do │ │ not enable these tools until their descriptions and parameter descriptions │ │ have been reviewed. │ ╰──────────────────────────────────────────────────────────────────────────────╯

  • Custom rules file (--rules) applied to a config: command completed successfully

    Source: README.md --rules: custom rules (examples/rules.yaml)

    Input: examples/rules.yaml with config_example.json

    Expected: JSON audit with privileged-access finding

    Command: <guest-path> inspect --rules examples/rules.yaml config_example.json --format json

    Observed: "update" }, { "id": "1b25a8ab4e22246c65c777ebbfa39be8", "category": "database", "risk": "MEDIUM", "evidence": "database, query, sql, table" }, { "id": "e5efd8045e9a7c12789b1a68b6cdf766", "category": "customer-data", "risk": "HIGH", "evidence": "customer, customers" } ] }, { "kind": "server", "name": "filesystem", "server": null, "risk": "LOW", "findings": [] }, { "kind": "tool", "name": "fetch_url", "server": null, "risk": "LOW", "findings": [] } ]

  • Documented test suite: Ran the documented command with the venv pytest: 945 passed, 1 failed (tests/test_proxy.py::test_pins_never_store_secrets_or_the_home_directory). The failure is environmental: the test expects the venv python under the home directory, but the venv is at <guest-path> and resolves to /usr/bin/python3.12. Not a product defect as far as observed.

    Source: README.md Development section (pytest --cov=mcp_guard)

    Expected: documented command completes successfully

    Observed: Ran the documented command with the venv pytest: 945 passed, 1 failed (tests/test_proxy.py::test_pins_never_store_secrets_or_the_home_directory). The failure is environmental: the test expects the venv python under the home directory, but the venv is at <guest-path> and resolves to /usr/bin/python3.12. Not a product defect as far as observed.

Local or hosted: local

What the agent did

Audit MCP server configs and live servers with mcp-guard (static audit of config_example.json, live tools/list of the official memory server, tool-poisoning detection on examples/poisoned_tools.json)

cd <guest-path> && ls -la && git status 2>&1 | head -3; id -u; cat /etc/os-release | head -2; python3 --version; cat README.md 2>/dev/null | head -200
cd <guest-path> && sed -n 200,400p README.md; ls .coldpass; cat CLAUDE.md | head -50; cat requirements.txt requirements-dev.txt; grep -n requires-python pyproject.toml
cd <guest-path> && grep -n '^#' README.md; grep -n -i 'cron\|schedul\|--once\|webhook\|loop' README.md | head; sed -n 400,520p README.md | cut -c1-300
cd <guest-path> && sed -n 520,570p README.md | cut -c1-400; sed -n 1,60p pyproject.toml; ls .github/workflows examples docs tests; cat .gitignore
cd /tmp && (python3 -m venv <guest-path> 2>&1 || (sudo -n apt-get update -qq && sudo -n apt-get install -y -qq python3-venv >/dev/null 2>&1 && python3 -m venv <guest-path>)) ; <guest-path> --version && cd <guest-path> && <guest-path> install -q -e ".[dev]" 2>&1 | tail -5; echo rc=$?; <guest-path> --version
cd <guest-path> && <guest-path> show mcp-guard-audit | head -2; <guest-path> -m pytest -q --cov=mcp_guard --cov-report=term 2>&1 | tail -15; ls -la <guest-path> | grep -i -E 'egg|coverage|pytest'
cd <guest-path> && <guest-path> -m pytest -q tests/test_proxy.py::test_pins_never_store_secrets_or_the_home_directory 2>&1 | grep -E 'Error|assert|E   ' | head -20
cd <guest-path> && M=<guest-path>; $M inspect --help | head -40; which node npx; node --version 2>&1; cat config_example.json | head -30; ls .coldpass
cd <guest-path> && (sudo -n apt-get install -y -qq nodejs npm ><guest-path> 2>&1; echo apt_rc=$?); node --version; npm --version; M=<guest-path>; $M inspect config_example.json; echo rc=$?
cd /tmp && export NODE_USE_ENV_PROXY=1 && timeout 240 <guest-path> inspect --live --yes --server "npx -y @modelcontextprotocol/server-memory" --format json 2><guest-path> | head -c 3000; echo; echo rc=${PIPESTATUS[0]}; tail -5 <guest-path>
cd <guest-path> && M=<guest-path>; $M inspect examples/poisoned_tools.json | tail -8; echo rc=$?; $M inspect --rules examples/rules.yaml config_example.json --format json | head -c 400; echo; echo ---; grep -rn -i 'schedul\|cron\|interval\|while True\|--once\|--now\|webhook' mcp_guard | head -20; ls <guest-path> /inputs 2>&1
cd <guest-path> && M=<guest-path> && cat > .coldpass/probe.json <<EOF
{"kind":"cli","argv":["$M","inspect","config_example.json","--format","json"],"cwd":"<guest-path>","expected_text":"execute_bash_command"}
EOF
cat > .coldpass/claims.json <<EOF
[
{"kind":"claim","claim":"Offline by default: audits a config without starting servers","source":"By default it runs entirely offline and never executes the servers it audits.","input":"config_example.json","expected":"JSON audit listing execute_bash_command","probe_kind":"cli","argv":["$M","inspect","config_example.json","--format","json"],"expected_text":"execute_bash_command","cwd":"<guest-path>"},
{"kind":"claim","claim":"--live starts the server and audits its real tools (memory server quick start)","source":"mcp-guard starts the server once, performs the MCP handshake, reads the tools it really exposes and audits each one:","input":"npx -y @modelcontextprotocol/server-memory","expected":"JSON audit listing the real delete_entities tool","probe_kind":"cli","argv":["$M","inspect","--live","--yes","--server","npx -y @modelcontextprotocol/server-memory","--format","json"],"expected_text":"delete_entities","cwd":"/tmp"},
{"kind":"claim","claim":"inspect flags hidden instructions as tool poisoning","source":"prints a **TOOL POISONING DETECTED** alert under the table","input":"examples/poisoned_tools.json","expected":"TOOL POISONING DETECTED alert","probe_kind":"cli","argv":["$M","inspect","examples/poisoned_tools.json"],"expected_text":"TOOL POISONING DETECTED","cwd":"<guest-path>"}
]
EOF
cat > .coldpass/examples.json <<EOF
[
{"kind":"example","claim":"Tool poisoning detection on the shipped sample","source":"README.md Tool poisoning section (examples/poisoned_tools.json)","input":"examples/poisoned_tools.json","expected":"TOOL POISONING DETECTED alert","argv":["$M","inspect","examples/poisoned_tools.json"],"cwd":"<guest-path>","env":{},"expected_text":"TOOL POISONING DETECTED"},
{"kind":"example","claim":"Custom rules file (--rules) applied to a config","source":"README.md --rules: custom rules (examples/rules.yaml)","input":"examples/rules.yaml with config_example.json","expected":"JSON audit with privileged-access finding","argv":["$M","inspect","--rules","examples/rules.yaml","config_example.json","--format","json"],"cwd":"<guest-path>","env":{},"expected_text":"privileged-access"},
{"kind":"example","claim":"Documented test suite","source":"README.md Development section (pytest --cov=mcp_guard)","reason":"Ran the documented command with the venv pytest: 945 passed, 1 failed (tests/test_proxy.py::test_pins_never_store_secrets_or_the_home_directory). The failure is environmental: the test expects the venv python under the home directory, but the venv is at <guest-path> and resolves to /usr/bin/python3.12. Not a product defect as far as observed."}
]
EOF
cat > .coldpass/cycles.json <<'EOF'
{"detected":false,"reason":"Inspected README (no cron, schedule, --once or --now, webhook or loop features) and mcp_guard source. The only loops are stdio/proxy message pumps (mcp_guard/live/*, runtime/proxy.py, runtime/journal.py, runtime/recorder.py, runtime/inspector.py), which serve one request stream and are not product cycles. mcp-guard runs one audit per invocation.","checks":[]}
EOF
for f in probe claims examples cycles; do <guest-path> -I -m json.tool .coldpass/$f.json >/dev/null && echo "$f ok"; done; cat .coldpass/probe.json
cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | tail -60; echo rc=${PIPESTATUS[0]}
cd <guest-path> && rm -rf .coverage .pytest_cache && cat > .coldpass/report.json <<'EOF'
{"outcome":"working","fault_owner":null,"operation":"Audit MCP server configs and live servers with mcp-guard (static audit of config_example.json, live tools/list of the official memory server, tool-poisoning detection on examples/poisoned_tools.json)","operation_scope":"Linux x86_64 Ubuntu 24.04, Python 3.12.3 venv at <guest-path>, Node v18.19.1 / npm 9.2.0 (apt). Offline audit needs no network; the --live memory-server check needs npm registry access. No credentials or browser needed.","steps":["sudo apt-get install -y python3-venv (after python3 -m venv failed on missing ensurepip)","python3 -m venv <guest-path>","<guest-path> install -e \".[dev]\" (README Development section)","<guest-path> --version -> mcp-guard, version 0.12.0","sudo apt-get install -y nodejs npm (Node needed for npx in README Quick Replication)","<guest-path> inspect config_example.json","NODE_USE_ENV_PROXY=1 <guest-path> inspect --live --yes --server \"npx -y @modelcontextprotocol/server-memory\" --format json (run from /tmp)","<guest-path> inspect examples/poisoned_tools.json","<guest-path> inspect --rules examples/rules.yaml config_example.json --format json","<guest-path> -m pytest --cov=mcp_guard --cov-report=term-missing (README Development)"],"deviations":["python3 -m venv failed: ensurepip not available (Ubuntu python3-venv package missing). Installed python3-venv with sudo apt-get and recreated the venv.","Node/npm were not installed in the guest; installed nodejs and npm from apt (v18.19.1) with sudo so the README's npx quick start could run.","README Development pytest run: 945 passed, 1 failed. tests/test_proxy.py::test_pins_never_store_secrets_or_the_home_directory expects the venv python path to start with ~, but the venv is at <guest-path> and Python resolves to /usr/bin/python3.12. Environmental, recorded as a reasoned example rather than a pass.","The README's pipx/uvx install path was not used; the Development-section editable install (pip install -e .[dev]) was used instead, as the README documents it.","The task's /inputs/coldpass-preflight.py path does not exist in this VM; the checker at <guest-path> was run with --validate --replay instead.","MCP probe not used: mcp-guard is a CLI and does not serve MCP; the probe and claims are kind cli.","Cycle: none detected (no scheduler, cron, --once or webhook). The while-loops in the source are stdio/proxy pumps."],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":"None required for the product. Optional: make the test_proxy home-directory assertion independent of where the venv lives (or run the suite from a venv under $HOME)."}
EOF
<guest-path> -I -m json.tool .coldpass/report.json >/dev/null && echo report ok; <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | head -c 300; echo; ls -la .coldpass
Earlier attempts (1)

Luna

Native agent · Partly checked (README support for this platform is not stated)

Checked operation <guest-path> inspect config_example.json

Agent-reported scope: Install mcp-guard-audit in a Python 3.12 virtual environment and audit the repository's documented example configuration.

Run details
run
ianewsfr-a11y--mcp-guard-gpt-6-luna-1792783408269659326
date
Oct 23, 2026
time to working
548.1s
product hosting / execution
Local command in the guest
recorded operation scope
product operation
model
gpt-6-luna
agent / version
codex / codex-cli 0.163.0
platform
linux
reported cost
not reported (not assumed free)
Recorded source
https://github.com/ianewsfr-a11y/mcp-guard
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "0fdcc013437964be271fc57fe95e46394b1ccbb7", "url": "https://github.com/ianewsfr-a11y/mcp-guard"}
Test version
readme-f72312298d35d84837d4fc5f6f22b138d54d456600b5ed431e36e8f5db931dbf
revision
0fdcc013437964be271fc57fe95e46394b1ccbb7
Whose fault: no fault assigned · resolved

Safety: Review signals: 1 hardcoded secret, 2 known vulnerability. 18 static matches retained as context.

Review signals: 1 hardcoded secret, 2 known vulnerability. 18 static matches retained as context.

Gitleaks found a possible hardcoded secret; value withheld. config_example.json

OSV reports a known vulnerability in this dependency version. pydantic 2 findings.

18 hardcoded secret matches retained as context; full list in the evidence.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

A short run cannot establish that code is safe.

Connections show IP addresses; proxies can hide the final hostname.

Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing.

Full safety evidence →

Answers recorded for this run
  • The audit identifies command execution capabilities in server tools.: Real input produced the expected result: command-execution: bash

    Source: `mcp-guard` reads your Model Context Protocol (MCP) configuration or a server's tools list and tells you, in one table, which tools can execute commands, write data, touch a database, reach the network, or run with elevated privileges, and which ones hide instructions for the model in their descriptions (**tool poisoning**).

    Input: config_example.json

    Expected: execute_bash_command classified as CRITICAL command-execution

    Command: <guest-path> inspect config_example.json

    Observed: command-execution: bash, │ │ │ │ │ execute, shell │ │ │ │ │ privileged-access: root │ ├────────┼────────────────────────┼────────────┼───────────────────────────────┤ │ tool │ update_customer_record │ HIGH │ write-operation: update │ │ │ │ │ database-write: update │ │ │ │ │ database: database, query, │ │ │ │ │ sql, table │ ├

Examples

  • Audit the supplied example configuration: command completed successfully

    Source: README.md, Example

    Input: config_example.json

    Expected: The output identifies critical command execution risk

    Command: <guest-path> inspect config_example.json

    Observed: │ │ http, url │ ├────────┼────────────────────────┼────────────┼───────────────────────────────┤ │ server │ filesystem │ LOW │ no risky capability detected │ ├────────┼────────────────────────┼────────────┼───────────────────────────────┤ │ tool │ read_user_file │ LOW │ no risky capability detected │ └────────┴────────────────────────┴────────────┴───────────────────────────────┘ format: mcpServers (Claude Desktop / Cursor / Windsurf / Continue) + tools list 6 item(s) audited CRITICAL 2 HIGH 1 MEDIUM 1 LOW 2

Local or hosted: local

What the agent did

Install mcp-guard-audit in a Python 3.12 virtual environment and audit the repository's documented example configuration.

cd <guest-path> && vault-search 'mcp-guard README MCP server' && cat <host-path> && cat ~/.agents/skills/i-have-adhd/SKILL.md && cat ~/.agents/skills/ponytail/SKILL.md && cat ~/.agents/skills/p3-mode/SKILL.md && rg --files -g 'AGENTS.md' -g 'README*' -g 'p3-models.md' -g 'pyproject.toml' -g 'requirements*' -g '*.json' -g 'Makefile' -g '*.yml' -g '*.yaml' | head -100 && cat README.md && id -u && python3 --version
unused
cd <guest-path>; cat <host-path>; cat ~/.agents/skills/i-have-adhd/SKILL.md; cat ~/.agents/skills/ponytail/SKILL.md; cat ~/.agents/skills/p3-mode/SKILL.md; rg --files -g 'AGENTS.md' -g 'README*' -g 'p3-models.md' -g 'pyproject.toml' -g 'requirements*' -g '*.json' -g 'Makefile' -g '*.yml' -g '*.yaml' | head -100; cat README.md; id -u; python3 --version
cd <guest-path>; ls -la; find . -maxdepth 2 -name AGENTS.md -o -name config_example.json; python3 -m pip --version; command -v uvx; command -v uv; command -v node; command -v npm; command -v mcp-guard; sed -n '1,30p' examples/config_example.json 2>/dev/null; ls examples
cd <guest-path>; sudo -n apt-get update && sudo -n apt-get install -y python3-pip python3-venv nodejs npm; python3 -m venv <guest-path>
cd <guest-path>; <guest-path> -m pip install mcp-guard-audit; <guest-path> -m pip install -e '.[dev]'
cd <guest-path>; <guest-path> inspect config_example.json
cd <guest-path>; mkdir -p .coldpass; cat > .coldpass/probe.json <<'EOF'
{"kind":"cli","argv":["<guest-path>","inspect","config_example.json"],"cwd":"<guest-path>","expected_text":"execute_bash_command"}
EOF
cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"The audit identifies command execution capabilities in server tools.","source":"`mcp-guard` reads your Model Context Protocol (MCP) configuration or a server's tools list and tells you, in one table, which tools can execute commands, write data, touch a database, reach the network, or run with elevated privileges, and which ones hide instructions for the model in their descriptions (**tool poisoning**).","input":"config_example.json","expected":"execute_bash_command classified as CRITICAL command-execution","probe_kind":"cli","argv":["<guest-path>","inspect","config_example.json"],"cwd":"<guest-path>","expected_text":"command-execution: bash"}]
EOF
cat > .coldpass/examples.json <<'EOF'
[{"kind":"example","claim":"Audit the supplied example configuration","source":"README.md, Example","input":"config_example.json","expected":"The output identifies critical command execution risk","argv":["<guest-path>","inspect","config_example.json"],"cwd":"<guest-path>","expected_text":"command-execution: bash"}]
EOF
cat > .coldpass/cycles.json <<'EOF'
{"detected":false,"reason":"The README describes one-shot inspect and scan commands and no product scheduler, recurring loop, or webhook trigger; the documented inspect operation was run once.","checks":[]}
EOF
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay
cd <guest-path>; cat > .coldpass/report.json <<'EOF'
{"outcome":"working","fault_owner":null,"operation":"Install mcp-guard-audit in a Python 3.12 virtual environment and audit the repository's documented example configuration.","operation_scope":"README install and inspect workflow; Python 3.10+ satisfied by Python 3.12.3.","steps":["sudo -n apt-get update && sudo -n apt-get install -y python3-pip python3-venv nodejs npm","python3 -m venv <guest-path>","<guest-path> -m pip install mcp-guard-audit","<guest-path> -m pip install -e '.[dev]'","<guest-path> inspect config_example.json","<env-var>=<guest-path> python3 -I <guest-path> --validate --replay"],"deviations":["The environment's initial Python lacked pip; system pip, venv, Node and npm were installed with apt before continuing. The package installs were performed in a supported virtual environment.","The README quick replication live command was not run; the offline documented inspect example exercised a useful real audit operation without downloading or executing an MCP server."],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":null}
EOF
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay