Skip to content
Conduit

skill

penthera

Lightweight website/app cyber security scanner:: run it from your AI agent (Cursor/Claude Code) or the CLI. Black-box + white-box, OWASP-mapped, SARIF-ready. Authorized testing only.

danoszz/pentheracommunitylistedunreviewed

Set up

Skills are installed by placing their folder where your agent loads skills.

The download comes from github.com/danoszz/penthera itself, not from our server, so what you get is exactly what its author published.

Install instructions come from the README

Skills do not use an MCP config. Follow the steps in the README below.

README

synced Oct 17, 2026

npm node license CI OpenSSF Scorecard


Open-source security for the apps and AI systems you ship.

Check it before you deploy. Vet what you build with. Keep watching after you ship. On your own machine, offline, and free.


Try it in 60 seconds

No install, no account. Each step runs on your machine and sends nothing to us.

npx penthera agents --home          # 1. audit your Claude Code, Cursor and MCP setup
npx penthera deps                   # 2. what can the packages in this project actually do?
npx penthera http://localhost:3000  # 3. scan the app you are about to ship

Then read who it is for, or let your coding agent drive it with the Agent Skill.

The problem

Teams now ship apps and AI agents faster than anyone can secure them. AI writes much of the code. AI pulls in the packages, MCP servers, and skills. And on most teams nobody does security full time. Attackers have noticed: 2025 and 2026 brought self-spreading npm worms that hijacked AI coding tools, malicious MCP servers, poisoned agent skills, and leaked AI provider keys running up large bills.

Commercial platforms answer this from the cloud, for a fee, often with an AI deciding what is malicious. Penthera answers it on your machine, for free, with rules you can read. Think of it as the open-source security team for teams that don't have one.

What it does for you

The jobWhat Penthera doesCommand
Before you deployTest the appScan your localhost or preview URL (TLS, headers, CORS, auth, JWT, IDOR, OAuth, OpenAPI, opt-in injection and fuzzing) and your repo (routes, trust boundaries, secrets including AI keys)penthera <url> --repo .
Fix and verifyDeterministic fixes on a local branch, re-scanned to prove they worked, remembered so the next run is sharper. Never pushespenthera agent --loop
Block it at commit timeSecrets, risky agent config, and dependency changes stopped before they are committedpenthera hook install
What you build withVet dependenciesWhat every npm and Python package can actually do (install scripts, shell, network, env, obfuscation), what an upgrade added, lookalike names, licensespenthera deps --base main
Guard installsShows what a new package brings before any install script runs, and stops it under your policypenthera install <pkg>
Review pull requestsComments the dependency capability diff on every PR that touches the lockfileGitHub Action
Audit your AI toolingSkills, MCP servers, hooks, plugins, and rule files: hidden instructions, unpinned servers, over-broad permissions, silent updatespenthera agents --home
After you shipReport and proveReports for developers, owners, and auditors; a hashed, signable evidence bundle; NIS2 and CRA readiness and report draftspenthera <url> --audience auditor --evidence out/
Keep watchingScheduled checks of your own production for drift: certificates, headers, new endpoints, keys in bundles, new CVEs in your SBOMon the roadmap

What it is not: a human pentester, a 24/7 SOC, or incident response. It does the repeatable checks so the people you do have can spend their time on judgement.

Who it is for

You areStart here
A solo founder or vibecoder about to launchBefore launch
A team adopting Claude Code or CursorThe AI-tooling supply chain
An open-source maintainerFor maintainers
An EU SME with NIS2 or CRA dutiesEvidence for NIS2 and the CRA
An agency shipping client appsA repeatable handover check

Why you can trust it

  • Local and offline. No account, no telemetry, no cloud. --offline limits network traffic to the target you named, and every report lists the hosts that were contacted.
  • Deterministic, not an AI verdict. Rules you can read, with file:line evidence and a confidence label on every finding. No model decides what is malicious.
  • Never acts behind your back. The fix loop works on a local branch, asks before every change by default, and never pushes or opens pull requests.
  • No update channel to hijack. Detection rules ship inside reviewed releases. Nothing is downloaded and executed at run time.
  • Releases you can verify. Published with npm provenance through trusted publishing, and each version is approved by a maintainer with 2FA before it goes live. SHA-pinned CI, CodeQL, and OpenSSF Scorecard.
  • Measured and cited. A published methodology, 48 verified references, and a reproducible benchmark with precision and recall.

By the numbers

Penthera has no customer logos yet. Here is what can be checked instead.

Benchmark, labelled local targetsprecision 0.86, recall 0.90 (19 true positives, 3 false positives, 2 misses; every one listed)
Detection rules, all readable14 URL scan templates, 20 secret and AI-key patterns, 15 dependency capabilities, 39 AI-tooling audit rules, 5 fix recipes
Tests687 in the suite, run on Node 22 and 24 on every push
Release gatean internal audit of 8 gates (tests, benchmark drift, self-scan, CLI smoke, packaging, offline egress, supply chain, docs links); latest report
Researcha methodology backed by 48 cited references
Supply chain of Penthera itselfOpenSSF Scorecard, SHA-pinned CI, CodeQL, npm provenance, each release staged and approved with 2FA
Network calls in --offline modeonly the target you named; the benchmark run made 0 requests to non-loopback hosts

Counts as of 2026-10-19. Refresh them with npm run docs:numbers (add -- --tests to count tests), npm run bench and npm run audit:internal. The benchmark targets are small and written by the same people as the scanner, so they catch regressions rather than measure real-world accuracy; see its limits.


How Penthera fits with other tools

Penthera is meant to sit next to the tools you already use. Its SARIF output goes straight into GitHub code scanning, for example. Each comparison page says where the other tool goes further and how to run the two together.

FocusWhere it runsHow it decides
PentheraYour app, your dependencies, your AI tooling, fixes, EU evidenceYour machine or CI, offlineReadable deterministic rules, with evidence
SocketSupply-chain risk across package registriesCloud service, GitHub App, CLIRegistry-scale package analysis, including AI review
SnykKnown vulnerabilities in dependencies, code, containers, IaCCloud service, IDE, CLICurated vulnerability database plus static analysis
GitHub Dependabot and code scanningKnown-CVE alerts, update PRs, CodeQLGitHubAdvisory database, CodeQL queries
OWASP ZAPDynamic testing of web appsYour machine or CIActive and passive scan rules
SemgrepStatic analysis of your own codeYour machine, CI, cloud platformPattern rules, plus a paid cross-file engine

All comparisons: docs/compare/. Corrections are welcome by pull request.


Run it

As an Agent Skill (recommended). Let Claude Code, Cursor or 40+ other agents drive it, then ask "scan my app for security issues", "is this package safe to add?", or "audit my MCP servers":

npx skills add danoszz/penthera

As a CLI. npx penthera https://your-app.example, or install it with the one-line installer, which also links the skill into Cursor and Claude Code:

curl -fsSL https://raw.githubusercontent.com/danoszz/penthera/main/install.sh | bash

Run penthera with no arguments for a guided wizard. Other install routes (Claude Code plugin, Claude.ai upload, per-project copy) are in docs/commands/skill.md.

The skill adds an authorization gate: it instructs your agent to refuse targets you do not own or are not authorized to test.

What you get

  Findings

  HIGH  IDOR/BOLA: GET /api/users/{user_id}
         http://localhost:3000/api/users/1 → 200
  HIGH  OAuth open redirect
         http://localhost:3000/api/oauth/callback?redirect_uri=... → 302
  MED   Missing Content-Security-Policy
  MED   No login rate limiting detected
         http://localhost:3000/api/login → 401
  LOW   Missing X-Frame-Options
  INFO  Missing Referrer-Policy

  ──────────────────────────────────────────────────────────
  2 high · 5 medium · 2 low · 2 info

Every finding carries a confidence label (confirmed, likely, potential, needs-human-review), so a heuristic never poses as a certainty. Reports come out as Markdown, JSON, and SARIF, with the fixes in priority order.

Commands

CommandWhat it doesDetails
penthera <url> [--repo .]Black-box and white-box scan; --profile quick|standard|deepscan.md
penthera agents [--home] [--pin]Audit skills, MCP servers, hooks, permissions, plugins, rule files; graded A to Fagents.md
penthera deps [--base main]Capabilities of every npm and Python package, upgrade diff, typosquats, --license-policydeps.md
penthera install <pkg>Install firewall: review before any install script runsinstall.md
penthera fix --plan, penthera agent --loopDeterministic fixes as diffs; the local scan, fix, verify, learn loopfix.md
penthera hook installPre-commit hook on staged changes, about 0.1 to 0.5 shook.md
uses: danoszz/penthera@<sha>PR comment with the capability diff, plus SARIFaction.md
penthera --machinemacOS checks (persistence, keyloggers, rootkits)scan.md

Scans, agents and deps write Markdown, JSON and SARIF (--markdown, --json, --sarif). Exit code 1 means critical or high findings, 2 means the scan failed.

How it works

flowchart LR
    U["You / your AI agent"] --> P((Penthera))

    P --> APP["Your app<br/>black-box URL scan<br/>white-box repo scan"]
    P --> DEP["Your dependencies<br/>capabilities, upgrade diff<br/>install firewall, typosquats"]
    P --> AI["Your AI tooling<br/>skills, MCP, hooks<br/>plugins, rule files"]

    APP --> F[["Findings<br/>severity, confidence<br/>evidence, sources"]]
    DEP --> F
    AI --> F

    F --> FIX["Fix loop<br/>local branch, re-scan<br/>learn, never push"]
    FIX -.verified.-> F
    F --> R["Reports<br/>terminal, Markdown, JSON<br/>SARIF, audience views"]
    F --> E["Evidence<br/>hashed, signable bundle<br/>NIS2 readiness"]

Findings map to the OWASP Web Security Testing Guide (WSTG v4.2), and agent findings to the OWASP MCP and Agentic Top 10s. The default scan is non-destructive. Payload-based testing is opt-in (--deep, --fuzz, --all) and gated behind explicit confirmation.


Compliance: NIS2 and the CRA

Shipping in the EU? NIS2 (the Cyberbeveiligingswet in the Netherlands, the NIS2-wet in Belgium) puts a duty of care on in-scope organisations, and the Cyber Resilience Act adds reporting duties for products with digital elements. Penthera turns the technical, testable part into repeatable evidence: an Article 21(2) coverage table (--framework nis2), a readiness report, policy templates, incident and CRA Article 14 report drafts with deadlines, a CycloneDX SBOM and AI-BOM, and prefilled customer questionnaires. Offline, no accounts. Guides: NIS2 and CRA.

Readiness tooling, not a certification and not legal advice.


Ethical use & authorization

Penthera sends HTTP requests to the targets you give it. Some modes (--deep, --fuzz, --all) send attack payloads designed to find vulnerabilities. Use it responsibly.

You may use Penthera when:

  • You own the target (your app, your server, your project).
  • You have written authorization from the system owner (email, ticket, signed scope).
  • You scan localhost or private lab environments you control.
  • You use it for defensive security: research, coursework, CI hardening, pre-release audits.

You must not use Penthera to:

  • Scan systems you do not own or lack explicit permission to test.
  • Probe government, healthcare, financial, or third-party production systems without authorization.
  • Exfiltrate data, disrupt services, or bypass access controls.
  • Use findings to attack, extort, or harm anyone.

Before scanning any URL that is not localhost, confirm you have permission. When in doubt, do not scan.

Unauthorized security testing may violate computer-misuse laws (for example the US CFAA, the UK Computer Misuse Act, and EU national equivalents) and can result in criminal prosecution, civil liability, IP blocking, account termination, and academic or professional penalties.


Install

Requirements: Node.js 22+ and npm. To install from source:

git clone https://github.com/danoszz/penthera.git
cd penthera && npm install && npm link   # exposes `penthera` globally

Or in a container: docker build -t penthera . && docker run --rm penthera https://your-app.example.

Testing and contributing

npm test                 # full suite (live integration tests skip without a running target)
npm run pentest:mock     # offline tests against a local mock vuln API
npm run bench            # precision and recall on labelled local targets

How Penthera decides what is a finding, how sure it is, and what it cannot see is in docs/METHODOLOGY.md, with every design choice tied to a reference. See CONTRIBUTING.md for the project layout and release checklist, and the roadmap for what is next. To cite Penthera, use the "Cite this repository" button on GitHub (CITATION.cff).

Status

App scanning (URL, repo, macOS machine), dependency capability analysis and an install firewall, the AI-tooling audit, the local fix loop with a learning store, audience reports and evidence bundles, the PR-comment GitHub Action, the pre-commit hook, and NIS2 and CRA readiness tooling are all shipped. See the CHANGELOG for the history. Issues and PRs welcome.


Support Penthera

Penthera is free and MIT-licensed. If it caught something before you shipped it, you can help keep it maintained:

Sponsor on GitHub

TierMonthlyYou get
Individual$5Thanks, and your name on the GitHub sponsors list
Supporter$25A mention in the next release notes
Startup$100Your name and link in this README
Company$500Your logo in this README, and a quarterly roadmap call

Sponsorship pays for maintainer time: keeping detection rules current, security fixes, and the roadmap. It does not buy influence over findings, a support SLA, or early access to vulnerability reports, and a logo here is not a security endorsement of that company. Details in docs/funding/sponsor-tiers.md.


Privacy

Penthera has no telemetry and does not phone home. Scan traffic goes to the target you name, reports stay on your machine, and every scan lists any third-party host it contacted. With --offline the HTTP client refuses every host except the target. Which hosts a normal scan may contact, and why, is in docs/privacy.md.


Disclaimer

Penthera is provided for legitimate security research and defensive testing of systems you own or are authorized to test, and for that purpose only.

  • It is a research and self-assessment tool. Scan your own apps to find and fix weaknesses before attackers do.
  • The same capabilities that harden a system can cause harm if pointed at someone else's. Use it carefully and lawfully.
  • The author does not condone unauthorized or malicious use, and accepts no liability for any damage, loss, or legal consequence arising from use or misuse of this software.
  • The software is provided "as is", without warranty of any kind. See LICENSE (MIT).
  • You are solely responsible for ensuring every scan you run is authorized and legal in your jurisdiction.

By using Penthera you accept these terms.


License & disclosure

MIT. See LICENSE. Report vulnerabilities in Penthera itself via SECURITY.md. Only scan systems you own or are authorized to test.

↑↓ navigate openesc close