← Chrome 151 reference

v151 · developer trial · digital credentials

Protocol filtering in Digital Credential API

Limited availability

  • Chrome · developer trial 151 (behind a flag)
  • Edge · mirror (BCD)
  • Safari · 26 (BCD)
  • Firefox · not supported (BCD)

BCD covers the protocol surface (Chrome 141, Safari 26); ChromeStatus uses “unspecified protocols” for arbitrary identifiers outside the normative registry. Their deprecation begins as a flag-gated developer trial in Chrome 151, with removal targeted for Chrome 160. See the compatibility section for the separated facts.

Digital credential requests already carry a required protocol member. What is changing is which values are accepted: arbitrary protocol identifiers outside the specification's registry are being phased out. DigitalCredential.userAgentAllowsProtocol() lets a page check an identifier before requesting it; Chrome 151 begins the developer trial, with removal of arbitrary protocols targeted for Chrome 160.

Developer trial — flag required

This change is behind a flag in Chrome 151 (milestone listing: developer trial). Enable chrome://flags/#enable-experimental-web-platform-features to try it. ChromeStatus names that flag explicitly; DigitalCredentialsProtocolFilter is the separate Finch/Blink runtime feature token (status experimental), not a dedicated chrome://flags entry. The feature detail targets removal for Chrome 160.

Source: chromestatus.com/feature/6492906882990080; Chromium runtime_enabled_features.json5

at a glance

At a glance
Milestone listingChrome 151 — developer trial (behind a flag)
Feature detailDesktop 160, status text “Proposed” (detail updated 2026-06-18); deprecation of arbitrary protocol identifiers outside the registry begins 151, removal targeted for 160
SurfaceThe required request protocol member, readonly credential attribute, DigitalCredentialProtocol union typedef, its two enumerations, and DigitalCredential.userAgentAllowsProtocol()
Trial controls#enable-experimental-web-platform-features is the Chrome flag; DigitalCredentialsProtocolFilter is the Finch/Blink runtime token, status experimental at trunk
Standards bodyDigital Credentials (FedID WG draft) — protocols
ChromeStatus6492906882990080 — Protocol filtering in Digital Credential API
Source: chromestatus.com/feature/6492906882990080; Chromium runtime_enabled_features.json5

Member reference

The developer-facing surface, each item with stable detailed reference covering syntax, inputs, outputs, errors, context, lifecycle, examples, compatibility, and security/privacy:

Source: Digital Credentials — protocols

What changed and why it matters

The protocol member was already required, but implementations previously accepted arbitrary values and acted as opaque pipelines for protocols the specification did not define. The new filter aligns requests with the specification's registry: Chrome 151 begins deprecating unregistered identifiers, with their removal targeted for Chrome 160. Migrate each request to a registered identifier and check it first — userAgentAllowsProtocol() returns false for unknown or disallowed identifiers without throwing.

Source: ChromeStatus API feature record; Digital Credentials — protocols

Examples

Live example from the Chrome Platform Showcase: check which protocols this browser allows. Source: chrome-platform-showcase
// Gate on the interface first (undefined → ReferenceError otherwise),
// then on the protocol (unknown identifier → false, never throws):
if (typeof DigitalCredential !== "undefined"
    && DigitalCredential.userAgentAllowsProtocol("openid4vp-v1-signed")) {
  const cred = await navigator.credentials.get({
    digital: {
      requests: [{ protocol: "openid4vp-v1-signed", data: { /* … */ } }],
    },
  });
}
Source: Digital Credentials — protocols and examples

Browser compatibility

Protocol surface — from BCD api/DigitalCredential.json (checked 2026-07-26)
Engine / runtimeSupportNotes
Chrome141BCD rows for protocol, userAgentAllowsProtocol(), and data; arbitrary-protocol filtering is a Chrome 151 developer trial with removal targeted for 160 (ChromeStatus, not BCD)
EdgemirrorBCD mirrors Chrome's data
Safari26BCD rows; the ChromeStatus entry records Safari “Shipped/Shipping”
FirefoxNot supportedBCD version_added: false; the ChromeStatus entry records No signal

Support rows are from BCD only; the 151 trial and 160 removal target come from the ChromeStatus API feature record and are kept separate. Vendor signals per the same record: Firefox “No signal”, Safari “Shipped/Shipping”, web developers “No signals”.

Source: BCD api/DigitalCredential.json; ChromeStatus API feature record

Specifications

Specifications
SpecificationStatus
Digital Credentials — protocolsFederated Identity Working Group draft (normative)
Source: w3c-fedid.github.io/digital-credentials

See also