Error Classes
JwtExpiredError
Thrown by execute() when the OAuth JWT has expired and the session is not yet registered on-chain. The user must re-authenticate.
JWTs from Google/Apple typically expire after 1 hour. Once the session key is registered on-chain (first transaction), subsequent transactions use the session key directly — no JWT needed until the session itself expires.
Authentication Errors
OAuth Login Cancelled or Blocked
Nonce Mismatch
Happens if session state was corrupted between the OAuth redirect and the callback:Session Errors
Session Not Registered
Thrown whenexecute() is called with gasless: false before any on-chain session exists:
Session Expired (Beyond Grace Period)
Session Expired (Within Grace Period)
The SDK handles this automatically —execute() will call renewSession() internally before proceeding. You don’t need to handle this case explicitly.
Wallet Not Initialized
Transaction Errors
Session Policy Violation
Paymaster Error
Insufficient Balance (User-Pays)
Contract / Entrypoint Not Found
Wallet Errors
Account Not Deployed
Address Seed Mismatch
Happens when the identity (sub) or app salt doesn’t match what the wallet was created with:
MAU Limit Exceeded
Network Errors
RPC Timeout or Rate Limit
Debugging
Enable Logging
Inspect Wallet State
Error Recovery Reference
| Error | Cause | Recovery |
|---|---|---|
JwtExpiredError | OAuth JWT expired before session was registered | Re-login via login() |
SESSION_EXPIRED | Session expired past 48h grace window | Re-login via login() |
non-sponsored transaction without a registered session | gasless: false before first tx | Execute a sponsored tx first |
Spending limit exceeded | Transaction exceeds session policy limit | Check spendingLimits in policy |
Address seed mismatch | Identity/salt mismatch | Logout and re-login |
MAU limit | App exceeded monthly users | Upgrade plan or wait for reset |
paymaster / gas tank | Paymaster temporarily unavailable | Retry, or use gasless: false |
not initialized | execute() called before login() | Call login() first |
timeout | RPC timeout | Retry, or configure a custom RPC URL |

