danoszz/penthera

GitHub ↗ · How this check works

Per-setup public labels: Linux / Luna: Works

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

mcp-server

Works

README claims checked out on 1 recorded setup.

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

Tested on Linux
PlatformHaikuLuna
Linuxyes

Linux / Luna: yes · Oct 26, 2026 · 07421f95ced3 · codex / codex-cli 0.163.0
Recorded operation: node bin/penthera.js mcp --offline --root <guest-path> · local stdio MCP start + initialize + tools/list

Does what it says
1 of 1 claims checked out
  • Penthera is an open-source cyber security agent: Real input produced the expected result: Penthera scan_repo on .: 6 findings (3 high, 1 medium, 2 info).

    Source: The security review you never had time for. Offline, rule-based, and you can verify every finding yourself.

    Input: {"tool": "scan_repo", "arguments": {"path": "<guest-path>"}}

    Expected: Penthera scan_repo on .: 6 findings (3 high, 1 medium, 2 info).

    Command: node bin/penthera.js mcp --offline --root <guest-path> tools/call {"tool": "scan_repo", "arguments": {"path": "<guest-path>"}}

    Observed: Penthera scan_repo on .: 6 findings (3 high, 1 medium, 2 info).\n- [high, confirmed] Hardcoded password in source (tests/detection-hardening.test.js:54); explain with rule \"secrets\"\n- [high, confirmed] Generic API key assignment in source (tests/fixtures/fix/express/server.js:11); explain with rule \"secrets\"\n- [high, confirmed] JWT secret assignment in source (tests/fixtures/fix/next/app/api/login/route.ts:3); explain with rule \"secrets\"\n- [medium, needs-human-review] Node.js 22 in use: check whether it is affected by 2 advisories (.nvmrc); explain with rule \"runtime-advisory\"\nA cl

MCP
Yes, observed
Local or hosted
local
Local: runs on your machine
Needs keys or browser
None seen
Maintained
Maintained
actively maintained: last commit 0 days ago; 804 commits and 167 merged PRs in 90 days; 5 open issues, 4 open PRs; latest release 2026-10-25

Last commit Oct 26, 2026

Setup time
1 min 29 s
1 min 29 s to a working result
Issue
none found in recorded check
Examples
1 of 1 ran as expected
  • Run the documented repository scan through MCP: command completed successfully

    Source: docs/commands/mcp.md The tools

    Input: scan_repo on repository root

    Expected: findings and coverage

    Command: node bin/penthera.js mcp --offline --root <guest-path>

    Observed: penthera mcp 2.0.0: stdio, roots <guest-path>, offline

Evidence
README behavior checked
Agent interfaces
MCP
MCP

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

MCP context
6 tools · about 1,449 tokens
6 tools · about 1,449 tokens

Largest returned tools/list page in these observations. Compact UTF-8 definition bytes ÷ 4, rounded up; approximate, excluding client framing and tool results. This is context size, not proof that every tool works.

Measured on linux with Luna · Oct 26, 2026 on 07421f95ced3

Tested with
Codex / Luna
  • Linux: Codex / Luna · agent codex-cli 0.163.0 · Checked operation passed · Oct 26, 2026 on 07421f95ced3

Each entry describes its recorded operation and source revision.

Safety
No unexpected network or file activity found in these checks

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

Source contains download and execute; review its purpose. 4 distinct locations. 4 findings.

Source contains encoded execution; review its purpose. lib/deps/python/capabilities.js

Gitleaks found a possible hardcoded secret; value withheld. 3 distinct locations. 136 findings.

OSV reports a known vulnerability in this dependency version. 4 distinct locations. 51 findings.

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

Run details

Luna

Native agent · Checked operation passed

Checked operation node bin/penthera.js mcp --offline --root <guest-path> · local stdio MCP start + initialize + tools/list

Agent-reported scope: Offline repository security scan with Penthera MCP scan_repo

MCP server returned: penthera · version 2.0.0.

MCP tools returned: scan_repo, scan_url, check_dependencies, audit_ai_tooling, explain_finding, runtime_advisories. Tool listing does not establish authenticated tool-call success.

Run details
run
danoszz--penthera-gpt-6-luna-1793019575551765334
date
Oct 26, 2026
time to working
89.1s
product hosting / execution
Local stdio MCP server 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/danoszz/penthera
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "07421f95ced357e0d7e184353e65821748478235", "url": "https://github.com/danoszz/penthera"}
Test version
readme-a17389bda4cc696f9601c0c4ff1b2c16e23bfa1d907883b715ccdd9e92ddec56
revision
07421f95ced357e0d7e184353e65821748478235
Whose fault: not assigned · resolved

Safety: Review signals: 4 download and execute, 1 encoded execution, 136 hardcoded secret, 51 known vulnerability. 23 static matches retained as context.

Review signals: 4 download and execute, 1 encoded execution, 136 hardcoded secret, 51 known vulnerability. 23 static matches retained as context.

Source contains download and execute; review its purpose. 4 distinct locations. 4 findings.

Source contains encoded execution; review its purpose. lib/deps/python/capabilities.js

Gitleaks found a possible hardcoded secret; value withheld. 3 distinct locations. 136 findings.

OSV reports a known vulnerability in this dependency version. 4 distinct locations. 51 findings.

16 download and execute matches retained as context; full list in the evidence.

3 encoded execution matches retained as context; full list in the evidence.

4 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
  • Penthera is an open-source cyber security agent: Real input produced the expected result: Penthera scan_repo on .: 6 findings (3 high, 1 medium, 2 info).

    Source: The security review you never had time for. Offline, rule-based, and you can verify every finding yourself.

    Input: {"tool": "scan_repo", "arguments": {"path": "<guest-path>"}}

    Expected: Penthera scan_repo on .: 6 findings (3 high, 1 medium, 2 info).

    Command: node bin/penthera.js mcp --offline --root <guest-path> tools/call {"tool": "scan_repo", "arguments": {"path": "<guest-path>"}}

    Observed: Penthera scan_repo on .: 6 findings (3 high, 1 medium, 2 info).\n- [high, confirmed] Hardcoded password in source (tests/detection-hardening.test.js:54); explain with rule \"secrets\"\n- [high, confirmed] Generic API key assignment in source (tests/fixtures/fix/express/server.js:11); explain with rule \"secrets\"\n- [high, confirmed] JWT secret assignment in source (tests/fixtures/fix/next/app/api/login/route.ts:3); explain with rule \"secrets\"\n- [medium, needs-human-review] Node.js 22 in use: check whether it is affected by 2 advisories (.nvmrc); explain with rule \"runtime-advisory\"\nA cl

Examples

  • Run the documented repository scan through MCP: command completed successfully

    Source: docs/commands/mcp.md The tools

    Input: scan_repo on repository root

    Expected: findings and coverage

    Command: node bin/penthera.js mcp --offline --root <guest-path>

    Observed: penthera mcp 2.0.0: stdio, roots <guest-path>, offline

Local or hosted: local

What the agent did

Offline repository security scan with Penthera MCP scan_repo

pwd && ls -la && sed -n '1,240p' README.md && python3 --version && id -u
node --version; npm --version; rg -n '^## |^### |penthera mcp|tools/list|scan|--json|--format|init' README.md docs/commands/mcp.md docs/commands/scan.md package.json | head -160; cat .nvmrc; cat package.json
sed -n '1,240p' docs/commands/mcp.md; sed -n '1,220p' docs/commands/scan.md; rg -n 'MCP|mcp|security headers|grade|offline' README.md | head -60; ls -la .coldpass
npm ci
mkdir -p .coldpass
cat > .coldpass/probe.json <<'EOF'
{"kind":"mcp","argv":["node","bin/penthera.js","mcp","--offline","--root","<guest-path>"],"cwd":"<guest-path>","tool":"scan_repo","arguments":{"path":"<guest-path>"},"expected_text":"coverage"}
EOF
cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"scan_repo reports security findings with coverage information","source":"Secrets, code-execution sinks, API routes, runtime version pins in a project folder, plus a coverage ledger of what ran and what was skipped","input":"<guest-path>","expected":"coverage ledger","probe_kind":"mcp","argv":["node","bin/penthera.js","mcp","--offline","--root","<guest-path>"],"tool":"scan_repo","arguments":{"path":"<guest-path>"},"expected_text":"coverage","cwd":"<guest-path>"}]
EOF
cat > .coldpass/examples.json <<'EOF'
[{"kind":"example","claim":"Run the documented repository scan through MCP","source":"docs/commands/mcp.md The tools","input":"scan_repo <guest-path>","expected":"structured findings and coverage","argv":["node","bin/penthera.js","mcp","--offline","--root","<guest-path>"],"cwd":"<guest-path>"}]
EOF
cat > .coldpass/cycles.json <<'EOF'
{"detected":false,"reason":"Inspected README and command entry points; Penthera is invoked on demand for scans and does not document a product scheduler or recurring cycle.","checks":[]}
EOF
printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"coldpass","version":"1"}}}' '{"jsonrpc":"2.0","method":"notifications/initialized"}' '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"scan_repo","arguments":{"path":"<guest-path>"}}}' | node bin/penthera.js mcp --offline --root <guest-path>
cat > .coldpass/probe.json <<'EOF'
{"kind":"mcp","argv":["node","bin/penthera.js","mcp","--offline","--root","<guest-path>"],"cwd":"<guest-path>","tool":"scan_repo","arguments":{"path":"<guest-path>"},"expected_text":"Penthera scan_repo on .: 6 findings (3 high, 1 medium, 2 info)."}
EOF
cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"scan_repo reports secrets, code-execution sinks, API routes, runtime pins, plus coverage of ran and skipped checks","source":"Secrets, code-execution sinks, API routes, runtime version pins in a project folder, plus a coverage ledger of what ran and what was skipped","input":"<guest-path>","expected":"6 findings and coverage details","probe_kind":"mcp","argv":["node","bin/penthera.js","mcp","--offline","--root","<guest-path>"],"tool":"scan_repo","arguments":{"path":"<guest-path>"},"expected_text":"Penthera scan_repo on .: 6 findings (3 high, 1 medium, 2 info).","cwd":"<guest-path>"}]
EOF
cat > .coldpass/examples.json <<'EOF'
[{"kind":"example","claim":"Run the documented repository scan through MCP","source":"docs/commands/mcp.md The tools","input":"scan_repo on repository root","expected":"findings and coverage","argv":["node","bin/penthera.js","mcp","--offline","--root","<guest-path>"],"cwd":"<guest-path>","expected_text":"Penthera scan_repo on .: 6 findings (3 high, 1 medium, 2 info)."}]
EOF
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay
cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"Penthera MCP has six read-only tools","source":"**In your coding agent, as an MCP server.** Six read-only tools for Claude Code, Cursor, Codex, VS Code and Windsurf, new in 1.9.0.","input":"scan_repo <guest-path>","expected":"6 findings with coverage data","probe_kind":"mcp","argv":["node","bin/penthera.js","mcp","--offline","--root","<guest-path>"],"tool":"scan_repo","arguments":{"path":"<guest-path>"},"expected_text":"Penthera scan_repo on .: 6 findings (3 high, 1 medium, 2 info).","cwd":"<guest-path>"}]
EOF
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay
cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"Penthera is an open-source cyber security agent","source":"The security review you never had time for. Offline, rule-based, and you can verify every finding yourself.","input":"<guest-path>","expected":"Penthera scan_repo on .: 6 findings (3 high, 1 medium, 2 info).","probe_kind":"mcp","argv":["node","bin/penthera.js","mcp","--offline","--root","<guest-path>"],"tool":"scan_repo","arguments":{"path":"<guest-path>"},"expected_text":"Penthera scan_repo on .: 6 findings (3 high, 1 medium, 2 info).","cwd":"<guest-path>"}]
EOF
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay
cat > .coldpass/report.json <<'EOF'
{"outcome":"working","fault_owner":null,"operation":"Offline repository security scan with Penthera MCP scan_repo","operation_scope":"Node.js 22.23.4, dependencies installed with npm ci; scans the repository root","steps":["Read README and MCP command documentation","Confirmed Node.js 22.23.4 satisfies the README requirement of Node.js 22 or later","Ran npm ci successfully","Started the documented MCP server and called scan_repo on <guest-path>","Validated and replayed .coldpass/probe.json, claims.json, examples.json, and cycles.json successfully"],"deviations":[],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":null}
EOF