LatchDog

LatchDog check for CI and AI coding agents

A free, zero-dependency Node script (Node 18+). Run it after a deploy and it checks your live app. On findings it prints each one with a fix prompt you can paste into your AI tool, and it exits non-zero so your build or agent knows to stop.

Run it

curl -fsSL https://latchdog.com/latchdog-check.mjs -o latchdog-check.mjs
node latchdog-check.mjs --url https://yourapp.com

Options: --fail-on critical|high|medium|low|never (default high), --json for machine-readable output, --strict to fail when LatchDog can't be reached (by default that's only a warning, so an outage on our side never blocks your deploy).

Exit codes: 0 passed, 1 findings at or above --fail-on, 2 usage error, 3 with --strict, when LatchDog is unreachable, rate-limited, or couldn't finish the scan.

GitHub Actions

- name: LatchDog check
  run: |
    curl -fsSL https://latchdog.com/latchdog-check.mjs -o latchdog-check.mjs
    node latchdog-check.mjs --url https://yourapp.com --fail-on high
  env:
    LATCHDOG_DEPLOY_HOOK: ${{ secrets.LATCHDOG_DEPLOY_HOOK }}  # optional

In GitHub Actions, findings show up as annotations on the run.

For AI coding agents

Add this to your agent's instructions (AGENTS.md, .cursorrules, CLAUDE.md or similar):

After deploying, run: node latchdog-check.mjs --url <live URL> --json
If it exits 1, fix each finding using its fixPrompt, deploy again, and re-run. Never print or commit secret keys.

What it sends and shows

It sends only the URL (or calls your deploy hook). Results show only a masked form of any key LatchDog finds, never the full key. Keep your deploy hook URL in CI secrets: anyone with it can trigger scans of your app and read their results.

JSON API

POST /api/check with {"url": "https://yourapp.com"} runs the free public check and returns the result as JSON. GET /hooks/deploy/<token>/status returns the latest scan for a deploy hook's app.

Not yet on npm or the GitHub Marketplace. For now, download it from this site as shown above.