Skip to content

XMTP error code glossary

This document lists all error codes defined in LibXMTP, the core library underlying the XMTP SDKs. Each error code is a unique identifier returned to help diagnose issues.

38 error types across 10 crates with 403 total error codes.

bindings/mobile/src/lib.rs

Error CodeDescription
GenericError::GenericGeneric error. Unclassified error with string message. May be retryable.
GenericError::FailedToConvertToU32Failed to convert to u32. Numeric conversion failed. Not retryable.
GenericError::JoinErrorJoin error. Tokio task join failed. Not retryable.
GenericError::IoErrorI/O error. File or network I/O failed. May be retryable.
GenericError::LogLog error. Error initializing debug log file. Not retryable.
GenericError::ExpiredTimer expired. Operation timed out. Retryable.
GenericError::BackendBuilderBackend configuration failed. This error is not retryable.
GenericError::LevelLog Level failed to parse because it was invalid

bindings/node/src/client/backend.rs

Backend configuration failed. This error is not retryable.

Error code: BackendBuilderError

bindings/wasm/src/client/backend.rs

Backend configuration failed. This error is not retryable.

Error code: BackendBuilderError

bindings/wasm/src/content_types/mod.rs

Error type for content type conversion failures in WASM bindings.

Provides structured error codes via ErrorCode derive, ensuring all content type errors are prefixed with [ContentTypeError::Variant] when surfaced to JavaScript.

Error CodeDescription
ContentTypeError::InvalidDataInvalid data. Content type data failed validation. Not retryable.
ContentTypeError::TimestampOutOfRangeTimestamp out of range. Timestamp value is outside the representable range. Not retryable.
ContentTypeError::CodecCodec error. Content type codec encoding or decoding failed. Not retryable.
ContentTypeError::CryptoCrypto error. Cryptographic operation for content type failed. Not retryable.

crates/xmtp_api/src/lib.rs

Error CodeDescription
ApiError::ApiAPI client error. API operation error (network, deserialization, or other). May be retryable.
ApiError::IdentityUpdateConflictThe backend rejected a stale identity update. Not retryable here.
ApiError::EnvelopeTooLargeOne envelope exceeds the configured byte limit. Not retryable.
ApiError::UnitTooLargeOne atomic publish unit exceeds a request limit. Not retryable.
ApiError::ResponseTooLargeA single-topic response still exceeds a backend limit. Not retryable.
ApiError::InvalidRequestThe request has invalid input. Not retryable.
ApiError::InvalidResponseA response does not match the request. Not retryable.
ApiError::InvalidEnvelopeThe payload cannot be parsed. Not retryable.
ApiError::EnvelopeA returned backend envelope cannot be decoded. Not retryable.
ApiError::ProtoConversionProto conversion error. Protobuf conversion failed. Not retryable.

crates/xmtp_api_grpc/src/error.rs

Error CodeDescription
GrpcBuilderError::MissingAppVersionMissing app version. App version not set on builder. Not retryable.
GrpcBuilderError::MissingLibxmtpVersionMissing LibXMTP version. Core library version not set. Not retryable.
GrpcBuilderError::MissingHostUrlMissing host URL. Host URL not set on builder. Not retryable.
GrpcBuilderError::MetadataMetadata error. Invalid gRPC metadata value. Not retryable.
GrpcBuilderError::InvalidUriInvalid URI. URI is malformed. Not retryable.
GrpcBuilderError::UrlURL parse error. URL string is malformed. Not retryable.
GrpcBuilderError::TransportTransport error. gRPC transport creation failed (native only). Not retryable.

crates/xmtp_api_grpc/src/error.rs

Error CodeDescription
GrpcError::InvalidUriInvalid URI. URI for channel creation is malformed. Not retryable.
GrpcError::MetadataMetadata error. Invalid gRPC metadata value. Not retryable.
GrpcError::StatusgRPC status error. Retryability depends on the gRPC status code.
GrpcError::NotFoundNot found. Requested resource not found, empty, or proto conversion failed. Not retryable.
GrpcError::UnexpectedPayloadUnexpected payload. Payload not expected in response. Not retryable.
GrpcError::MissingPayloadMissing payload. Expected payload not in response. Not retryable.
GrpcError::DecodeDecode error. Protobuf decoding failed. Not retryable.
GrpcError::UnreachableUnreachable. Infallible error. Not retryable.
GrpcError::TransportTransport error. gRPC transport layer error (native only). Retryable.

crates/xmtp_db/src/encrypted_store/mod.rs

Error CodeDescription
ConnectionError::DatabaseDatabase error. Diesel database query error. May be retryable.
ConnectionError::DecodeErrorDecode error. Protobuf decode failed within DB layer. Not retryable.
ConnectionError::DisconnectInTransactionDisconnect in transaction. Cannot disconnect while transaction is active. Retryable.
ConnectionError::ReconnectInTransactionReconnect in transaction. Cannot reconnect while transaction is active. Retryable.
ConnectionError::InvalidQueryInvalid query. Invalid query parameters or configuration. Not retryable.
ConnectionError::InvalidVersionInvalid version. DB migration version mismatch — running a newer DB on older LibXMTP. Not retryable.

crates/xmtp_db/src/errors.rs

Error CodeDescription
NotFound::KeyPackageHistoryThe local key package history row no longer exists.
NotFound::GroupByWelcomeGroup with welcome ID not found. No group matches the welcome ID. Retryable.
NotFound::GroupByIdGroup with ID not found. Group does not exist in local DB. Retryable.
NotFound::InstallationTimeForGroupInstallation time for group not found. Missing installation timestamp. Retryable.
NotFound::InboxIdForAddressInbox ID for address not found. Address has no associated inbox. Retryable.
NotFound::MessageByIdMessage ID not found. Message does not exist in local DB. Retryable.
NotFound::DmByInboxDM by inbox ID not found. No DM conversation with this inbox. Retryable.
NotFound::IntentForToPublishIntent for ToPublish not found. Failed to transition intent from ToPublish to Published. Retryable.
NotFound::IntentForPublishIntent for Published not found. Intent with specified ID not in expected state. Retryable.
NotFound::IntentForCommittedIntent for Committed not found. Failed to transition intent from Published to Committed. Retryable.
NotFound::IntentByIdIntent by ID not found. Intent does not exist. Retryable.
NotFound::CipherSaltCipher salt not found. Database encryption salt missing. Retryable.
NotFound::SyncGroupSync group not found. No sync group for this installation. Retryable.
NotFound::KeyPackageReferenceKey package reference not found. Key package handle not in store. Retryable.
NotFound::MlsGroupMLS group not found. OpenMLS group not in local state. Retryable.
NotFound::PostQuantumPrivateKeyPost-quantum private key not found. PQ key pair not in store. Retryable.
NotFound::KeyPackageKey package not found. Key package not in store. Retryable.

crates/xmtp_db/src/encrypted_store/database/native.rs

Error CodeDescription
PlatformStorageError::PoolPool error. Database connection pool error. Retryable.
PlatformStorageError::DbConnectionDB connection error. R2D2 connection manager error (e.g. a failed on_acquire while establishing a connection). Transient — retryable.
PlatformStorageError::PoolNeedsConnectionPool needs connection. Pool must reconnect before use. Retryable.
PlatformStorageError::PoolRequiresPathPool requires path. DB pool requires a persistent file path. Not retryable.
PlatformStorageError::SqlCipherNotLoadedSQLCipher not loaded. Encryption key given but SQLCipher not available. Retryable.
PlatformStorageError::SqlCipherKeyIncorrectSQLCipher key incorrect. PRAGMA key or salt has wrong value. Not retryable.
PlatformStorageError::DatabaseLockedDatabase locked. Database file is locked by another process. Retryable.
PlatformStorageError::DieselResultDiesel result error. Database query error. May be retryable.
PlatformStorageError::NotFoundNot found. Record not found in storage. Not retryable.
PlatformStorageError::IoI/O error. File system I/O error. Retryable.
PlatformStorageError::FromHexHex decode error. Failed to decode hex string. Not retryable.
PlatformStorageError::DieselConnectDiesel connection error. Failed to establish connection. Retryable.
PlatformStorageError::BoxedBoxed error. Wrapped dynamic error. Not retryable.

crates/xmtp_db/src/encrypted_store/database/wasm.rs

Error CodeDescription
PlatformStorageError::SAHOPFS error. Origin Private File System (OPFS) error. Retryable.
PlatformStorageError::ConnectionConnection error. Diesel connection error. Retryable.
PlatformStorageError::DieselResultDiesel result error. Database query error. Retryable.
PlatformStorageError::DisconnectedThe persistent connection was closed. Reconnect before using it.
PlatformStorageError::ReplacedThe file was restored or deleted. This object cannot reconnect.
PlatformStorageError::DatabaseInUseA target connection is still open or has an active query.
PlatformStorageError::RestoreDestinationExistsWhole-database import does not replace an existing OPFS file.
PlatformStorageError::InvalidRestoreInputThe restore input is not a complete SQLite database.
PlatformStorageError::InitializationThe OPFS utility could not be initialized.

crates/xmtp_db/src/sql_key_store.rs

Errors thrown by the key store. General error type for Mls Storage Trait

Error CodeDescription
SqlKeyStoreError::UnsupportedValueTypeBytesUnsupported value type. Key store does not allow storing serialized values. Not retryable.
SqlKeyStoreError::UnsupportedMethodUnsupported method. PSK operations not supported by this key store. Not retryable.
SqlKeyStoreError::SerializationErrorSerialization error. Failed to serialize value for key store. Not retryable.
SqlKeyStoreError::NotFoundValue not found. Requested key not in OpenMLS key store. Not retryable.
SqlKeyStoreError::StorageDatabase error. Underlying Diesel database error. May be retryable.
SqlKeyStoreError::ConnectionConnection error. Database connection error. Retryable.

crates/xmtp_db/src/errors.rs

Error CodeDescription
StorageError::PreTransitionDatabaseThe database was created before the backend transition. Not retryable.
StorageError::OldStreamDatabaseThe database uses the previous self-hosted stream format.
StorageError::DieselConnectDiesel connection error. Failed to connect to SQLite. Retryable.
StorageError::DieselResultDiesel result error. Database query returned an error. May be retryable.
StorageError::MigrationErrorMigration error. Database migration failed. Not retryable.
StorageError::NotFoundNot found. Requested record does not exist. Not retryable.
StorageError::DuplicateDuplicate item. Attempted to insert a duplicate record. Not retryable.
StorageError::OpenMlsStorageOpenMLS storage error. OpenMLS key store operation failed. Not retryable.
StorageError::DbDeserializeDB deserialization failed. Failed to deserialize data from database. Not retryable.
StorageError::DbSerializeDB serialization failed. Failed to serialize data for database. Not retryable.
StorageError::BuilderBuilder error. Required fields missing from stored type. Not retryable.
StorageError::PlatformPlatform storage error. Platform-specific storage error. May be retryable.
StorageError::ProstProtobuf decode error. Failed to decode protobuf from database. Not retryable.
StorageError::ConversionConversion error. Proto conversion failed. Not retryable.
StorageError::ConnectionConnection error. Database connection error. Retryable.
StorageError::InvalidHmacLengthInvalid HMAC length. HMAC key must be 42 bytes. Not retryable.
StorageError::GroupIntentGroup intent error. Group intent processing failed. May be retryable.

crates/xmtp_db/src/encrypted_store/stream_storage.rs

Stable storage failures that preserve receipt, processing, and delivery invariants.

Error CodeDescription
StreamStorageError::InvalidBatchThe batch does not have valid, strictly increasing envelope IDs.
StreamStorageError::MissingPrefixThe source omitted a prefix not yet stored in this database.
StreamStorageError::UninitializedNetworkProgressExisting progress was not written by ordered admission.
StreamStorageError::CapacityPending work exceeds its row or byte budget. Retry after processing drains it.
StreamStorageError::HeadChangedAnother processor changed the pending head. Reload state before retrying.
StreamStorageError::StaleJoinAnchorInstalling this welcome would rewind or replace processed state.
StreamStorageError::AlreadyActiveAnother default consumer holds an unexpired lease.
StreamStorageError::NotCurrentOwnerThe lease expired or a new consumer acquired ownership.
StreamStorageError::ForeignCursorThe cursor was issued before restore or by another database.
StreamStorageError::DeliveryExhaustedThe persistent local message counter cannot allocate another number.
StreamStorageError::LocalReadCapacityThe next retained message exceeds the local read byte limit. Not retryable.
StreamStorageError::InvalidDeliveryPositionThe cursor is ahead of local history or the lease interval is empty.

crates/xmtp_id/src/associations/signature.rs

Error CodeDescription
AccountIdError::InvalidChainIdInvalid chain ID. Chain ID is not a valid u64. Not retryable.
AccountIdError::MissingEip155PrefixMissing EIP-155 prefix. Chain ID is not prefixed with eip155:. Not retryable.

crates/xmtp_id/src/associations/association_log.rs

Error CodeDescription
AssociationError::GenericGeneric association error. Unclassified association error. Not retryable.
AssociationError::MultipleCreateMultiple create operations. Duplicate inbox creation detected. Not retryable.
AssociationError::NotCreatedXID not yet created. Operating on inbox that doesn’t exist yet. Not retryable.
AssociationError::MemberNotAllowedMember not allowed. Member kind cannot add the specified kind. Not retryable.
AssociationError::MissingExistingMemberMissing existing member. Required signer not found or signer identity mismatch. Not retryable.
AssociationError::LegacySignatureReuseLegacy signature reuse. Legacy delegated signature used in disallowed context. Not retryable.
AssociationError::NewMemberIdSignatureMismatchNew member ID signature mismatch. Signer doesn’t match new member identifier. Not retryable.
AssociationError::WrongInboxIdWrong Inbox ID. Incorrect inbox_id in association. Not retryable.
AssociationError::SignatureNotAllowedSignature not allowed. Signature type not permitted for this role. Not retryable.
AssociationError::ReplayReplay detected. Replayed identity update detected. Not retryable.
AssociationError::MissingIdentityUpdateMissing identity update. Required identity update not provided. Not retryable.
AssociationError::ChainIdMismatchChain ID mismatch. Smart contract wallet chain ID changed. Not retryable.
AssociationError::InvalidAccountAddressInvalid account address. Address is not 42-char hex starting with 0x. Not retryable.
AssociationError::NotIdentifierNot an identifier. Value is not a valid public identifier. Not retryable.

crates/xmtp_id/src/associations/serialization.rs

Error CodeDescription
DeserializationError::MissingActionMissing action. Identity action not present in update. Not retryable.
DeserializationError::MissingUpdateMissing update. Identity update not present. Not retryable.
DeserializationError::MissingMemberIdentifierMissing member identifier. Member identifier field empty. Not retryable.
DeserializationError::SignatureMissing signature. Signature field not present. Not retryable.
DeserializationError::MissingMemberMissing member. Member field not present. Not retryable.
DeserializationError::DecodeDecode error. Protobuf decoding failed. Not retryable.
DeserializationError::InvalidAccountIdInvalid account ID. CAIP-10 account ID is malformed. Not retryable.
DeserializationError::InvalidPasskeyInvalid passkey. Passkey data is malformed. Not retryable.
DeserializationError::InvalidHashInvalid hash. Hash must be 32 bytes. Not retryable.
DeserializationError::UnspecifiedUnspecified value. An unrecognized or unsupported value was encountered. Not retryable.
DeserializationError::DeprecatedDeprecated field. A deprecated field was used. Not retryable.
DeserializationError::Ed25519Ed25519 key error. Failed to create public key from bytes. Not retryable.
DeserializationError::BincodeUnable to deserialize. Bincode deserialization failed. Not retryable.

crates/xmtp_id/src/key_package/verified_key_package_v2.rs

Error CodeDescription
KeyPackageVerificationError::TlsErrorTLS codec error. MLS TLS encoding/decoding failed. Not retryable.
KeyPackageVerificationError::MlsValidationMLS validation error. Key package verification failed. Not retryable.
KeyPackageVerificationError::WrongCredentialTypeWrong credential type. Unexpected MLS credential type. Not retryable.

crates/xmtp_id/src/associations/signature.rs

Error CodeDescription
SignatureError::MalformedLegacyKeyMalformed legacy key. Legacy key format is invalid. Not retryable.
SignatureError::Ed25519ErrorEd25519 signature failed. Ed25519 signature verification failed. Not retryable.
SignatureError::TryFromSliceErrorSlice conversion error. Byte slice conversion failed. Not retryable.
SignatureError::InvalidSignature validation failed. Signature did not verify. Not retryable.
SignatureError::UrlParseErrorURL parse error. URL parsing failed. Not retryable.
SignatureError::DecodeErrorDecode error. Protobuf decoding failed. Not retryable.
SignatureError::SignerSigner error. Cryptographic signer operation failed. Not retryable.
SignatureError::InvalidPublicKeyInvalid public key. Public key is not valid. Not retryable.
SignatureError::InvalidClientDataInvalid client data. Client data is malformed. Not retryable.
SignatureError::SignerErrorAlloy signer error. Ethereum signer failed. Not retryable.
SignatureError::SignatureAlloy signature error. Ethereum signature parsing failed. Not retryable.

crates/xmtp_id/src/associations/builder.rs

Error CodeDescription
SignatureRequestError::UnknownSignerUnknown signer. Signer not recognized for this request. Not retryable.
SignatureRequestError::MissingSignerMissing signer. Required signature was not provided. Not retryable.
SignatureRequestError::BlockNumberUnable to get block number. Block number not returned after successful SCW verification. May be retryable.
SignatureRequestError::ChainNotAcceptedThe deployment does not accept this chain. The smart contract wallet signature names a chain outside the list the backend published (CFG-069, CFG-070). Not retryable.

crates/xmtp_id/src/scw_verifier/mod.rs

Error CodeDescription
VerifierError::UnexpectedERC6492ResultUnexpected ERC-6492 result. Smart contract wallet signature verification returned unexpected result. Not retryable.
VerifierError::ProviderProvider error. Ethereum RPC provider error. Retryable.
VerifierError::UrlURL parse error. Verifier URL is malformed. Not retryable.
VerifierError::IoI/O error. I/O operation failed. May be retryable.
VerifierError::SerdeSerialization error. JSON serialization/deserialization failed. Not retryable.
VerifierError::MalformedEipUrlMalformed chain ID. Chain ID string lacks expected eip155: prefix. Not retryable.
VerifierError::NoVerifierNo verifier. Verifier not configured for the given chain ID. Retryable.
VerifierError::InvalidHashInvalid hash. Hash has invalid length or format. Not retryable.
VerifierError::OtherOther error. Unclassified verifier error. May be retryable.

crates/xmtp_mls/src/subscriptions/barrier.rs

Error CodeDescription
BarrierError::IncompleteProcessing did not meet the fixed targets. Pending work remains durable. May be retryable.

crates/xmtp_mls/src/subscriptions/catch_up.rs

Error CodeDescription
CatchUpError::IncompleteFixed targets remain unfinished. Partial committed progress is retained. May be retryable.

crates/xmtp_mls/src/builder.rs

Error CodeDescription
ClientBuilderError::MissingParameterMissing parameter. Required builder parameter not provided. Not retryable.
ClientBuilderError::ClientErrorClient error. Client operation failed during build. May be retryable.
ClientBuilderError::StorageErrorStorage error. Storage initialization failed. Not retryable.
ClientBuilderError::IdentityIdentity error. Identity creation/loading failed. Not retryable.
ClientBuilderError::WrappedApiErrorAPI error. API client initialization failed. Retryable.
ClientBuilderError::GroupErrorGroup error. Group operation failed during build. Not retryable.
ClientBuilderError::DeviceSyncDevice sync error. Device sync setup failed. Not retryable.
ClientBuilderError::OfflineBuildFailedOffline build failed. Builder tried to access the network in offline mode. Not retryable.

crates/xmtp_mls/src/client.rs

Error CodeDescription
ClientError::PublishErrorCould not publish. Failed to publish messages to the network. May be retryable.
ClientError::StorageStorage error. Database operation failed. May be retryable.
ClientError::ApiAPI error. Network request to XMTP backend failed. Retryable.
ClientError::IdentityIdentity error. Problem with identity operations. Not retryable.
ClientError::TlsErrorTLS Codec error. Encoding/decoding MLS TLS structures failed. Not retryable.
ClientError::KeyPackageVerificationKey package verification failed. Invalid key package received from network. Not retryable.
ClientError::StreamInconsistencyStream inconsistency. Message stream state became inconsistent. Not retryable.
ClientError::AssociationAssociation error. Identity association operation failed. Not retryable.
ClientError::SignatureValidationSignature validation error. A signature failed verification. Not retryable.
ClientError::IdentityUpdateIdentity update error. Failed to process identity update. Not retryable.
ClientError::SignatureRequestSignature request error. Failed to create/process signature request. Not retryable.
ClientError::GroupGroup error. Group operation failed. May be retryable.
ClientError::LocalEventLocal event error. Failed to process local event. Not retryable.
ClientError::DbDatabase connection error. Connection to database failed. Retryable.
ClientError::GenericGeneric error. Unclassified error. May be retryable.
ClientError::MlsStoreMLS store error. OpenMLS key store operation failed. Not retryable.
ClientError::EnrichMessageMessage enrichment error. Failed to enrich message content. Not retryable.
ClientError::ConversionConversion Error Data type failed to convert. Not retryable.
ClientError::RegistrationNotVisibleRegistration not visible. Registration has no publish cursor or is not visible before the timeout. Not retryable.
ClientError::AlreadyClosedClient is closed. Operation was attempted on a client that has been shut down via Client::close. Not retryable — build a new client instead.
ClientError::ConfigurationUnavailableServer configuration unavailable. The backend did not serve its configuration, or the answer could not be stored. A backend older than spec 006 answers UNIMPLEMENTED; there is no compatibility shim. Retryable exactly when the wrapped failure is: an unreachable backend is worth another attempt, UNIMPLEMENTED is not.
ClientError::ConfigurationInvalidServer configuration invalid. The backend published a configuration this client cannot use: a missing or malformed identifier, a minimum version that does not parse, or a chain that is not a CAIP-2 identifier. Not retryable.
ClientError::BackendMismatchBackend mismatch. This database is bound to one backend deployment and a different one answered. Not retryable — use a database created for the backend this app now points at.
ClientError::ClientVersionTooOldClient version too old. The backend requires a newer libxmtp than this build. Not retryable — ship an updated client.
ClientError::AuthRequiredAuthentication required. The backend requires a credential and none was configured. Not retryable — supply an auth callback or handle before building.
ClientError::ChainNotAcceptedChain not accepted. The backend does not verify smart contract wallet signatures on this chain. Not retryable — use a chain the deployment accepts.

crates/xmtp_mls/src/worker/device_sync/mod.rs

Error CodeDescription
DeviceSyncError::IOI/O error. File system or network I/O failed. May be retryable.
DeviceSyncError::SerdeSerialization error. JSON serialization/deserialization failed. Retryable.
DeviceSyncError::AesGcmAES-GCM encryption error. Encryption/decryption of sync payload failed. Retryable.
DeviceSyncError::ConversionType conversion error. Internal type conversion failed. Retryable.
DeviceSyncError::UTF8UTF-8 error. String is not valid UTF-8. Retryable.
DeviceSyncError::InvalidPayloadInvalid payload. Sync message payload is malformed. Retryable.
DeviceSyncError::UnspecifiedDeviceSyncKindUnspecified sync kind. Device sync kind not specified. Not retryable.
DeviceSyncError::BincodeBincode error. Binary serialization failed. Retryable.
DeviceSyncError::ArchiveArchive error. Sync archive operation failed. Retryable.
DeviceSyncError::DecodeDecode error. Protobuf decoding failed. Retryable.
DeviceSyncError::MissingSyncGroupMissing sync group. Sync group not found. Not retryable.
DeviceSyncError::SyncSync summary. Sync completed with errors. May be retryable.
DeviceSyncError::MlsStoreMLS store error. OpenMLS key store operation failed. Retryable.
DeviceSyncError::RecvReceive error. Channel receive failed. Retryable.
DeviceSyncError::MissingFieldMissing field. Required field not present. Retryable.

crates/xmtp_mls/src/messages/enrichment.rs

Error CodeDescription
EnrichMessageError::CodecErrorCodec decode error. Content type codec failed. Not retryable.
EnrichMessageError::DecodeErrorDecode error. Protobuf decoding failed. Not retryable.

crates/xmtp_mls/src/groups/error.rs

Error CodeDescription
GroupError::UserLimitExceededMax user limit exceeded. Attempted to add too many members. Not retryable.
GroupError::MissingSequenceIdSequence ID not found. No sequence ID for an inbox after an identity-update refresh — its registration hasn’t propagated yet. Retryable.
GroupError::AddressNotFoundAddresses not found. Specified addresses have no XMTP identity. Not retryable.
GroupError::WrappedApiAPI error. Network request failed. Retryable.
GroupError::InvalidGroupMembershipInvalid group membership. Group membership state is invalid. Not retryable.
GroupError::LeaveCantProcessedLeave cannot be processed. Group leave validation failed. Not retryable.
GroupError::StorageStorage error. Database operation failed. May be retryable.
GroupError::IntentIntent error. Failed to process group intent. Not retryable.
GroupError::CreateMessageCreate message error. MLS message creation failed. Not retryable.
GroupError::TlsErrorTLS codec error. MLS TLS encoding/decoding failed. Not retryable.
GroupError::UpdateGroupMembershipUpdate group membership error. Failed to update group membership. May be retryable.
GroupError::GroupCreateGroup create error. MLS group creation failed. May be retryable.
GroupError::SelfUpdateSelf update error. MLS self-update operation failed. May be retryable.
GroupError::WelcomeErrorWelcome error. Processing MLS welcome message failed. May be retryable.
GroupError::InvalidExtensionInvalid extension. MLS extension validation failed. Not retryable.
GroupError::SignatureInvalid signature. MLS signature verification failed. Not retryable.
GroupError::ClientClient error. Client operation failed within group. May be retryable.
GroupError::ReceiveErrorReceive error. Processing received group message failed. May be retryable.
GroupError::AddressValidationAddress validation error. An address/identifier is invalid. Not retryable.
GroupError::LocalEventLocal event error. Failed to process local event. Not retryable.
GroupError::InvalidPublicKeysInvalid public keys. Keys are not valid Ed25519 public keys. Not retryable.
GroupError::CommitValidationCommit validation error. MLS commit validation failed. May be retryable.
GroupError::IdentityIdentity error. Identity operation failed. Not retryable.
GroupError::ConversionErrorConversion error. Proto conversion failed. Not retryable.
GroupError::CryptoErrorCrypto error. Cryptographic operation failed. Not retryable.
GroupError::CreateGroupContextExtProposalErrorGroup context proposal error. Failed to create group context extension proposal. May be retryable.
GroupError::ProposeAddMemberPropose add member error. Failed to create an add-member proposal. May be retryable.
GroupError::ProposeRemoveMemberPropose remove member error. Failed to create a remove-member proposal. May be retryable.
GroupError::ProposalProposal error. Generic MLS proposal creation/handling failure. May be retryable.
GroupError::CommitToPendingProposalsCommit to pending proposals error. Failed to commit pending proposals into an MLS commit. May be retryable.
GroupError::MergePendingCommitMerge pending commit error. Failed to merge a pending commit into local state. May be retryable.
GroupError::ProposalsNotSupportedProposals not supported. Encountered a proposal when our client does not support proposals. Not retryable.
GroupError::MinVersionExceedsOwnVersionCaller asked to set MIN_SUPPORTED_PROTOCOL_VERSION to a value the caller’s own client does not satisfy. Refusing prevents the caller from immediately pausing themselves (and every peer at or below their version) the moment the bump lands. Not retryable.
GroupError::MinVersionDowngradeCaller asked to lower MIN_SUPPORTED_PROTOCOL_VERSION below the floor already on the group. Monotonic-only: a downgrade would silently unpause peers between the old and new floors, defeating the gate. Not retryable.
GroupError::InvalidMinVersionCaller passed a min_version string that doesn’t parse as semver. Surfaces from the send-side paths (enable_proposals, update_group_min_version) so SDK consumers can match-handle malformed input without parsing string-flattened wrappers. Not retryable.
GroupError::ComponentSourceComponent source error. Failed to encode, decode, or look up a well-known component during the AppDataUpdate path. Not retryable.
GroupError::AppDataCommitAppData commit error. Failed to build or stage a commit that bundles an inline AppDataUpdate proposal. Wraps the structured GroupAppDataError from stage_app_data_propose_and_commit so the underlying OpenMLS create/stage failure is preserved instead of being string-flattened.
GroupError::BootstrapSynthesisBootstrap synthesis failure — sender-side couldn’t build the complete set of initial component values for the migration commit. Includes identity-update lookup failures. Conditionally retryable: delegates to the wrapped [super::app_data::migration::BootstrapSynthesisError], which retries only when an inner identity-update API error is itself retryable. Decode/registry-shape failures are deterministic and not retryable.
GroupError::BootstrapCommitBootstrap commit-build failure. Not retryable: every variant of [super::app_data::migration::BootstrapCommitError] is a deterministic OpenMLS commit failure, a TLS codec error, or a caller-side precondition violation.
GroupError::CredentialErrorCredential error. MLS credential validation failed. Not retryable.
GroupError::LeafNodeErrorLeaf node error. MLS leaf node operation failed. Not retryable.
GroupError::InstallationDiffInstallation diff error. Installation diff computation failed. May be retryable.
GroupError::NoPSKSupportNo PSK support. Pre-shared keys are not supported. Not retryable.
GroupError::SqlKeyStoreSQL key store error. OpenMLS key store operation failed. May be retryable.
GroupError::SyncFailedToWaitSync failed to wait. Waiting for intent sync failed. Retryable.
GroupError::PublishedButUnconfirmedThe exact published attempt remains pending. A later call can confirm it. Retryable.
GroupError::MissingPendingCommitMissing pending commit. Expected pending commit not found. Not retryable.
GroupError::ProcessIntentProcess intent error. Failed to process group intent. May be retryable.
GroupError::LockUnavailableFailed to load lock. Concurrency lock acquisition failed. Retryable.
GroupError::TooManyCharactersExceeded max characters. Field value exceeds character limit. Not retryable.
GroupError::AppDataSupersededA guarded metadata update was abandoned because another member changed the field first. Not retryable as-is: the value was derived from state that no longer exists. Re-derive it from actual and queue a new update. Distinct from a sync failure — nothing went wrong, the write is just stale.
GroupError::GroupPausedUntilUpdateGroup paused until update. Group is paused until a newer version is available. Not retryable.
GroupError::GroupInactiveGroup is inactive. Operation on an inactive group. Not retryable.
GroupError::SyncSync summary. Sync operation completed with errors. May be retryable.
GroupError::DbDatabase connection error. Database connection failed. Retryable.
GroupError::MlsStoreMLS store error. OpenMLS key store failed. Not retryable.
GroupError::MetadataPermissionsErrorMetadata permissions error. Metadata permission check failed. Not retryable.
GroupError::FailedToVerifyInstallationsFailed to verify installations. Installation verification failed. Not retryable.
GroupError::NoWelcomesToSendNo welcomes to send. No welcome messages to send to new members. Not retryable.
GroupError::CodecErrorCodec error. Content type codec failed. Retryable.
GroupError::WrapWelcomeWrap welcome error. Failed to wrap welcome message. Not retryable.
GroupError::UnwrapWelcomeUnwrap welcome error. Failed to unwrap welcome message. Not retryable.
GroupError::WelcomeDataNotFoundWelcome data not found. Welcome data missing from topic. Not retryable.
GroupError::WelcomeGroupPrefixPendingThe old group must process its ordered prefix before this Welcome can install. Retryable.
GroupError::InvalidWelcomeMetadataThe Welcome has missing, malformed, or out-of-range join metadata. Not retryable.
GroupError::UnsupportedWelcomeVersionThe Welcome needs a newer client. Keep it blocked until upgrade. Retryable.
GroupError::UninitializedResultResult not initialized. Expected result was not initialized. Not retryable.
GroupError::DieselDiesel ORM error. Raw database query failed. May be retryable.
GroupError::UninitializedFieldUninitialized field. Builder field not initialized. Not retryable.
GroupError::DeleteMessageDelete message error. Failed to delete message. Not retryable.
GroupError::DeviceSyncDevice sync error. Device sync operation failed. May be retryable.

crates/xmtp_mls/src/groups/group_permissions.rs

Errors that can occur when working with GroupMutablePermissions.

Error CodeDescription
GroupMutablePermissionsError::SerializationSerialization error. Failed to encode permissions protobuf. Not retryable.
GroupMutablePermissionsError::DeserializationDeserialization error. Failed to decode permissions protobuf. Not retryable.
GroupMutablePermissionsError::PolicyPolicy error. Permission policy validation failed. Not retryable.
GroupMutablePermissionsError::InvalidConversationTypeInvalid conversation type. Wrong conversation type for this operation. Not retryable.
GroupMutablePermissionsError::MissingPoliciesMissing policies. Required permission policies not present. Not retryable.
GroupMutablePermissionsError::MissingExtensionMissing extension. Required MLS extension not found. Not retryable.
GroupMutablePermissionsError::InvalidPermissionPolicyOptionInvalid permission policy option. Invalid permission policy configuration. Not retryable.

crates/xmtp_mls/src/identity.rs

Error CodeDescription
IdentityError::CredentialSerializationCredential serialization error. Failed to encode MLS credential. Not retryable.
IdentityError::DecodeDecode error. Protobuf decoding failed. Not retryable.
IdentityError::InstallationIdNotFoundInstallation not found. Installation ID not found in network association state. Not retryable.
IdentityError::BasicCredentialBasic credential error. MLS basic credential validation failed. Not retryable.
IdentityError::LegacyKeyReuseLegacy key re-use. Attempted to reuse a legacy key. Not retryable.
IdentityError::UninitializedIdentityUninitialized identity. Identity not yet initialized. Not retryable.
IdentityError::InstallationKeyInstallation key error. Problem with installation key. Not retryable.
IdentityError::MalformedLegacyKeyMalformed legacy key. Legacy key format is invalid. Not retryable.
IdentityError::LegacySignatureLegacy signature error. Legacy signature is invalid. Not retryable.
IdentityError::CryptoCrypto error. Cryptographic operation failed. Not retryable.
IdentityError::LegacyKeyMismatchLegacy key mismatch. Legacy key does not match address. Not retryable.
IdentityError::OpenMlsOpenMLS error. OpenMLS library error. Not retryable.
IdentityError::KeyPackageGenerationErrorKey package generation error. Failed to generate MLS key package. Not retryable.
IdentityError::InboxIdMismatchInbox ID mismatch. Associated InboxID does not match stored value. Not retryable.
IdentityError::NoAssociatedInboxIdNo associated Inbox ID. Address has no associated InboxID. Not retryable.
IdentityError::RequiredIdentityNotFoundRequired identity not found. Identity was not found in cache. Not retryable.
IdentityError::NewIdentityNew identity creation error. Error creating a new identity. Not retryable.
IdentityError::SignerSigner error. Cryptographic signer failed. Not retryable.
IdentityError::IdentityUpdateIdentity publication failed. Retryability depends on the cause.
IdentityError::TooManyInstallationsToo many installations. InboxID has reached max installation count. Not retryable.
IdentityError::InvalidExtensionInvalid extension error. MLS extension validation failed. Not retryable.
IdentityError::MissingPostQuantumPublicKeyMissing PQ public key. Post-quantum public key not found. Not retryable.
IdentityError::BincodeBincode serialization error. Binary serialization failed. Not retryable.
IdentityError::UninitializedFieldUninitialized field. Builder field not initialized. Not retryable.

crates/xmtp_mls/src/subscriptions/local_delivery/types.rs

Error CodeDescription
LocalDeliveryError::AcknowledgementRejectedThe callback failed or its token was dropped before acknowledgement. Not retryable.
LocalDeliveryError::AcknowledgementFailedA previous acknowledgement write failed. Reopen to retry delivery. Not retryable.
LocalDeliveryError::SelectionChangedScope, filters, or retained content changed before dispatch. Reselect without acknowledgement.
LocalDeliveryError::InvalidConfigurationThe batch or timing settings cannot maintain a valid consumer lease. Not retryable.
LocalDeliveryError::ClosedThis reader has been closed. Not retryable.

crates/xmtp_mls/src/client/notifications.rs

Errors use fixed messages and never include notification credentials.

Error CodeDescription
NotificationError::TaskRunnerDisabledThe task runner is disabled. Not retryable.
NotificationError::PermissionDeniedThe recipient credential was rejected. Not retryable.
NotificationError::InvalidArgumentThe delivery configuration is invalid. Not retryable.
NotificationError::OutOfRangeA notification value is outside the allowed range. Not retryable.
NotificationError::UnimplementedThe backend does not support notifications. Not retryable.
NotificationError::ChannelNotConfiguredThe delivery channel is not configured. Not retryable.
NotificationError::ResourceExhaustedThe recipient topic limit was reached. Retry after the desired set changes.
NotificationError::RequestTimeoutThe notification request exceeded its time limit. Retryable.
NotificationError::NotFoundThe recipient must register again. Retryable.

crates/xmtp_mls/src/subscriptions/mod.rs

Error CodeDescription
SubscribeError::TransportThe shared native transport failed. May be retryable.
SubscribeError::GroupGroup error. Group operation failed during subscription. May be retryable.
SubscribeError::NotFoundNot found. Subscribed resource not found. Retryable.
SubscribeError::GroupMessageNotFoundGroup message not found. Expected message missing from database. Retryable.
SubscribeError::ReceiveGroupReceive group error. Processing streamed group message failed. May be retryable.
SubscribeError::StorageStorage error. Database operation failed. May be retryable.
SubscribeError::DecodeDecode error. Protobuf decoding failed. Not retryable.
SubscribeError::ApiClientAPI client error. Network request failed. Retryable.
SubscribeError::BoxErrorBoxed error. Wrapped dynamic error. May be retryable.
SubscribeError::DbDatabase connection error. Database connection failed. Retryable.
SubscribeError::ConversionConversion error. Proto conversion failed. Not retryable.
SubscribeError::EnvelopeEnvelope error. Invalid backend envelope. Not retryable.
SubscribeError::EnrichedEnriched Message Error.
SubscribeError::StreamStaleStream liveness watchdog tripped. No activity arrived within the idle timeout, so the stream was terminated to force a reconnect (resuming from the persisted cursor). Retryable.

crates/xmtp_mls_common/src/group_metadata.rs

Error CodeDescription
GroupMetadataError::SerializationSerialization error. Failed to encode metadata protobuf. Not retryable.
GroupMetadataError::DeserializationDeserialization error. Failed to decode metadata protobuf. Not retryable.
GroupMetadataError::InvalidConversationTypeInvalid conversation type. Protobuf conversation type not recognized. Not retryable.
GroupMetadataError::MissingExtensionMissing extension. Immutable metadata MLS extension not found. Not retryable.
GroupMetadataError::InvalidDmMembersInvalid DM members. DM member data is invalid. Not retryable.
GroupMetadataError::MissingDmMemberMissing DM member. A DM member field is not set. Not retryable.

crates/xmtp_proto/src/traits/error.rs

Error CodeDescription
ApiClientError::ClientWithEndpointThe client encountered an error.
ApiClientError::ClientThe transport failed. Retryability follows the source.
ApiClientError::HttpThe HTTP request is invalid. Not retryable.
ApiClientError::BodyThe request body is invalid. Not retryable.
ApiClientError::DecodeErrorThe response cannot be decoded. Not retryable.
ApiClientError::ConversionA protocol conversion failed. Not retryable.
ApiClientError::ProtoErrorA protocol operation failed. Not retryable.
ApiClientError::InvalidUriThe URI is invalid. Not retryable.
ApiClientError::ExpiredThe request expired. Retryable.
ApiClientError::OtherA client operation failed. Retryability follows the source.
ApiClientError::OtherUnretryableA client operation failed. Not retryable.
ApiClientError::WritesDisabledWrites are disabled. Not retryable.

crates/xmtp_proto/src/traits/error.rs

Authentication failures with no credential or callback error text.

Error CodeDescription
AuthError::CredentialRejectedThe backend rejected the credential. Retryable if a callback can run.
AuthError::CallbackFailedThe callback failed. Retryable if a callback can run.
AuthError::ExhaustedAuthentication is locked until the cool-down ends. Not retryable.
AuthError::MissingCredentialNo credential was set on the handle. Not retryable.

crates/xmtp_proto/src/error.rs

General Error types for use when converting/deserializing From/To Protos Loosely Modeled after serdes error type. This general error type avoid circular hard-dependencies on crates further up the tree (xmtp_id/xmtp_mls) if they had defined the error themselves.

Error CodeDescription
ConversionError::MissingMissing field. Required field missing during proto conversion. Not retryable.
ConversionError::UnspecifiedUnspecified field. Protobuf field is unspecified. Not retryable.
ConversionError::DeprecatedDeprecated field. A deprecated protobuf field was used. Not retryable.
ConversionError::InvalidLengthInvalid length. Data has wrong length for conversion. Not retryable.
ConversionError::InvalidValueInvalid value. Data has unexpected value. Not retryable.
ConversionError::DecodeDecode error. Protobuf decoding failed. Not retryable.
ConversionError::EncodeEncode error. Protobuf encoding failed. Not retryable.
ConversionError::UnknownEnumValueUnknown enum value. Protobuf enum has unrecognized value. Not retryable.
ConversionError::EdSignatureEd25519 signature error. Ed25519 signature bytes invalid. Not retryable.
ConversionError::InvalidPublicKeyInvalid public key. Public key validation failed. Not retryable.
ConversionError::InvalidVersionInvalid version. Protocol version not supported. Not retryable.
ConversionError::OpenMlsOpenMLS error. OpenMLS library error. Not retryable.
ConversionError::ProtocolProtocol message error. MLS protocol message error. Not retryable.
ConversionError::BuilderBuilder error. Builder field not initialized. Not retryable.
ConversionError::SliceSlice error. Byte slice conversion failed. Not retryable.

crates/xmtp_proto/src/error.rs

Error resulting from proto conversions/mutations

Error CodeDescription
ProtoError::HexHex error. Hex encoding/decoding failed. Not retryable.
ProtoError::DecodeDecode error. Protobuf decoding failed. Not retryable.
ProtoError::EncodeEncode error. Protobuf encoding failed. Not retryable.
ProtoError::OpenMlsOpenMLS error. OpenMLS library error. Not retryable.
ProtoError::MlsProtocolMessageMLS protocol message error. MLS framing error. Not retryable.
ProtoError::KeyPackageKey package error. Key package verification failed. Not retryable.
ProtoError::NotFoundNot found. Proto resource not found. Not retryable.