> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.adid.dev/llms.txt.
> For full documentation content, see https://docs.adid.dev/llms-full.txt.

# Common Errors

| Symptom                          | Likely cause                               | Resolution                                                 |
| -------------------------------- | ------------------------------------------ | ---------------------------------------------------------- |
| OTP email never arrives          | SMTP misconfig / rate limit                | Check API logs; click **Resend code**                      |
| OAuth `invalid_redirect`         | Provider redirect URI mismatch             | Update Google/GitHub OAuth app to your callback URL        |
| DID resolve returns 404          | DID never anchored or wrong network        | Confirm RPC chain ID; redeploy if local                    |
| Credential signature invalid     | Issuer key rotated since signing           | Verifier should fetch latest DID Document                  |
| Schema mismatch on verify        | Schema version drift                       | Pin schema version in the credential and the verifier      |
| ZKP generation OOM               | Browser tab memory limit                   | Use the mobile wallet, or run snarkjs in a Web Worker      |
| `ZKProofVerifier.verify` reverts | Public signals don't match circuit         | Confirm circuit version matches verifier; regenerate proof |
| Agent delegation rejected        | Chain depth >5                             | Restructure delegation chain                               |
| MCP-I tool call denied           | IBCT expired or wrong scope                | Mint a fresh IBCT with the required capability             |
| DIDComm decryption fails         | Recipient key mismatch (post key-rotation) | Sender refresh DID Document and re-pack                    |
| RPC connection error             | Chain endpoint unreachable                 | Check `BLOCKCHAIN_RPC`                                     |
| `429 Too Many Requests`          | Rate limit hit                             | Back off — authenticated quota is 600 req/min/user         |
| JWT expired loop                 | Clock drift on client device               | Sync NTP                                                   |
| Wallet recovery stuck            | Custodian Share 3 not released             | Re-authenticate, contact recovery custodian                |
| CORS error in browser            | Origin not in allowlist                    | Add origin to `CORS_ALLOWED_ORIGINS`                       |