Skip to main content
Version: v4

Verifiable User Agents and wallets

A Verifiable User Agent is software that acts for a person, a mobile identity wallet, a DIDComm messenger, an agentic browser, and that refuses to trust blindly. Before it connects to a service, accepts a credential or shares one, it asks the network and shows the person the answer.

The three questions​

QuestionWhenAnswer from
Q1Is this service a trusted Verifiable Service, and who operates it?on every new connectiontrust resolution of the service DID
Q2Is this service accredited to issue this credential, in this ecosystem?on every credential offerthe issuer's accreditation on the registry
Q3Is this service accredited to request this credential?on every presentation requestthe verifier's accreditation on the registry

A failed Q1 means no connection. A failed Q2 or Q3 means the accept or share action is blocked or demoted behind an explicit warning; it never happens silently.

The Proof-of-Trust​

The answer to Q1 is shown the same way in every integrated wallet, so people learn to read it once:

  1. The verdict: trusted, untrusted, or could not verify, with the service DID and the time of evaluation.
  2. The service: name, type, logo, description, from its ECS Service credential.
  3. Who operates it: legal name, country, registry identifier, from the ECS Organization or Persona credential.
  4. The other credentials the service or its operator present, each with its own validity mark.
  5. The trust chain behind each credential, issuer to grantor to ecosystem, with the failures, when any, as first-class content.

Wallets keep their own look; the order, the states and the iconography are the shared contract. Nothing is invented: no stars, no scores beyond what resolution returned.

What a person sees for the playground's accredited demo issuer, and for its untrusted demo service:

TrustedAccredited Issuer (demo)TESTNET
did:webvh:QmSXfnquiRk1FELWU…demo-issuer-accredited.playground.testnet.verana.network

Evaluated at block 1 504 211 · 2026-10-20 10:14 UTC

Service

Accredited Issuer (demo) · Issuer service

Issues the DemoCredential of the Playground Ecosystem (demo). Minimum age 0 · Terms · Privacy policy

Operated by

Playground Organization (demo) · 🇨🇭 CH

Registry id CHE-000.000.000 · Rue de l'Exemple 1, Geneva

Other credentials

ISO 9001-style quality management (demo) · ISO Certification Ecosystem (demo)valid

Trust chain

Service credential: Accredited Issuer (demo) → ECS ecosystem

  • Organization credential: Helvetia Trust Services (demo), accredited ECS issuer → ECS ecosystem
  • ISO 9001-style (demo): NormaCert (demo), accredited issuer → ISO Certification Ecosystem (demo)
UntrustedUntrusted Service (demo)TESTNET
did:webvh:QmSXfnquiRk1FELWU…demo-untrusted.playground.testnet.verana.network

Evaluated at block 1 504 211 · 2026-10-20 10:14 UTC

Service

No ECS Service credential presented.

Operated by

No ECS Organization or ECS Persona credential presented.

Failures

  • The DID Document declares no linked presentation of a Service credential (VS-REQ-2).
  • Self-issued claims withheld: no accredited issuer backs them.

The playground renders these cards live for every demo service, and its component is the reference wallets copy.

Two integration tracks​

Native. The wallet speaks DIDComm. It connects to services over the bootstrap channel, resolves trust before the connection is used, receives AnonCreds or W3C credentials and presents them with selective disclosure.

Bridge. The wallet is built on OpenID4VC, in the style of the European wallets. It keeps its OpenID4VCI and OpenID4VP flows unchanged and adds trust resolution of the issuer or verifier DID around its consent screens, rendering the Proof-of-Trust above the fold. Only resolvable DID methods qualify, did:web and did:webvh: a bare key cannot present credentials, so it cannot be trusted.

The user agent credential​

Not yet enforced

Issuance of User Agent credentials by wallet vendors is not yet generally available, so services do not request the credential today and wallets do not check each other's. Wallets integrated under the current guideline are not presented as full Verifiable User Agents for that reason.

A full Verifiable User Agent also carries an ECS User Agent credential, issued by its vendor, which a service may ask for before serving it, and which identifies the software without identifying the person. It is a private credential, AnonCreds or SD-JWT VC depending on the wallet's rail, presented with selective disclosure. It says nothing about the person: identifying the human behind the agent is out of its scope, and a service that needs it does so separately, through whatever credential its own context calls for, such as an ECS Badge for an employee or member, or an identity credential from an ecosystem that governs one.

Where next​