v151 · developer trial · digital credentials
Protocol filtering in Digital Credential API
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 lets a page check an identifier before requesting it; Chrome 151 begins the developer trial, with removal of arbitrary protocols targeted for Chrome 160.
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.
at a glance
| Milestone listing | Chrome 151 — developer trial (behind a flag) |
|---|---|
| Feature detail | Desktop 160, status text “Proposed” (detail updated 2026-06-18); deprecation of arbitrary protocol identifiers outside the registry begins 151, removal targeted for 160 |
| Surface | The 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 body | Digital Credentials (FedID WG draft) — protocols |
| ChromeStatus | 6492906882990080 — Protocol filtering in Digital Credential API |
Member reference
The developer-facing surface, each item with stable detailed reference covering syntax, inputs, outputs, errors, context, lifecycle, examples, compatibility, and security/privacy:
DigitalCredential.userAgentAllowsProtocol()— the static protocol check: unknown protocols return false (never throw), but an undefined interface throws ReferenceError- the
protocolmember,DigitalCredentialProtocoltypedef, and enumerations — required on requests, readonly on the credential, with the current closed set of protocol identifiers
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.
Examples
// 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
| Engine / runtime | Support | Notes |
|---|---|---|
| Chrome | 141 | BCD rows for protocol, userAgentAllowsProtocol(), and data; arbitrary-protocol filtering is a Chrome 151 developer trial with removal targeted for 160 (ChromeStatus, not BCD) |
| Edge | mirror | BCD mirrors Chrome's data |
| Safari | 26 | BCD rows; the ChromeStatus entry records Safari “Shipped/Shipping” |
| Firefox | Not supported | BCD 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 recordSpecifications
| Specification | Status |
|---|---|
| Digital Credentials — protocols | Federated Identity Working Group draft (normative) |
See also
- w3c-fedid/digital-credentials issue #396 — explainer/proposal thread
- Chromium runtime_enabled_features.json5 (
DigitalCredentialsProtocolFilter, experimental) - Chrome Platform Showcase — Protocol filtering in Digital Credential API (also: compliant request builder, deprecation migration)