A capability is an abstract representation of a specific function or privilege that a system, component, or user can perform. Instead of granting unrestricted access, a capability isolates a single right and can be passed, revoked, or combined with other capabilities to define complex permission sets. In technical terms, a capability is often expressed as a token a data structure that contains a reference to the resource and the operations permitted on it. The token is typically unforgeable, meaning that only the entity that created the token can verify its authenticity. This model ties a capability directly to an object reference. If a process holds a reference to an object, it automatically has the rights encapsulated by that reference. Languages such as Capabilities are selfcontained tokens, often signed with a private key. Web APIs using JSON Web Tokens (JWT) for authorization represent a familiar example. Each subject (user or process) maintains a list of capabilities. The operating system checks this list each time an operation is requested. Traditional Unix file permissions can be seen as a simplified caplist. Hardware support, such as CHERI (Capability Hardware Enhanced RISC Instructions), embeds capabilities into pointers, preventing outofbounds memory accesses. The token is signed with the issuers private key. When Each microservice receives a capability token that authorises only the exact APIs it must call. This prevents a compromised service from abusing broader permissions. Devices are provisioned with capabilities limiting them to their own telemetry endpoints. If a device is stolen, revoking its shortlived capability disables remote access. Cloud storage providers issue perfile capabilities. A user can share a single download link (the capability) without exposing the underlying bucket permissions. Capabilitybased OS kernels, such as seL4, assign each process a set of capabilities that define its memory and I/O access, dramatically reducing the attack surface. Because a capability grants access, leaking it is equivalent to leaking a password. Use transportlevel encryption, store tokens in secure enclaves, and apply short expiration times. Stateless tokens (e.g., JWT) are hard to revoke. Mitigate by: Very finegrained capabilities increase storage and verification overhead. Balance by grouping operations that are always needed together. When multiple platforms interact, agree on a common token format (e.g., JWT with a shared public key) and define a clear schema for the Log every capability validation event, including the subject, resource, action, and outcome. This visibility is essential for detecting abuse.Understanding the Capabilities System
What Is a Capability?
Core Principles
Common Models of Capability Systems
1. ObjectCapability Model
E and Capn Proto adopt this approach.2. TokenBased Capability Model
3. Capability Lists (CapLists)
4. Capability-Based Memory Protection
Implementation Steps
read, write, configure).{ "iss": "auth.example.com", "sub": "serviceA", "aud": "api.example.com", "exp": 1735689600, "cap": { "resource": "orders", "actions": ["read", "list"] }} serviceA calls the orders API, the server verifies the signature and checks that the requested action is present in cap.actions.RealWorld Use Cases
Microservices Architecture
IoT Device Management
Secure File Storage
Operating System Isolation
Challenges & Best Practices
Token Leakage
Revocation Complexity
Granularity vs. Performance
Interoperability
cap claim.Auditing
