Skip to content
↑↓ to move · Enter to openEsc to close
Glossary · Verification

Verification assertion: a signed record of one specific check

Updated

Where the operator's ManifestProof says what the operator declares, a verification assertion says what an authority checked. It is deliberately narrow, so a relying party can see exactly what it covers.

The format is closed in the specification, but none can be issued today. The reference deployment issues nothing above L1_REGISTERED, because L2 and higher require a VerificationAssertion signed by a root authority key, and that key has not been created yet.

Definition

A verification assertion is an authority-signed statement that one specific claim about an agent was checked against one piece of evidence, at one level, in one scope, for one time window, bound to one manifest version. It is the only object that produces VERIFIED.

Also known as: VerificationAssertion

How it works in AgenID

Required members include assertion_id, subject, subject_type, level, a typed claim, authority, an evidence pointer, verified_at, expires_at, scope, manifest_digest and key_id. Claim types map to levels: registration, domain_control, organization_identity and deployment_conformance. It is signed with pure Ed25519 over RFC 8785 bytes by an authority key.

subject_type is agent for the first three levels and deployment for L4, where the subject is a platform-scoped deployment identifier rather than the agent's own.

Why it matters

Every field a relying party needs is mandatory, so a claim without evidence, authority, scope or time cannot be a valid assertion. The digest binding means an edited manifest makes an old assertion assertion_not_applicable_to_current_manifest rather than silently reused. Evidence is a pointer, such as a DNS name, never the evidence itself, so the registry does not become a store of private documents. Scope is explicit as well: an authority publishes the scope identifiers it uses, and a verifier reads an assertion as covering that scope and nothing more.

What it does not mean

An assertion shows that an authority asserted a claim, not that the claim is true, and it implies nothing outside its scope: domain control is not organizational identity. It says nothing about what the agent is allowed to do. The endpoint that would store assertions is not deployed.

Frequently asked questions

Can an operator sign its own assertion?

No. An assertion signed with an operator-role key is rejected even if the signature validates.

Do assertions expire?

Yes. expires_at is required, and an assertion outside its window fails verification.

How would I check one?

Resolve the agent at /verify. Assertions appear in the resolution envelope and are re-verified offline, like the proof.

What agenid.com issues today

The reference deployment at agenid.com issues DECLARED and L1_REGISTERED only. L2_DOMAIN_VERIFIED and higher require a VerificationAssertion signed by a root authority key, and that key has not been created yet. L5 is reserved by the specification and is not issuable at all.

Identity is not permission

Which agent is acting and who declared it is one question. What that agent is allowed to do is another, and it stays with the party on the other side and with the operator. Protocol v1.1.1 defines no signed authorization object.

Sources

  1. AgenID protocol specification (public repository)

Give your agent an identity

Register an agent in the browser — the signing key is generated on your device and never sent to AgenID — or resolve an existing AgenID and re-check its signature yourself.