WHEN IT FAILS
Errors
Every named revert becomes a typed error with a sentence about what to do next.
Scope and expiry are checked locally, before a request is sent, so a call the grant cannot make never hits the node. Everything below extends InterludeError. Catch that if you want one branch; catch the named class if you want a specific sentence on screen.
- SessionExpiredError
- The grant's hour ran out. Call openSession again. The user signs a new message.
- SelectorOutOfSessionScopeError
- The call is not in the grant's scope, or the app reached it through this.other(), which changes msg.sig. Widen the scope or stop hopping.
- SessionEpochStaleError
- The user revoked, or the node's pinned block predates the revocation. The message says which. Open a new session in the first case; wait for the node to catch up in the second.
- WrongSessionKeyError
- The grant was presented by a key it does not name. The stored grant and the key that signed the wrapper drifted. Open a new session.
- SessionNotSignedByGranterError
- Usually a grant signed for another app or another chain id. Check that base is Monad and that app is the address the user saw.
- PrivilegedSelectorError
- No grant reaches the delegation controls or the hub callbacks. Those stay on the owner wallet, on Monad.
- DelegatedWritesDisabledError
- The write went to Monad instead of the node. The base chain refuses it on purpose. Point the call at the node URL.
- AppRevertError
- Your own rule, with its error name and decoded arguments. Treat it like any other contract revert.
- NodeUnreachableError
- The node did not answer. The message names the url. The rest of the page is fine; the process is down.
