Do not ask for secrets
Never ask users for private keys, seed phrases, admin tokens, CDP secrets, raw payment headers, wallet recovery material, or screenshots that expose those values.
First response
- Check
/health,/ready, and/status.json. - Run
pnpm monitor:mainnet --baseUrl https://primitive402.dev. - Run discovery and unpaid x402 matrix checks if safe.
- Check private admin metrics only with a securely loaded
ADMIN_METRICS_TOKEN. - Preserve request id, route, response status, timestamp, tx hash, payer wallet if available, network, asset, and settlement status.
Common incidents
- CDP/facilitator outage: verify unpaid metadata, check facilitator auth/settlement status, rotate CDP keys if exposed, and consider
X402_ENABLED=falseif paid traffic is unsafe. - Paid route errors: identify route-specific versus global failures, compare safe local route behavior, preserve settlement and request evidence, and prepare support review for settled non-2xx outcomes.
- Duplicate payment or billing issue: ask for transaction hash, approximate timestamp, route, response status, and request id when available; never ask for wallet secrets.
- Unsafe URL or SSRF false positive: preserve route, request id, target domain hash when available, response status, and SSRF error code.
- Rate-limit spike: compare
rateLimitedCallswithbotProbeCallsand confirm whether real paid users are affected.
Rollback triggers
/readyremains critical./status.jsonor x402 metadata shows wrong network, asset,payTo, or resource URL.- CDP/facilitator auth, verification, or settlement fails repeatedly.
PAYMENT-RESPONSEis missing after paid2xxresponses.- Paid route errors rise after a deploy.
- CDP keys, admin token, payment headers, private keys, or seed phrases are exposed.
Set X402_ENABLED=false when paid traffic must stop quickly because payment settlement, facilitator auth, route execution, or reconciliation is unsafe.
Repository docs
Markdown source: docs/ops/mainnet-incident-response.md.