Webhook signature-verification audit. Stripe, GitHub, Shopify, Twilio +17. Local. Deterministic.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
The only scanner laser-focused on webhook signature verification.
Local. Deterministic. Zero-network. JS/TS + Python + PHP + Go. Five minutes from npx to fix.
No traffic leaves your machine. No telemetry. No SaaS sign-up required.
π Full documentation: docs.hookwarden.dev
Every Sunday at 22:00 UTC, this repo's CI runs hookwarden against 45 popular open-source projects β currently cal.com, documenso, formbricks, twenty, plane, unkey, typebot, papermark (full target list, combined β
190k+) β to prove the scanner works on real production code.
Latest sweep β 2026-06-09 Β· 20/45 projects clean (zero critical/high)
| Provider | π¨ critical | β οΈ high | π‘ manual-review | Rules that fired |
|---|---|---|---|---|
| n8n integrations | 81 | 0 | 0 | n8n/missing-signature-verification (Γ78)n8n/raw-body-misuse (Γ3) |
| Slack integrations | 7 | 1 | 0 | slack/missing-signature-verification (Γ7)slack/verify-after-side-effect (Γ1) |
| Standard Webhooks integrations | 7 | 0 | 0 | standardwebhooks/missing-signature-verification (Γ3)standardwebhooks/raw-body-misuse (Γ4) |
| Stripe integrations | 6 | 0 | 0 | stripe/hardcoded-secret-prefix (Γ2)stripe/missing-signature-verification (Γ4) |
| GitHub integrations | 0 | 0 | 0 | β |
| Shopify integrations | 0 | 0 | 0 | β |
| Square integrations | 0 | 0 | 0 | β |
| Twilio integrations | 0 | 0 | 0 | β |
These are bugs in the webhook handlers that receive provider events β flaws in the integrating projects' integration code, not in the providers' own SDKs or services.
Coverage note: the engine couldn't parse 238 files across the corpus (broken syntax or language features the parser doesn't model). Those are scan-coverage diagnostics β not handler bugs β and are excluded from the table above.
Hookwarden checks 11 rule classes across 21 providers β most of the corpus handles webhooks correctly, hence the short list. The full rule catalog lives in the docs.
Per-target findings are never published before responsible disclosure β see methodology. To run the same scan against your own code:
Every dollar of fraud that flows through a webhook starts with a verification bug β and verification bugs hide in plain sight.
A handler that accepts an unsigned payload, compares HMACs with ==, or skips the signature check on a ?test=true path silently routes attacker traffic into your business logic. The bug is one line in a 50K-line app, and it looks plausible β not the shape general-purpose SAST tools are tuned to flag. They were built for SQL injection and prototype pollution; webhook verification falls between their default rule packs.
hookwarden does one thing. It walks your repo, parses every webhook handler across 11 frameworks, and labels each one verified, not-verified, or manual-review β with the exact file, line, and a fix quoted from provider docs. The catalog (21 named providers β Stripe, GitHub, Shopify, Slack, Twilio, Square, Sentry, Zendesk, DocuSign, PagerDuty, Notion, Auth0, HubSpot, Intercom, Linear, Zoom, Calendly, Bitbucket, Mailchimp, Postmark, plus Standard Webhooks conformant providers like Clerk, Resend, Mux) encodes signature quirks no generic scanner has the surface area to know: Stripe's 5-minute timestamp tolerance, Slack's v0:${ts}:${body} scheme, Twilio's SHA-1 outlier.
The three-state verdict is not a hedge. manual-review is what you get when hookwarden can't prove safety or unsafety from the source alone β a handler inside a middleware chain the analyzer couldn't unroll, say. It's how the false-positive rate stays honest (<5%, measured against a 200-repo OSS corpus). A tool that reports every gray area as a bug isn't a security tool; it's noise. β How the verdict works
hookwarden is a CLI, not a library β run it with
npx hookwarden scan .or install globally withnpm i -g hookwarden. (The plainnpm i hookwardenthat npm auto-suggests on the package page installs it as a local dependency, which isn't what you want for a command-line tool.)
Or install natively:
| OS | Recommended | Alternates |
|---|---|---|
| Linux | brew install Hookwarden/tap/hookwarden | npm i -g hookwarden Β· pip install hookwarden Β· direct binary |
| macOS | brew install Hookwarden/tap/hookwarden | npm i -g hookwarden Β· npx hookwarden |
| Windows | scoop bucket add hookwarden https://github.com/Hookwarden/scoop-bucket && scoop install hookwarden | npm i -g hookwarden Β· pip install hookwarden |
Node 22+ is required for the npm/npx/macOS-brew paths; the standalone binaries (Linux x64/arm64, Windows x64) bundle the runtime. Direct binary downloads are intentionally unsigned (Gatekeeper / SmartScreen will warn) β prefer brew / scoop / npm / pip, which verify by SHA-256. β Install guide
| Channel | Command |
|---|---|
| brew (macOS/Linux) | brew upgrade hookwarden |
| scoop (Windows) | scoop update hookwarden |
| npm (global) | npm i -g hookwarden@latest |
| pip | pip install -U hookwarden |
| npx (no install) | npx hookwarden@latest scan . β @latest bypasses the npx cache |
| direct binary | re-download from Releases |
Rule pack versions move with the CLI (engine, rules, and CLI ship as a fixed group β 0.7.5 everywhere). Pin in CI with npx hookwarden@0.7.5 scan . if you want byte-stable verdicts across runs.
--diff-only, --provider stripe,github (phased rollout), --include/--exclude globs, --strict-suppressions, repo-level hookwarden.config.yaml, and more: npx hookwarden --help and the CLI docs.
--history)By default scan only looks at your working tree. --history also walks the
git history β including files that were committed then deleted before HEAD β
so a secret that was force-pushed away is still found. It's off by default and
bounded to the last 1000 commits; narrow it with --since <ref|date>:
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/hookwarden-webhook-integrity)<a href="https://allmcps.com/mcp/hookwarden-webhook-integrity"><img src="https://allmcps.com/api/badge/hookwarden-webhook-integrity?style=directory" alt="Hookwarden β Webhook Integrity on AllMCPs" /></a>