Capabilities ยท updated November 12, 2026
Every check, its mechanism, and how to verify it.
| Capability | Mechanism | How to verify |
|---|---|---|
| Address discovery | Certificate transparency names from crt.sh (Cert Spotter as fallback), plus DNS over HTTPS lookups of common host labels. | Compare the report's address list with crt.sh/?q=%25.yourdomain.com. |
| Free scan | Certificate transparency names and DNS answers only, read from public sources (crt.sh, Cert Spotter, Cloudflare's DNS over HTTPS resolver). | Your access logs show no Paxen traffic from a free scan. |
| Full scan (owned domains) | One GET per address to /, then the paths below; redirects recorded and never followed; user agent PaxenSecurity/0.1. | Your access log shows the requests from that user agent. |
| Ownership proof | A random 128-bit token in a TXT record at _paxen.<domain>, paired with a private claim key held by the person who claimed the domain; the record is published within 24 hours of the claim and re-checked before every daily run. | dig TXT _paxen.yourdomain.com. |
| Exposed files | GET of /.env, /.git/config, /.git/HEAD on verified domains; flagged when a non-HTML body answers. | Request the same paths yourself. |
| Open data routes | Routes found in your own page and scripts plus a list of common API paths; a JSON answer with sensitive field names is ranked higher when sibling routes answer 401 or 403. | The report names the route; request it with no cookie. |
| Keys in plain view | 13 pattern families (Stripe live keys, AWS key ids, GitHub, Slack, OpenAI, Anthropic, Twilio API keys, Zapier, Slack and Discord webhooks, private key blocks, database addresses with passwords) matched in pages, same-origin scripts and route answers. The report records the pattern name and location. | Search the named page or script for the pattern. |
| Second addresses | With the Cloudflare connector, every Worker with a workers.dev address beside a custom domain. | workers_dev in the Worker's settings. |
| Credential-forwarding callbacks | On verified domains where the owner switches the test on, one form POST per known callback route with a Paxen canary address in the URL fields providers send. A canary hit means the route fetches a stranger's address; a hit with an Authorization header means it attaches a credential. The canary records only the header's scheme and length. | Your logs show one POST from the Paxen user agent; the report names the route. |
| Take it off the internet | From a finding, one click puts the address behind Cloudflare Access, turns its workers.dev address off, or removes the DNS record, using a write permission asked for at that moment; every change keeps an undo. | The Cloudflare audit log shows the change under the Paxen connector, and the address stops answering. |
| Keys in repos and CI | With the GitHub connector, the same pattern families matched in repository files, history and CI settings, reported by pattern name and location. | The report names the file and line; the value is never stored. |
| Key liveness and scope | A read-only call to the issuing provider tells whether a found key still works and what it can do. | The provider's own key page shows the same scope and last-used time. |
| Guided rotation | A new key minted at the provider, stored in 1Password, Doppler or Cloudflare secrets, the consuming app updated, then the old key revoked, in one step. | The vault item's history and the provider's key list. |
| Pinned supply chain | Pull requests that pin each GitHub Action to a commit, each container image to a digest and each MCP server to a version; lockfile and osv-scanner checks on every project. | The pull request diff in your repository. |
| Campaign and contributor watch | Published supply-chain advisories matched to your repositories' dependencies within the hour; new admins and pull requests from unknown accounts flagged from GitHub audit events. | The advisory link and the audit event in each finding. |
| AI agent inventory | Agents, assistants, scheduled tasks and MCP connectors read from Google Workspace grants, GitHub Apps, Slack apps and MCP configs in your repositories, each with what it can read, send, pay and delete. | Each entry links to the grant it was read from. |
| Agent guardrails | Least-privilege tokens with an expiry, a plain log of each agent action and the permission used, and content from email, web and chat marked as data before an agent takes an outward action. | The action log in the app. |
| Weekly code review | Semgrep, CodeQL and osv-scanner plus a frontier model reading sign-in, webhook and file-parser paths; fix pull requests written by one model family and reviewed by another. | The review note and both model families named on each pull request. |
| Morning report and evidence pack | A morning email of what is new, what closed and what to do today; patch speed in days from an advisory's publish date to the fixing commit; a weekly attacker briefing; a PDF evidence pack built from the current state. | Every number in the pack links to the finding or commit behind it. |
| API and MCP server | The paxen.fix_first MCP tool and GET /v1/fix-first return the ranked list with one action and one owner per line, under a per-company key. | Call it with your key and compare with the app. |
| Ranking | Fix today, Fix this week, Tidy up, Good practice, by what a stranger reaches and what it unlocks. A model on our own hardware sorts routine findings; GPT and Gemini rank and cross-check each daily list. | Each report line carries its group and the one action. |
| Daily rerun | Verified domains rescan every day at 6:17am Eastern, after the ownership record is checked again. | A new report appears each morning. |
| Real-bug controls | The engine is tested against the pre-fix and fixed code of two real bugs, run locally: both found before the fix, neither after. | engine/control.py exits 0 only when all four verdicts hold. |
Requirements
A domain you control in DNS. Runs in any modern browser; reports are web pages you can forward.