Identity
Field Guide · Tier 2

Identity

  1. Who is calling?
    the workload, not a person
  2. On whose behalf?
    the authority chain
  3. What is it scoped to?
    actions, resources, expiry
Three things every non-human caller needs

01The Problem

An agent shows up with an API key. The key tells you which program is calling. It does not tell you which person the program is acting for, what it's allowed to do right now, or when its permission ends.

02Why existing approaches fall short

User accounts assume a human at a keyboard. Service accounts assume a fixed program with a fixed job. Agents are neither: they change task by the minute and act for different people in the same session.

03The concept

Identity for a non-human caller is a triple: who the workload is, on whose behalf it is acting, and what it is currently scoped to do. All three travel with the request, or the request should not be honoured.

04How Aarmos applies it

Aarmos treats the caller, the authority, and the scope as distinct fields on every decision. Delegation attenuates — it never escalates.

05Example

A support agent is triaging a ticket. Its identity says workload=triage-agent, on-behalf-of=alice, scope=read:ticket,write:reply, expires=90s. A refund call under this identity is denied — not because the agent is untrusted, but because Alice's delegation never granted refunds.

06Mini-FAQ

Isn't this what OAuth tokens do?
Tokens can carry it, but most deployments collapse to a service account with a static scope. The point is treating the three fields as first-class, not stuffing them into a claim.
How does this differ from an API key?
An API key is one field: who. Identity as we mean it also encodes the human authority and the current scope.
Where does this show up in a receipt?
As explicit fields — see Authorities for the chain.

07Related concepts

GovernCan this agent do this?RunWill this work with my stack?ProveCan I prove what happened?
One decision. Three checkpoints. Every time.