Skip to main content
Crosslink uses a capability-based permission model. Capabilities are declared by the host, granted during pairing, and enforced at the RPC layer.

How capabilities work

Declaring capabilities

Hosts declare capabilities when creating the server:

Capability fields

Binding capabilities to RPC methods

Requesting capabilities

Clients specify which capabilities they need:
If the host has not granted these capabilities, the RPC calls will fail with CAPABILITY_DENIED.

Risk levels

Pairing approval

The host’s pairing.approve callback receives the full request:

Enforcing capabilities

Crosslink automatically enforces capabilities:
You can also check explicitly:

Capability TTLs

Capabilities can have time limits:
After the TTL expires, the capability is no longer granted.

Revoking capabilities

Hosts can revoke capabilities at runtime:

Security notes

  • Capabilities are a transport-layer primitive, not a full authorization framework
  • A compromised client with a valid capability token can abuse it
  • Implement rate limiting and abuse detection at the application layer
  • Review capability requests carefully during pairing