Skip to content

[PM-41033] Passkey creation fails with Ctap2(Vendor(VendorError(241))) when saving a GitHub passkey on iOS 26.5.1 #2919

Description

@bourqui

Steps To Reproduce

  1. On iPhone running iOS 26.5.1, set Bitwarden as the provider in
    Settings → General → AutoFill & Passwords (Passwords/iCloud Keychain off).
  2. In Safari, sign in to github.com.
  3. Go to Settings → Password and authentication → Passkeys → "Add a passkey".
  4. Complete GitHub's re-authentication prompt.
  5. When the iOS system sheet appears, choose Bitwarden.
  6. On the "Choose a login to save this passkey to" screen, select the
    existing github.com login item.
  7. Confirm.

Expected Result

The passkey is created, saved to the selected github.com login item, and
registered successfully with GitHub.

Actual Result

Creation fails immediately with "An error has occurred." GitHub reports
"Passkey registration failed." No passkey is saved to the vault item.

Error details from "Share error details":

Bitwarden Autofill 2026.7.0 (3402)
Bundle: com.8bit.bitwarden.autofill
Device: iPhone18,3
System: iOS 26.5.1
SDK: 3.0.0-6848-159aed9
Server: 2026.7.1 @ US
Commit: e9514dc

BitwardenSdk.BitwardenError.MakeCredential(BitwardenSdk.MakeCredentialError.Other(
message: "make_credential error: Ctap2(Vendor(VendorError(241)))"))

Stack trace terminates in unsymbolicated BitwardenShared / BitwardenKit /
SwiftUI / libswift_Concurrency frames.

Bitwarden Autofill 2026.7.0 (3402)

Bitwarden Error Error Date: 2026-07-27T16:29:19-07:00 Bitwarden Autofill 2026.7.0 (3402) Bundle: com.8bit.bitwarden.autofill Device: iPhone18,3 System: iOS 26.5.1 SDK: 3.0.0-6848-159aed9 Server: 2026.7.1 @ US Commit: bitwarden/ios/release/2026.7-rc53@e9514dc0f85092ef3cf2a2ccbe07dc5a4f661b0c Build Source: bitwarden/ios/actions/runs/29108837579/attempts/1 User ID: xxxxxxxxxredacted BitwardenSdk.BitwardenError.MakeCredential(BitwardenSdk.MakeCredentialError.Other(message: "make_credential error: Ctap2(Vendor(VendorError(241)))")) BitwardenSdk.BitwardenError.MakeCredential(BitwardenSdk.MakeCredentialError.Other(message: "make_credential error: Ctap2(Vendor(VendorError(241)))")) Stack trace: 0 BitwardenKit 0x00000001028f7954 __swift_memcpy0_1 + 31596 1 BitwardenShared 0x0000000105394335 objectdestroyTm + 957 2 BitwardenKit 0x00000001028acc39 __swift_mutable_project_boxed_opaque_existential_1 + 1989 3 BitwardenKit 0x00000001028a568d __swift_instantiateGenericMetadata + 2773 4 BitwardenKit 0x00000001028ad01d __swift_mutable_project_boxed_opaque_existential_1 + 2985 5 BitwardenShared 0x0000000105919c21 __swift_memcpy225_8 + 67853 6 BitwardenShared 0x0000000105912dfd __swift_memcpy225_8 + 39657 7 BitwardenShared 0x00000001059112ad __swift_memcpy225_8 + 32665 8 BitwardenKit 0x00000001028a5355 __swift_instantiateGenericMetadata + 1949 9 BitwardenKit 0x00000001028aca01 __swift_mutable_project_boxed_opaque_existential_1 + 1421 10 BitwardenKit 0x00000001028a568d __swift_instantiateGenericMetadata + 2773 11 BitwardenKit 0x0000000102982e75 objectdestroy.13Tm + 905 12 BitwardenShared 0x0000000105922ca1 objectdestroy.3Tm + 26417 13 BitwardenShared 0x0000000105394335 objectdestroyTm + 957 14 SwiftUI 0x00000001944cb281 A5CD9C54-E40A-3736-8366-4CE5DAB770D5 + 1036929 15 SwiftUI 0x00000001944cb281 A5CD9C54-E40A-3736-8366-4CE5DAB770D5 + 1036929 16 SwiftUI 0x00000001944cb27d A5CD9C54-E40A-3736-8366-4CE5DAB770D5 + 1036925 17 SwiftUI 0x00000001944cb281 A5CD9C54-E40A-3736-8366-4CE5DAB770D5 + 1036929 18 libswift_Concurrency.dylib 0x00000001894a1385 70E4FD9F-9BAA-38D3-9127-4B5194AD41EB + 21381 Binary images: AuthenticatorBridgeKit: 0x0000000102b38000 BitwardenAutoFillExtension: 0x0000000102810000 BitwardenKit: 0x0000000102898000 BitwardenResources: 0x0000000106080000 BitwardenSdk_464161978EAC5FCE_PackageProduct: 0x0000000102d18000 BitwardenShared: 0x0000000105384000

...

Screenshots or Videos

No response

Additional Context

  • 241 (0xF1) falls in the CTAP2 vendor-specific error range, which suggests
    an internal SDK failure during credential creation rather than a
    protocol-level rejection from the relying party.

  • The same registration also fails from macOS: Chrome and Firefox both
    return GitHub's "Passkey registration failed / This device cannot be
    registered." In Chrome the extension does present the "Save passkey"
    picker and the item can be selected, but registration still fails.

  • The GitHub account already has one platform passkey registered
    (Face ID / iCloud Keychain) plus authenticator-app 2FA. Possibly relevant
    if excludeCredentials handling is involved, though the vendor error code
    suggests the failure happens before that point.

  • No security keys are registered on the account.

  • A previously orphaned passkey was deleted from the vault item before
    these attempts.

Build Version

2026.07.0 3402

What server are you connecting to?

US

Self-host Server Version

No response

Environment Details

No response

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    app:password-managerBitwarden Password Manager app contextbugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions