@rhinestone/sdk/errors. Orchestrator errors include a code, statusCode, and traceId; include the trace ID when contacting support.
scheduleRetry in your application; retryAfter is an optional string header value, so handle both delay-seconds and HTTP-date formats.
Retry only an idempotent operation. Do not resubmit a signed transaction unless you have confirmed that the previous submission was not accepted.
Account configuration errors
Catch account implementation errors with
isAccountError(error). For composite configuration and VM capability failures, use the separately exported isAccountCapabilityError guard:
Transaction and signing errors
Catch the category with
isExecutionError(error).
Prepared artifacts and proofs
Use the exportedisExecutionError guard for these diagnostics. InvalidPreparedTransactionError, UnsupportedSigningRequestError, IncompleteIntentProofsError, and MismatchedIntentProofError are thrown internally but their constructors are not exported from @rhinestone/sdk/errors in this revision. Do not import internal paths.
Persist the complete prepared object, including
request, with a serialization format that preserves bigint values. Keep returned owner contributions opaque. See Custom signing.
Funding and quote requirements
Usedestination for execution or delivery and select one funding chain/token in source. Delivery always requires a source; user-paid execution needs a fee token. Sufficiently sponsored no-delivery EVM or Solana instruction execution can omit it. Solana authority changes always omit the source and are gas-sponsored. A portfolio read does not automatically select or aggregate funding.
Inspect the selected quote’s requirements[], including approval and wrap requirements. These are disclosures, not automatic SDK actions. Resolve prerequisites explicitly and prepare again if the inputs or state change. maxAmount caps observed source balance; auxiliary funds are added after the cap.
JWT approval occurs during prepare/quote. Upgrade backend helpers and runtime schemas before clients, require sdk-3.0.0-caucasus, and authorize the applicable account.evm or account.svm entry, source, destination, and options. A bound digest is not a sponsorship policy. See Security.
API and quote errors
isRetryable(error) returns true for internal errors, upstream timeouts, unavailable relayers, and simulation failures explicitly marked retryable. Use isSponsorError, isSponsorLimitExceeded, and isInsufficientSponsorBalance to distinguish sponsorship failures. Follow sponsorship setup for balance and policy configuration.
Registry errors
These are local SDK validation errors, not Orchestrator responses.
Solana failures
Native Solana transactions use the same prepare/sign/submit/wait lifecycle. Preserve the complete prepared artifact and its ordered signing requests; do not convert it into a UserOperation or replace its proof with a signature from an Ed25519 wallet. The managed owner must be one viem secp256k1 or WebAuthn account.
Import the error constructors and
isSolanaAccountNotCreated, isSolanaAuthorityChangeRefused, isSolanaQuoteExpiredError, and isInvalidSolanaTransactionArtifactError guards from @rhinestone/sdk/errors. getAuthorityStatus only checks one authority change, not global deployment or owner readiness. Deployment returning true can also mean an existing Swig without checking your configured owner.
Authority change refusals
SolanaAuthorityChangeRefusedError exposes a typed, optional reason and role metadata. Handle unknown reasons as refusals; retain redacted issues and traceId for diagnosis.
See Solana recovery setup. Authority changes and deployments require separately authenticated sponsorship policies, not an unrestricted token-delivery policy. Network availability depends on the environment; mainnet support remains route-dependent.
EVM session key failures
See Multi-chain sessions and Restrict a session for the required shapes. Call
rhinestone.validateSession to list every refusal for a session definition at once; see Validate a definition.
EVM guardian recovery failures
Follow Recover an account for the ordering constraints.
Report a persistent failure
Capture:- the SDK version (
3.0.0for these examples) - the error class, message,
code, andtraceId - the account address and chain IDs
- the intent ID or UserOperation hash
- redacted request parameters and per-operation status