Skip to content

Term

Principal

An authenticated human, service, or agent identity. A Principal is not an AgentInstance and is not an assignment.

Identity
principal_id
Kind
name
Authority role
identity-provider
Mutability
mutable
Status
accepted

Purpose

Be the subject of authentication and authorization so process identity and work assignment stay separate from who is acting.

Relationships

NameTargetKindCardinalityInverse
participating_sessionsWorkSessionreferences0..*participants 0..*
agent_instancesAgentInstanceobserves0..*principal 0..1
owned_conversationsHostConversationobserves0..*owner_principal 0..1

Invariants

  • MUST ids-are-names: principal_id is a name. Authorization is decided by policy, not by possessing the identifier.
  • MUST NOT not-an-instance: A Principal MUST NOT be treated as an AgentInstance.
  • MUST NOT no-credentials: A portable snapshot MUST NOT include the Principal's credentials.

Aliases

  • actor-identity

Deprecated aliases

None.

Not synonyms

  • AgentInstance: The instance is a process or endpoint that may present a Principal.
  • AgentRun: The run is an assignment given to a Principal or performed via an instance.
  • AgentProfile: The profile is a kind, not an authenticated identity.

Examples

  • A human user identity that opens a WorkSession.
  • A service identity that an AgentInstance presents.

Anti-examples

  • A PID.
  • An API token stored in a snapshot.

Fields

The identity field is the index of the handle. fields is the exchange shape.

NameKindTypePortableNotes
principal_ididentitynameTrue
kinddescriptivestringTruehuman, service, or agent identity kind.
issuermetadatastringTrue

Native mapping hooks

SystemNative termFidelityNotes
project-interop_none_tbd