The seven-type grant taxonomy.
What users grant, what providers store, where the source of truth lives, and why "give the agent access to my data" hides seven different operations.
"Grant the agent access to my data" is the most common framing in agent-authorization conversations. It is also the most misleading. The same English sentence can authorize a one-shot query, a cached working copy, a permanent mirror, a write-back stream, ongoing bidirectional sync, an autonomous action, or all of the above bundled. Each has different storage obligations, different audit surfaces, and different revocation semantics. SLF distinguishes seven types, each with its own evaluation rules and receipt semantics. Walking the seven is the work of this page.
The seven types
A · CatalogFor each type below: the verbatim definition from the architecture (§ 7.2), what the recipient is permitted to do, what they get to store, where the single source of truth (SSOT) lives, and a short illustrative example from a domain other than healthcare.
One implementation note up front: of the seven types, Read is the one implemented end to end in the slf-core v0 reference implementation, where its grant-to-scoped-read-to-receipt round trip runs green under the conformance suite. The other six are specified here and deferred to later versions. The taxonomy is the design surface; the build has started at the simplest type and works outward.
Read
Read-and-cache
valid_until timestamp. May be used locally, not disclosed onward without a separate grant.
SSOTWith the user's substrate. The cache is derived; expiry triggers a refresh against the live substrate.
Copy
Write-back
Sync
Action
allowed_frames.
StoresAction grants do not authorize storage of user data. They authorize actions. The provider logs every action taken, with frame and outcome forming the audit trail.
SSOTThe outcome (appointment confirmation, application receipt) is generated by the provider and may be pushed back via Write-back. The grant itself, the user's signed authorization, is the SSOT for whether the action was permitted.
Compound
grant_types: ["Copy","Write-back","Sync"] would let a provider store, update, and remain synchronized in one relationship.
StoresWhatever the component types authorize, with the most permissive retention rules among them governing each fact.
SSOTWhatever the component types' SSOT rules require, user's substrate remains canonical for any fact that flows back.
Source-of-truth discipline
B · SSOTThe architecture's Principle #12 reads: "The user is always the source of truth." Three operational disciplines preserve this across the grant types that allow retained working copies:
- Working copies are not new substrates. A provider's Copy is a derived view, carrying provenance back to the user's substrate as its source. It is not a fork; it is a mirror.
- Write-back is structural, not optional. When a provider generates new facts about the user, those facts must flow back to the user's substrate as signed assertions. The user's substrate is how the user stays current.
- Reconciliation is append-only with provenance. If the user's substrate and a provider's copy diverge, both versions coexist in the user's substrate, signed and attributed. Reconciliation flows toward the user's substrate.
One limit to state plainly: SSOT discipline is encouraged and detectable, not enforced. Like the gate-enforcement model, SSOT for cross-party deployments operates at the T3 (accountable-only) tier: the protocol cannot reach into a provider's storage to prevent the provider from treating their copy as canonical. At T0 (sovereign vault), the user is the only holder-of-record and SSOT is self-enforcing. What the protocol guarantees at T3 is that violations are detectable: every operation produces a Receipt SLF; the user can inspect what was disclosed; the rating system catches repeat offenders. A provider that silently treats their copy as authoritative will be caught in audit, not prevented from doing so in the first place.
Open tensions
C · Pressure-test surface"The taxonomy is right because the healthcare example shows it works."
Healthcare is explicitly not the v0 wedge (architecture § 7.5 calls the example illustrative-only; the v0 wedge is personal knowledge, Patina and Grip). Regulated domains make the type distinctions easiest to motivate, but they are also where the user has the strongest extrinsic reasons to grant carefully. The real test of the taxonomy is whether the seven types are still load-bearing in personal-knowledge sovereignty, where users grant for convenience, not compliance. That test has not run yet.
"Sync handles bidirectional updates cleanly."
When two agents both hold Sync grants on the same facts and they update concurrently, the protocol does not specify who wins. The architecture (§ 7.3) defers resolution to the lens and app layer: divergent writes coexist as signed, attributed facts in the user's substrate, and the lens surfaces the most current or most trusted version depending on context. Worst case is two facts coexisting in substrate until the user reconciles, analogous to merging duplicate contacts on a phone. But for high-stakes domains (financial, medical), "the user reconciles later" is a load-bearing app-layer responsibility the spec does not own.
"Read-and-cache is meaningfully different from Copy at the protocol level."
The intended difference is retention obligation: Copy is permanent for the grant lifetime; Read-and-cache is TTL-bounded and discardable after expiry. Operationally, without active enforcement, a provider can claim Read-and-cache while behaving like Copy (never discarding). The protocol's defense is that receipts detect this: the same data being served on subsequent reads without a fresh query is visible in receipt patterns. Detectable bad behavior may be sufficient for some regulatory regimes; GDPR's right-to-erasure may demand more than detection.
"Action grants are revocable like any other grant."
If an agent is mid-action when the user revokes the Action grant, what happens? The spec lists "Inter-agent communication and HITL friction" as an open question (§ 11) but does not directly answer mid-action revocation. Worst case: a financial transfer initiates under a valid grant, the user revokes the grant before the counter-party confirms, the action either completes (under a now-revoked grant) or aborts (with the counter-party in an inconsistent state). For high-stakes actions this needs explicit completion gates, which draft-00 of the OAuth composition spec touches on but does not formalize.
"Compound grants are convenient for real-world relationships."
A Compound grant bundling Copy, Write-back, Sync, and Action under one "Authorize" button is convenient and almost certainly under-consented. Users do not read permission cascades. The spec specifies that Compound grants are possible; it does not specify how users are asked to consent to them. The UX work belongs in Phase 3 product design; for now, naming Compound's consent risk is the responsible step.
"Seven types cover every grant operation."
There is no Delete grant type. Deletion is structurally not something an agent does under a user grant; it is something the user does to their own facts via Retraction SLFs (signed superseding facts), or via revocation (ending ongoing access to the provider's copy). The protocol's pragmatic stance is that the provider's working copies are governed by revocation (end access) plus compliance obligation (which may legally require retention) plus downstream legal process (GDPR Article 17 data-subject requests). The taxonomy facilitates the request; compliance is downstream.
What this page does not claim
D · Overclaims to avoid- Healthcare is not the wedge. Healthcare examples are illustrative for the taxonomy because the distinctions are easiest to motivate there. The v0 wedge is personal knowledge sovereignty. If the taxonomy doesn't hold up in that wedge, the taxonomy needs to change, not the wedge.
- The seven types do not cover every operation. Delete sits outside the taxonomy entirely; Compound may need sub-typing as it is exercised by real relationships; inter-agent Action grants are flagged as an open question.
- The protocol does not enforce SSOT discipline. It encourages SSOT through structural patterns (Write-back-by-default, signed provenance) and makes violations detectable through receipts. Enforcement is post-hoc and reputational, not pre-emptive.
- The taxonomy does not solve consent management. It provides a vocabulary. How users are asked to consent to a Compound grant in a way that meaningfully informs them is a UX problem the spec does not address.
- Sync is not solved. Conflict resolution is app-level; the protocol allows divergence. For high-stakes domains, the app layer carries load-bearing responsibility the spec does not own.
If you read this with a data-privacy, regulated-domain, or sovereign-personal-data lens and a type is missing, a tension is underplayed, or the multi-domain examples don't pressure-test the right thing, that is the feedback the draft needs. The taxonomy is at the stage where every distinction is up for revision. Contact details are in the header above.
← All SPA / SLF deep-dives