Unable to Edit passkey profile with new entries ?

EnterpriseArchitect 6,416 Reputation points
2026-11-02T03:59:07.86+00:00

I am unable to add a new AAID from the official list of Passkey providers https://passkeydeveloper.github.io/passkey-authenticator-aaguids/explorer/

under this page:

Edit passkey profile

User's image

Even when using the steps described under https://learn.microsoft.com/en-us/entra/identity/authentication/how-to-authentication-passkeys-fido2#passkey-fido2-authenticator-attestation-guid-aaguid

There is no error shown, but it just shows as completed in the notification; refreshing the page does not show the newly added AAID.

Microsoft Security | Microsoft Entra | Microsoft Entra ID
0 comments No comments

2 answers

Sort by: Most helpful
  1. Vasileios Dionysopoulos 646 Reputation points
    2026-11-03T16:42:42.7833333+00:00

    Your AAGUID was most likely saved. In my repro, the admin center kept showing a stale copy of the profile in the same browser session, even after F5, while the policy itself had been updated. The part to watch out for is the next save: saving from that stale view silently removed entries that were in the policy but not on screen.

    Repro (my tenant, a separate test profile not assigned to any target)

    1. Created a profile with one custom AAGUID, then edited it to add a second one. Both persisted and both were shown. ✅

    2. Edited it again and added Microsoft Authenticator (the built-in option). The pane showed 4 entries. After F5 it showed only the 2 original ones. Graph had all 4:

    $u = "https://graph.microsoft.com/v1.0/policies/authenticationMethodsPolicy/authenticationMethodConfigurations/fido2"
    (Invoke-MgGraphRequest GET $u).passkeyProfiles | Where-Object name -eq "<profile name>" |
        Select-Object -ExpandProperty keyRestrictions | ConvertTo-Json
    

    3. In the same session (still showing 2), added a third custom AAGUID and saved. The policy then contained the 2 visible entries + the new one. The two Microsoft Authenticator AAGUIDs that were saved in step 2 had been removed, with no warning. After F5, the pane still showed only the original 2.

    4. Opened the admin center in a new InPrivate window. It showed the correct, current list (3 entries), the same as Graph v1.0 and beta.

    3-passkey-stale-vs-fresh-session

    5. The audit log shows exactly what each portal save wrote (Service: Authentication Methods, Activity: Authentication Methods Policy Update, property Fido2.PasskeyProfiles, AAGUIDs only):

    16:30:33Z  add Microsoft Authenticator (built-in option)
      old: ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4, fbfc3007-154e-4ecc-8c0b-6e020557d7bd
      new: ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4, fbfc3007-154e-4ecc-8c0b-6e020557d7bd,
           de1e552d-db1d-4423-a619-566b625cdc84, 90a3ccdf-635c-4729-a248-9b709135078f
    
    16:34:01Z  add 1Password, saved from the stale view
      old: ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4, fbfc3007-154e-4ecc-8c0b-6e020557d7bd,
           de1e552d-db1d-4423-a619-566b625cdc84, 90a3ccdf-635c-4729-a248-9b709135078f
      new: ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4, fbfc3007-154e-4ecc-8c0b-6e020557d7bd,
           bada5566-a7aa-401f-bd96-45619a55120d
    

    The second save sent the list as the stale pane showed it, plus the new value, so both Microsoft Authenticator AAGUIDs were removed server-side.

    That matches your symptom: the save succeeds ("completed" notification), but the pane in your session doesn't show the new value.

    What to do

    • Check the real state with Graph (GET above, Policy.Read.All) or in a fresh InPrivate / new browser profile. Don't rely on F5 in the session you edited from.
    • Check your own audit log: Entra admin center → Monitoring & health → Audit logs → Service = Authentication Methods → open each Authentication Methods Policy Update → Modified Properties → Fido2.PasskeyProfiles. You'll see whether your new AAGUID was written and whether any later save removed entries.
    • Only edit from a fresh session. If you save from a stale view, it can overwrite the AAGUID list and drop values that are enforced but not shown. On a profile in use with Allow, a removed AAGUID means those users can't register or sign in with that authenticator.
    • For repeatable changes, use Graph. GET the fido2 configuration, change only the aaGuids array of the affected profile, and PATCH back the complete passkeyProfiles array (Policy.ReadWrite.AuthenticationMethod). Then GET again to confirm.
    • If your profile already went through several portal edits, compare its aaGuids in Graph with the list you expect, and restore anything that's missing.

    Notes

    • I couldn't find this documented as a known issue. If you can reproduce it with InPrivate as the control, it's worth sending as feedback from the admin center or opening a support case.
    • The orange "attestation is not enforced" warning in your screenshot is informational. It doesn't cause the missing entry.

    References

    Was this answer helpful?

    0 comments No comments

  2. AI answer

    2026-11-02T04:38:00.4233333+00:00

    Query the FIDO2 authentication-method policy through Microsoft Graph; if the new AAGUID is absent from the returned passkeyProfiles collection, update that collection through Graph rather than repeating the portal operation.

    1. Verify whether the portal actually saved the AAGUID

    1. Open Graph Explorer.
    2. Sign in with a work or school account assigned at least Authentication Policy Administrator.
    3. Consent to:
      • Policy.Read.All
      • Policy.ReadWrite.AuthenticationMethod
    4. Run:
    GET https://graph.microsoft.com/v1.0/policies/authenticationMethodsPolicy/authenticationMethodConfigurations/fido2
    
    1. Locate the affected profile under passkeyProfiles, then inspect:
    "keyRestrictions": {
      "isEnforced": true,
      "enforcementType": "allow",
      "aaGuids": []
    }
    

    The Graph resource is the authoritative policy representation. A profile’s keyRestrictions property contains the allowed or blocked AAGUIDs ^1^.

    • AAGUID appears in Graph: the change persisted, and the admin-center pane is displaying stale state. Reopen the portal in a new session; do not submit another policy update.
    • AAGUID is absent: the portal did not persist it. Continue with the Graph update below.

    2. Update the profile through Graph

    First save the complete GET response. When modifying passkeyProfiles, retain every existing profile and every existing AAGUID; do not send a replacement list containing only the new value.

    Add the new value to the affected profile’s existing aaGuids array and PATCH the FIDO2 configuration:

    PATCH https://graph.microsoft.com/v1.0/policies/authenticationMethodsPolicy/authenticationMethodConfigurations/fido2
    Content-Type: application/json
    
    {
      "@odata.type": "#microsoft.graph.fido2AuthenticationMethodConfiguration",
      "passkeyProfiles": [
        {
          "id": "<existing-profile-id>",
          "name": "Default passkey profile",
          "passkeyTypes": "deviceBound,synced",
          "attestationEnforcement": "disabled",
          "keyRestrictions": {
            "isEnforced": true,
            "enforcementType": "allow",
            "aaGuids": ["<existing-aaguid>", "<new-aaguid>"]
          }
        }
      ]
    }
    

    The example is intentionally abbreviated: copy the complete passkeyProfiles array from the GET response and change only the required aaGuids array. Removing an allowed AAGUID can prevent users with that authenticator from signing in ^2^.

    A successful PATCH returns 204 No Content. Run the GET request again and verify that the value is now present. Microsoft documents this endpoint, the required @odata.type, the least-privileged role, and the Policy.ReadWrite.AuthenticationMethod permission ^3^.

    Input requirements

    • The setting expects an AAGUID, not an AAID. An AAGUID is the authenticator’s 128-bit identifier and should be entered in GUID form, for example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
    • Prefer the AAGUID supplied by the authenticator vendor. If the passkey is already registered, retrieve it from: Entra ID → Users → select user → Authentication methods → passkey details.
    • A third-party directory entry alone does not establish that Microsoft Entra can validate the provider’s attestation. If Enforce attestation is enabled, the authenticator must satisfy Entra’s attestation requirements. If it is disabled, Microsoft warns that the passkey’s provider/type attributes cannot be guaranteed ^2^.
    • The warning shown in the screenshot is therefore informational; it does not by itself explain why the AAGUID disappeared.

    If Graph also fails

    Check the Graph response rather than the portal notification:

    • 403: verify the Graph permission and Authentication Policy Administrator role.
    • 400: retain the exact properties and enum values returned by GET, and verify the AAGUID is a valid GUID.
    • 204, followed by a GET that still omits the value: capture the request ID, timestamp, tenant region/cloud, profile ID, sanitized request body, and response headers, then open a Microsoft support case. That result would indicate a service-side policy persistence problem; Microsoft does not document this exact portal symptom as an established known issue.
    • Also check policy size. The Passkey (FIDO2) policy has a documented 20-KB limit, after which additional profiles cannot be saved ^2^.

    References

    1. passkeyProfile resource type
    2. How to enable passkeys (FIDO2) in Microsoft Entra ID
    3. Update fido2AuthenticationMethodConfiguration
    AI-generated content may be incorrect. Read our transparency notes for more information.

    Was this answer helpful?

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.