How it works in AgenID
The grammar is fixed: ^agenid:[0-9A-HJKMNP-TV-Z]{26}$, where the tail is a ULID in Crockford base32. Registration checks uniqueness before commit. Related namespaces follow the same pattern: keys are agenid:key:<ULID> with their own ULID, and authorities are agenid:authority:<node>. Resolve any agent at https://www.agenid.com/a/<agenid> for the Verification Card, or ask for JSON to get the resolution envelope.
The same identifier appears everywhere the agent is presented: on the Verification Card, in the JSON envelope, in the badge embed and in the shield image at /badge/<agenid>/shield.svg. A relying party that records it can resolve the agent again later and see the same subject, whatever platform the agent was using at the time.
Why it matters
Platform IDs belong to platforms. An agent that moves between voice providers would lose its history if its identity were the provider's ID. The specification forbids using a platform-native ID as, or inside, an AgenID identifier, and a deployment gets its own separate identifier, so the agent's identity survives migration. The agent delegation scenario shows why a stable handle matters when agents act for each other.
What it does not mean
Holding an identifier says nothing about trustworthiness and nothing about what the agent is allowed to do. It names the subject; the signed manifest and any assertions are what a verifier evaluates. Malformed identifiers are rejected with invalid_identifier rather than guessed at.