Content-scoped authorization

Radia authorizes each operation by principal, record kind and, when configured, record contents. The same model covers workers, people, delegated calls and operational access.

Enforcement at the runtime boundary

Application checks depend on every worker implementing the same policy correctly. They also run after the worker has received the data.

Radia applies authorization before a query, claim or write completes. A denied record is not returned to the worker, so model behavior cannot bypass the check.

These guarantees apply at the HTTP boundary. Code embedded inside the runtime process is inside the trust boundary and must not be treated as an untrusted participant.

Grants are records

A grant names a principal, a record kind and allowed operations. Grants are immutable records stored in the space.

the summarizer may read and claim documents
{ "principal": "agent:summarizer",
  "kind": "document",
  "operations": ["take", "query"] }

Newer records supersede or retire earlier grants. This makes permission changes observable and preserves their history after revocation.

Capability advertisements do not confer authority. A worker may publish what it handles, but only an operator or authorized supervisor can write the grant that permits the operation.

Restrict grants by record content

A grant can include a pattern over declared body paths. The following grant applies only to public documents.

now it is only the public ones
{ "principal": "agent:summarizer",
  "kind": "document",
  "operations": ["take", "query"],
  "pattern": { "classification": "public" } }

The runtime intersects the request pattern with every applicable grant. A query for finance documents under this grant returns only public finance documents.

what it may see public documents what it asked for finance documents served public and finance not asked for not allowed the answer says when a grant narrowed it, so empty is never mistaken for none exist
Query explanations report when authorization narrowed a request. A client can distinguish an empty authorized view from evidence that no records exist globally.

Pattern scopes also apply to writes. Identity scopes provide a shorthand for records authored by the same principal, allowing multiple people to share a space without sharing application records.

Agent definitions and run credentials

An operator creates an agent definition and assigns its grants. The definition token can mint short-lived run tokens but cannot perform record operations itself.

you define the agent agent:summarizer and its grants running process token, ~15 minutes running process token, ~15 minutes
Each process acts through its own renewable run token. Stopping a run invalidates that process. Revoking the definition prevents future runs.

Human sessions are ordinary principals with assigned grants. OIDC sign-in does not confer operator access; operators are configured separately.

Credential exchange

Long-running processes renew active runs. Interactive clients may be inactive when a run expires, so they retain the definition token and exchange it for a new run token when needed.

The stored definition token cannot query, write or claim records. Its only operation is minting a run. Revoking the definition ends this exchange path.

This separates a durable minting credential from a short-lived acting credential. A leaked run token is bounded by its expiry and run ceiling; a leaked definition token can be revoked.

Propagate data-handling labels

A direct grant check does not cover data copied into a derived record.

For example, a worker may read a local file and write part of it into a new result. The result needs to retain the source's handling restriction.

Records can carry the closed labels file, net and foreign. Derived records inherit the union of their parents' labels. Clients may add labels but cannot clear them.

reads a file a worker what it found labelled: from a file posts to the web allowed: nothing never sees it writes to the log allowed: from a file may take it
A claim grant lists the labels a worker accepts. Records carrying another label are excluded from its claim set.

Clearing a label requires the privileged declassify operation. Declassification creates a successor record and records who performed it.

Labels are coarse barriers, not a general information-flow type system. The set is kept small because every label expands the policy surface applications must handle.

Delegate a caller's authority

Data lineage and authority are separate. Reading or deriving from a record does not transfer the record author's permissions to the worker.

A worker normally acts through its own grants. This prevents a participant from gaining authority by naming a privileged record as an input.

A shared worker can mint a delegated run for the author of a claimed record. The delegated run contains the intersection of the worker's grants and the caller's grants and carries no operational powers. The worker uses it for operations performed on the caller's behalf.

The runtime resolves the caller through the run that created the claimed record. The worker cannot choose or assert that identity in a request body.

Delegated authority is the intersection of caller and worker grants Caller grants and worker grants overlap to produce a narrower delegated run. The claimed lease identifies the caller, while parent record links do not transfer authority. caller's grants records Alice may reach worker's grants operations the tool may perform delegated run only the overlap operation for Alice caller-scoped and tool-bounded claimed lease identifies the caller record parentage records provenance, never authority
Delegation follows the claimed lease. The delegated run can do only what both the caller and the worker are allowed to do; parent links remain evidence of derivation, not permission.

Inspect effective permissions

The permissions endpoint computes access through the same projection used for enforcement. It reports active operations and their scopes after revocations and superseding grants.

what this agent can really do, right now
$ radia permissions agent:summarizer
KIND       OPERATIONS          SCOPE
document   take, query         classification=public
summary    put                 own records only

Principals may inspect their own permissions. Inspecting another principal requires the observe power or operator status.

Separate operational powers

Operational verbs use separate powers: global observation, remediation, garbage collection, declassification and payload destruction.

Operators assign these powers through revocable ops_grant records. observe reads globally, remediate changes stuck envelope state, sweep runs garbage collection, declassify clears labels and purge destroys payloads. Writing authorization records and bypassing record grants remain restricted to named operators.

The provisioned MCP observer receives observe only. Its credential is revocable through the same agent-definition mechanism.

Security boundaries and current limits