Home Contact
Universal Substratev1.4
/
For agents Markdown

41. Identity, authorization, privacy, and adversarial-security runtime

The vehicle may speak in the first person, but it is not thereby a human, legal person, account holder, credential, beneficiary or source of authority. Authentication proves control of a credential by a principal. Authorization proves that a current…

Concept & directionLNK

The vehicle may speak in the first person, but it is not thereby a human, legal person, account holder, credential, beneficiary or source of authority. Authentication proves control of a credential by a principal. Authorization proves that a current principal or workload may perform one exact action for one purpose over one exact resource set. Evidence about a vehicle never substitutes for either step.

Table
Unbreakable identity boundary
VIN, registration plate, serial, transponder, MAC address, image match, physical proximity, profile administration, follower count and persona continuity never authenticate a human or prove ownership, custody, sale authority, publication authority, spending authority or control authority.

#41.1 Seven isolated trust planes

PlaneMay doMust never do
identity + credentialsauthenticate human, organization, device, workload and provider principalsinfer authority from asset identifiers, persona or proximity
evidence + lifecycleadmit signed records, telemetry, media, configuration and source assertionsmint grants or execute external effects
policy decisionevaluate grants, relationships, rights, purpose, context, risk and dutieshold provider secrets or dispatch tools
vehicle agentretrieve filtered evidence, converse, draft content and propose typed actionsread unfiltered stores, possess secrets or create authority
tool + connector brokerrender one approved proposal into one allowlisted provider requestaccept arbitrary URL, code, shell, SQL or natural-language tool instructions
market + accountingserialize bids, reservations, milestones, journals and reconciliationclaim legal title, escrow status or tax treatment without attributed external authority
safety controloperate certified steering, propulsion, braking, flight or hazardous functionsshare schemas, credentials, network routes or leases with the social/commerce agent

Every cross-plane request produces an immutable receipt naming authenticated actor, workload, exact input digest, policy or safety decision, output digest, time and failure disposition. Co-location in one tenant, process, cluster or corporate group creates no ambient trust.

#41.2 Principal, agent, credential, and session records

Table
Canonical authentication objects
Principal {
  principalId: UUIDv4, tenantId: UUIDv4,
  kind: HUMAN|ORGANIZATION|WORKLOAD|DEVICE|PROVIDER,
  status: PENDING|ACTIVE|SUSPENDED|RECOVERY_LOCKED|RETIRED,
  assurancePolicyRef, keySetId, recoveryPolicyRef,
  legalIdentityRef?, jurisdictionRefs[], principalEpoch, createdAt
}

AgentInstance {
  agentInstanceId: UUIDv4, workloadPrincipalId,
  representedPersonaIds[], modelRuntimeRef, skillManifestDigest,
  deploymentDigest, maximumRiskTier, validInterval, status
}

CredentialBinding {
  credentialBindingId, principalId,
  kind: WEBAUTHN|MTLS|DPOP_KEY|DEVICE_KEY|RECOVERY_KEY,
  publicKeyThumbprint, algorithmSuite, authenticatorClass,
  hardwareBacked, userVerificationRequired, attestationRef?,
  keyEpoch, validInterval,
  status: ACTIVE|ROTATED|REVOKED|COMPROMISED|EXPIRED,
  compromiseEffectiveAt?
}

AuthenticatedContext {
  authenticationContextId, principalId, credentialBindingId, sessionId,
  authenticatedAt, authenticationAgeSeconds, assuranceLevel,
  userPresence, userVerification, devicePrincipalId?, workloadPrincipalId?,
  audience, channelBindingRef?, networkRiskClass, expiresAt
}
  • Human R3/R4 actions require phishing-resistant step-up authentication. R4 recovery, sale authority and rights transfer require a predeclared second approver or recovery quorum where policy demands it.
  • Workloads use short-lived asymmetric credentials and sender-constrained, audience-restricted tokens. Long-lived bearer tokens never enter prompts, URLs, logs, media processors or agent memory.
  • An external verifiable credential remains an issuer assertion until issuer trust, schema, status, scope, freshness, subject binding and policy are evaluated. It never automatically becomes an internal grant.
  • Key compromise appends CredentialCompromise and advances relevant credential/principal epochs. Historical signatures remain byte-verifiable, while their trust interpretation is recomputed for the compromise interval.
  • Session, credential, principal, grant, persona and mandate epochs are independent. A cache key for a positive decision includes every relevant epoch.

#41.3 Explicit relationship and capability authority

Table
Relationship and grant records
RelationshipEdge {
  relationshipId, subjectId, predicate, objectId, issuerPrincipalId,
  authorityBasisRefs[], scopeSelectors[], validInterval, recordedAt,
  relationshipEpoch, status: ACTIVE|REVOKED|EXPIRED|DISPUTED, proofRefs[]
}

Privileged predicates are a closed registry:
  owns_title_interest_in  has_custody_of  may_operate  may_maintain
  may_publish_for         may_manage_profile  may_list_for_sale
  may_accept_offer        may_transfer_right  may_spend_for
  is_beneficiary_of       may_review_content  may_review_candidate
  may_subdelegate

CapabilityGrant {
  grantId, issuerPrincipalId, granteePrincipalId, granteeAgentInstanceId?,
  delegatorGrantId?, authorityBasisRefs[], actions[], resourceSelectors[],
  fieldSelectors[], effectClasses[], providerAllowlist[], purposeSet[],
  audienceSet[], channelSet[], jurisdictionSet[], dataClassCeiling,
  locationPrecisionCeiling?, monetaryConstraints?, countAndRateConstraints?,
  contextualConstraints[], confirmationPolicyRef, obligations[],
  prohibitions[], retentionRuleRefs[], delegationPolicy,
  validInterval, grantEpoch, principalEpoch, personaEpoch?, nonce, proofRefs[]
}
SelectorExact semantics
ExactResourceSelectorclosed resource ID set; order canonicalized as a schema-declared set
FieldSetSelectorschema lock + resource IDs + allowed field paths; child fields are not implicit
RelationshipSelectorroot + allowlisted predicate path + maximum depth + graph checkpoint
CollectionSelectorcollection ID + immutable filter digest; no mutable saved-search alias
ProviderResourceSelectorconnector ID + exact provider resource IDs and tenant/account binding

Ownership implies no other predicate. Profile administration does not imply sale authority. Follower, spotter, maintainer, passenger, driver and telemetry-contributor edges create no commercial authority. ReBAC paths use only explicit active edges from trusted issuers, bind a graph checkpoint, reject cycles/ambiguity and never traverse inferred, creative, recommendation or social edges. Delegation can only reduce action, resource, purpose, audience, time, money, rate, geography and further-delegation depth.

#41.4 Deterministic policy decision and enforcement

Table
Fail-closed ABAC/ReBAC evaluation
decide(request):
  require schema_valid(request) and digest(request.proposal)==request.proposalDigest
  auth = verify_transport_and_session(request.transportProof)
  require auth.current and auth.audience == this_service
  require auth.principalEpoch == currentPrincipalEpoch(auth.principalId)

  effects = classify_effects(request.proposal)
  risk = aggregate_risk(effects, amount, audience, disclosure, repetition)
  if PHYSICAL_ACTUATION in effects: DENY("social-plane-actuation")

  attrs = resolve_at(validAt=request.validAt, knownAt=now,
                     relationshipCheckpoint=currentGraphCheckpoint,
                     evidenceCheckpoint=request.evidenceCheckpoint)
  if required attribute missing, stale, conflicted or disputed: DENY

  grants = verify_authority_chains_and_attenuation(request, attrs)
  if any hard prohibition, incident, safety, court, legal-hold,
     rights, consent or revocation denial applies: DENY
  if no explicit grant contains exact action/resources/purpose/context: DENY

  duties = union_required_duties(grants, rights, consent, risk)
  if duties conflict or cannot be enforced: DENY
  if confirmation required and exact unconsumed challenge is absent: CHALLENGE
  reservation = atomically_reserve_budget_rate_inventory(request)
  if reservation fails: DENY

  return PERMIT_WITH_DUTIES(
    proposalDigest, policyDigest, all epochs, both checkpoints,
    grantIds, dutySet, reservationId, expiresAt, oneTimeDispatchNonce)

Before connector dispatch, repeat the decision against current terms, amount,
counterparty, beneficiary, grants, epochs, incident state, confirmation and
reservation. INDETERMINATE is enforced as DENY. Explicit deny overrides permit.
RiskRepresentative effectMinimum gate
R0public read or policy-filtered summarypublic/authenticated projection; no external effect
R1private draft, preference or internal analysiscurrent grant and reversible storage
R2public post, message, free invitation or reservationgrounding, rights/privacy, rate limit, receipt and reversal path
R3payment, binding booking, bid, refund or paid campaignexact-terms confirmation, step-up, atomic mandate reservation, idempotent connector
R4sale/title representation, persona/voice transfer, sensitive disclosure or recruitment submissiondesignated approver/dual control, rights review, one-time confirmation and dispute bundle
R5steering, propulsion, braking, flight, payload release or hazardous actuationstructurally unavailable to social/commerce runtime
Table
Permission types remain independent
DataUseDeclaration {
  controllerPrincipalId, processorPrincipalIds[], dataSubjectRefs[],
  dataCategorySelectors[], sourceSelectors[], operations[], purposes[],
  recipientClasses[], modelTrainingUse, automatedDecisionUse,
  jurisdictions[], noticeVersion, retentionScheduleRef, securityProfileRef
}

ConsentGrant {
  dataSubjectPrincipalId, controllerPrincipalId, declarationId,
  acceptedPurposes[], acceptedOperations[], acceptedDataSelectors[],
  acceptedRecipientClasses[], affirmativeActionRef, noticeArtifactDigest,
  presentedLanguage, acceptedAt, validInterval, consentEpoch, status
}

RightsGrant {
  rightsholderPrincipalId, granteePrincipalId, assetOrWorkIds[],
  rightKinds[], permittedUses[], prohibitedUses[], territory[], language[],
  channel[], audience[], derivativePolicy, trainingPolicy,
  sublicensingPolicy, approvalPolicy, compensationRef?, validInterval
}

DisclosureReceipt {
  recipientPrincipalOrClass, dataSubjectRefs[], sourceRecordIds[],
  exactProjectionDigest, fieldsReleased[], fieldsRedacted[], purpose,
  legalBasisOrConsentRefs[], rightsGrantRefs[], jurisdiction,
  recipientDuties[], retentionAfterDisclosure, channel,
  transportProofRef, policyDecisionId, disclosedAt
}

Consent follows DRAFT → PRESENTED → ACCEPTED → ACTIVE → WITHDRAWN | EXPIRED | SUPERSEDED; PRESENTED may become DECLINED. WITHDRAWN is terminal and renewed consent creates a new record. Withdrawal stops new dependent processing, invalidates grants/caches, freezes scheduled content and campaigns, stops dependent analytics/training, traces derivatives, applies jurisdiction-specific remediation and emits a withdrawal-effect receipt.

Table
Retention interval computation
earliestPermittedDeletion = max(all applicable minimum-retain bounds)
latestRequiredDeletion     = min(all applicable delete-no-later bounds)

If earliestPermittedDeletion > latestRequiredDeletion and no exact scoped hold
resolves the conflict, enter COMPLIANCE_CONFLICT. A legal hold names subjects,
record classes, interval, issuer, authority, reason, review date and expiry.
  • Authorization applies at field, relationship, aggregation and inference level. Removing a field is insufficient if counts, timing, ranking, errors or model outputs reveal the protected fact.
  • Public and unauthorized projections pass non-interference tests: adding a private asset or record must not alter counts, ordering, latency class, status codes, cache keys or error wording visible to the observer.
  • Envelope encryption binds tenant, object, key epoch and algorithm suite. Key destruction is an operational mechanism, not a substitute for deletion records, derivative remediation or provider disclosure duties.
  • Audit access is separately authorized, minimized and logged. Hashes of low-entropy personal identifiers are still personal/pseudonymous data and are not published as transparency artifacts.

#41.6 Prompt injection, connector, and parser containment

Table
Typed tool broker and connector manifest
ConnectorManifest {
  connectorId, version, providerPrincipalId, supportedActionKinds[],
  maximumRiskTier, requestSchemaDigestByAction{}, responseSchemaDigestByAction{},
  registeredOrigins[], serviceIdentityProfile, inboundWebhookSignatureProfile?,
  credentialVaultRef, providerIdempotencyClass: STRONG|QUERYABLE|NON_IDEMPOTENT,
  statusQueryProfile?, compensationProfiles[], retryPolicy, timeoutPolicy,
  ratePolicy, dataDisclosureProfile, egressAllowlist, sandboxProfile,
  manifestDigest, approverIds[], status
}

Model outputs are restricted to NarrativeDraft, MemoryProposal or ActionProposal.
They cannot call HTTP, browser, shell, SQL, filesystem, broker or generic messaging.
The broker validates a typed proposal and deterministically renders one registered
provider request. NON_IDEMPOTENT connectors cannot autonomously execute R3/R4.
  • Signed system policy and signed tool schemas are outside model-visible content. Retrieved evidence, sponsor copy, service notes, OCR, comments and webpages remain untrusted inert data.
  • The model sees no cookies, API keys, signing keys, payment credentials or unrestricted network client. Connector secrets resolve from opaque handles only after authorization.
  • Remote fetch uses origin allowlists, DNS/IP revalidation, redirect limits, MIME verification, byte/time limits and SSRF protection. Archives and media parsers enforce recursion, decompression, memory, pixel, duration and file-count budgets.
  • Webhook admission verifies provider identity/signature, replay window, event ID, raw artifact custody, schema and idempotency before producing a provider assertion.
  • Injection classifiers are detection signals, not the boundary. The deterministic post-model enforcement point remains authoritative even when every classifier reports safe.

#41.7 Spotting, advertising, and recruitment abuse controls

SurfaceDefault technical controlsForbidden inference/effect
spottingprivate precise location; delay/coarsen; strip EXIF; inspect faces/plates/minors/background; aggregate anti-triangulation; opaque invitationlive tracking, home/storage route disclosure, identity merge, public suppression oracle
advertisingcontextual public vehicle facts or declared preferences; audience floor; precision ceiling; frequency cap; sponsor disclosureraw route/telemetry export, sensitive human traits, insurance/employment/credit targeting, minors, undisclosed persona speech
recruitmentseparate candidate domain; explicit evidence grant; named reviewers; human decision; short retention; decision receiptfollower rank, spend, private telemetry/location or inferred protected traits as selection features

A spotting moves RECEIVED → QUARANTINED → SAFETY_CLASSIFIED → REDACTED → CANDIDATE_MATCHED → OWNER_REVIEW → PUBLISHED_DELAYED | PRIVATE_ONLY | DENIED. Repeated coarse observations are evaluated together. A suppressed/high-risk vehicle returns the same generic reporter response as an unmatched candidate. Candidate resolution never merges identity or asserts ownership.

#41.8 Tamper evidence, incidents, and dispute bundles

Table
Attributable action evidence—without absolute legal claims
AuditEvent {
  auditEventId, tenantId, actorPrincipalId, agentInstanceId?,
  credentialBindingId?, authenticationContextId?, actionKind, resourceIds[],
  proposalDigest?, beforeStateDigest?, afterStateDigest?, policyDecisionId?,
  grantIds[], confirmationArtifactId?, connectorOperationId?, providerReceiptIds[],
  outcome, failureCode?, occurredAt, recordedAt, clockUncertainty,
  correlationId, traceId, previousAuditDigest, auditDigest, proofRefs[]
}

TransparencyCheckpoint {
  checkpointId, tenantOrShard, firstSequence, lastSequence, merkleRoot,
  previousCheckpointDigest, signerKeyId, signedAt,
  independentWitnessReceipts[], storageRetentionRef
}
IncidentImmediate containmentDurable recovery evidence
credential/key compromiserevoke, advance epochs, stop affected dispatchcompromise interval, affected proof set, re-evaluation and replacement credentials
tenant disclosuredisable projection/export path; preserve volatile evidenceexact records/recipients, disclosure receipts, notifications and corrective policy
connector compromisedisable manifest/version and credentials; hold unknown effectsprovider reconciliation, rotated identity, reviewed compensations
ledger/checkpoint mismatchfreeze affected shard writes/projectionsbyte-level verification, witness roots, restore comparison and tamper finding
model/prompt compromisedisable runtime/skill digest and scheduled contentcontext manifests, candidate outputs, policy results and publication corrections
location abuseincrease delay/coarsening; freeze involved accountscorrelation graph, affected sightings, victim support and policy update

An R3/R4 dispute bundle exports canonical records, schema/vocabulary locks, policy versions, grant chains, authentication and confirmation artifacts, provider receipts, journal batches, checkpoints/inclusion proofs and offline verification instructions. Cryptographic evidence supports attribution and dispute resolution; its legal effect remains jurisdiction- and procedure-dependent.