PARSE_ERROR | parse_error | Payload was not valid UTF-8 / JSON |
INVALID_MESSAGE | invalid_message | Message failed structural validation |
VERSION_UNSUPPORTED | version_unsupported | No mutually supported protocol version |
UNAUTHORIZED | unauthorized | Signature or trust check failed |
CAPABILITY_DENIED | capability_denied | Device lacks the required capability |
METHOD_NOT_FOUND | method_not_found | RPC method doesn’t exist |
VALIDATION_FAILED | validation_failed | Input failed schema/custom validation |
PAYLOAD_TOO_LARGE | payload_too_large | Message exceeds the session frame limit |
RATE_LIMITED | rate_limited | Too many requests |
DEVICE_REVOKED | device_revoked | This device’s access was revoked |
SESSION_EXPIRED | session_expired | Handshake timestamp outside the allowed clock skew |
PAIRING_EXPIRED | pairing_expired | Pairing code/session expired |
PAIRING_INVALID | pairing_invalid | Pairing frame rejected (wrong code, cancelled, mismatched nonce) |
HOST_OFFLINE | host_offline | Host not reachable |
TIMEOUT | timeout | RPC call timed out |
CANCELLED | cancelled | Request was cancelled |
INTERNAL | internal | Unclassified internal error |
NOT_CONNECTED | not_connected | No live session to send on |
PEER_LOST | peer_lost | Transport died while a request was in flight |
GRANT_EXPIRED | grant_expired | Capability grant lapsed and must be renewed |
CONSENT_DENIED | consent_denied | Host user declined a per-use confirmation prompt |
CONSENT_TIMEOUT | consent_timeout | Host could not obtain per-use confirmation in time |
POLICY_DENIED | policy_denied | Host permission policy forbids this, independent of the grant |