Add QR code login based on the FIDO CTAP 2.2 standard

The process is roughly as follows: the browser initiates FIDO2 authentication, the Bitwarden browser extension adds a new feature (QR code), an Android/Apple phone is used to scan the code, and after the interaction is completed via cloud + Bluetooth, FIDO BLE is used to connect to the passkey to complete authentication.

Specifically, it is based on the FIDO CTAP 2.2 standard, with a Tunnel Server ID greater than 255, allowing dynamic tunnel domains.

This feature relies on Bluetooth and the network. It is suggested that the browser extension design distinguishes between scenarios with no account login and account login, to differentiate between home and public settings.

The proposal aims to bypass Microsoft’s tedious menu selections and is intended to be usable on other systems as well.

So, such a feature would involve the BW browser extension, which “intercepted” the passkey request and presents a QR code, that can be scanned with the mobile app?

First, it’s already possible with the mobile app to scan passkey QR codes – and isn’t a system that’s independent from the existence of the BW browser extension even more flexible? Especially since
:

Second, when you have the BW browser extension already in use on a given system, wouldn’t it be much easier just to use the BW extension directly for passkey login?

Ah, could you clarify if you (still) mean “login to Bitwarden (e.g. the extension)” or logging in to other services using passkeys stored in Bitwarden?

I’m confused. What does “scenarios with no account login” mean if you’re talking about an option for “login to your Bitwarden account”?

PS: And if you mean “login to the BW extension”, I don’t see how this would be less tedious than the existing QR code login / cross-device authentication mechanism.

This feature relies on the BW browser extension, which “intercepts” passkey requests and displays a QR code. Note that this uses a protocol starting with “fido:”, which standard Google scanning apps can recognize. It does not involve the BW mobile app at this stage.

This QR code represents FIDO BLE. You can think of it as a “relay station” that transmits requests via BLE (Bluetooth Low Energy). The interaction can then be completed using the BW mobile app or even a USB/NFC security key. For now, this feature can be referred to as “FIDO Bluetooth.”

Use Cases:

  • Public Computers: When using devices in public places—such as libraries, internet cafes, or a friend’s house—I don’t need to manually enter my username and password. I can simply use “FIDO Bluetooth.”
  • At Home: When I am logged into Bitwarden on my own computer and initiate FIDO2 verification, I have the flexibility to choose between the BW extension, a physical security key, or this new “FIDO Bluetooth” option.

Additional Note:
I haven’t been able to find this functionality on Linux yet. While Windows 10/11 currently has a version of this implementation, the menu navigation is extremely complex. I hope this new feature will provide a faster and more seamless user experience.

Help me understand the Public Computers scenario 


  1. You are using a public/untrusted computer that has the Bitwarden extension installed on it.
  2. The BW extension on this untrusted computer displays a QR code that you scan with your trusted phone.
  3. After which, your vault is downloaded and unlocked on the untrusted computer.
  4. So that you can access your bank password on an untrusted computer.
  5. And login to your bank account on said untrusted computer.

Unless I misunderstand , the scenario raises many red flags for me.

As for the At Home scenario, how would scanning a QR code with your phone be more convenient than the existing “Login with Device”? If nothing else, login with device does not require removing my phone from the charging stand.

1 Like

And



 all this is already possible. – The existing QR code / CDA mechanism already only works with that “Bluetooth connection”.

Let me try to explain:

Starting from the third step, it is not about downloading Bitwarden data. Instead, it is a Bluetooth connection between the phone and the computer; the phone will prompt to use Bitwarden/a USB security key.

There is a misunderstanding—here, Bluetooth can be viewed as a USB cable, and the phone as a physical security key, which might help with understanding. FIDO Alliance members have previously had similar hardware products that use Bluetooth.

As for the situation at home, it is simply an alternative because Microsoft’s built-in menus for this feature are complex; it would be better if there were “one-click” direct access. Furthermore, this feature can provide a consistent, fast, and secure experience across various operating systems; at least Linux is suitable for adding this.

Integrating this into the Bitwarden browser extension would provide a better experience, allowing Windows 11 and Linux to have “one-click” direct access. This would be a massive step forward. Although Windows already has this feature, the experience is mediocre; I currently need to navigate through three additional menus.

Furthermore, I want to emphasize that the reason I am submitting this feature request is that if the Bitwarden mobile app can natively parse “fido:” via this QR code, then devices without GMS, custom ROMs, or those running Android versions below 14 could all enjoy a Passkey experience. The FIDO 2.2 documentation suggests that this is a possibility.

So,

  1. You are using a public/untrusted computer that has the Bitwarden extension installed on it.
  2. The BW extension on this untrusted computer displays a QR code that you scan with your trusted phone.
  3. The QR code is used to establish and authenticate a Bluetooth connection over which the two Bitwardens can securely communicate. After which, your vault is downloaded and unlocked on the untrusted computer
  4. The untrusted computer proxies a passkey authentication ceremony between the website and your trusted phone. . So that you can access your bank password on an untrusted computer.
  5. And login to your bank account on said untrusted computer.

Still have a very basic problem believing that public computers would have the Bitwarden extension preinstalled, that I can trust the extension’s pedigree, and that I can trust the public computer to be free of malware (e.g. a session hijacker or an AITM). In this scenario, I would only use the library computer to access public resources and would do my banking via my phone’s web browser.

For login with device, it is 4 clicks, and one smile-for-the-camera.

  1. At the login page, my email address is prefilled in, so I just click “continue”.

  2. On the password page, I click login with device.

  3. My phone gets a notification stating “login requested
confirm login attempt for”. I click on it, which opens bitwarden, which I unlock with FaceID.

  4. Bitwarden displays a bit of confirmation information, to which I click “Confirm Login”

  5. Back on the computer, I am logged in (well, I would have been had I checked the "don’t prompt for MFA for 30 days)..

I don’t see how opening/unlocking Bitwarden (or my camera app) to scan a QR code would simplify this.

You might check out this FR.

That’s not my experience. On Windows 11, when I use “Login with passkey” for the browser extension, it’s only two clicks from the extension window → click on “Login with passkey” → click on “Android/iOS device” on the Windows Hello/Security window. Then, I already get the QR code


So at best, you could remove one click with your suggestion. (if you could click “QR code” in the extension window directly)

I tried to find this, but wasn’t successful. Could you give us the exact section(s) that supposedly suggest that?

It seems I misremembered, I am very sorry.

According to the FIDO 2.2 Hybrid transports (11.5) specification, this can actually be nested within the application.


As for the purpose of my functional requirement submission, I hope that Bitwarden fully implements this feature to break the “ecosystem isolation” of operating systems.

Thank you for your reply. Regarding your statement, at least in the case of bank accounts, we should not log into them in public environments.

As for the new feature of the BW plugin for logging into accounts in public places, we might need to consider it on a case-by-case basis. Important accounts require caution, but we might need it for occasionally handling simple tasks.

After the feature is implemented, to give an example of my own: I have a virtual machine with Bluetooth functionality running Ubuntu 22.04, which I usually access via remote desktop. If I need to log into an account, previously I might have had to go to the machine to touch the Yubikey or pick up an NFC smart card. If the BW plugin implements this feature, after scanning the QR code with my Android phone, I can choose Bitwarden, Yubikey, or an NFC smart card—any of these methods—to perform the passkey authentication.

My first language is not English, so this might be a mistranslation or sound strange to you.

  • This is a consideration for users who possess the Bitwarden password manager, NFC smart cards, and USB security keys.
  • If I could directly click/select the QR code, scan it with my phone, and then choose Bitwarden or choose a security key.
  • If FIDO2 authentication is initiated under normal circumstances, one would select “physical security key” and then choose based on USB/NFC security keys or Apple/Android phones.
  • Normally, there is one extra step here; if the Bitwarden browser extension implements this directly, I can choose between the Bitwarden mobile app or a physical security key depending on the situation.

@DenBesten @Nail1684

I want to try to explain in a tangible way what anon14352156 tried to explain in the request for this feature

We will go to the website:

Then we will change the:
settings —> Advanced Settings —> Authentication Settings —> Authentication Hints —> select Hybrid

Then we will register and save the Pass Key in our Bitwarden account
Then after the Pass Key is saved we will authenticate and when the Bitwarden extension window opens we will close it (this simulates a place where we do not have the Bitwarden extension installed on the computer but we have the phone with Bitwarden app)
The Windows / operating system will pop up a QR for us that we can scan on our phone to finish the authentication
inside the QR there is a text start withFIDO:/<numbers>

The problem is that the Bitwarden app does not support opening FIDO:/ type links so the phone does not allow us to use the Bitwarden app to finish the Authenticate process.

So as long as the computer that the user wants to perform Authentication with Pass Key The Bitwarden extension is not installed so user remains outside his account.

@userpasskey Welcome to the forum!

I just did exactly what you suggested and stored the passkey as “Hybrid” in my BW vault. (Win 11 PC / Android 15 phone)

That doesn’t seem to be true. I used the system QR code scanner of my FP5 and it automatically invoked the BW mobile app (2026.4.0). So, I could / can authenticate on my desktop PC via the BW mobile app on my phone.

This is strange, I am also using application version 2026.4.0 with
Android 16 via LineageOS 23.2
and when I use the device’s built-in scanner (or any other scanner actually) it does not allow me to open BW mobile as a supporting application for reading a link of type
" FIDO:/ "

Can you provide more details about your operating system?
Also, could this be related to BW mobile → Autofill - Passkey management → Privileged apps
Is the app you scanned the barcode with listed there?

Fairphone 5 – stock ROM.

BW Android app details:

© Bitwarden Inc. 2015-2026
Version: 2026.4.0 (21434)
:mobile_phone: Fairphone FP5 :robot: 15@35 :package: prod
:brick: commit: bitwarden/android/release/2026.4-rc50@61955d7cbe1546a4c467284b4a5491d4f0e47afa
:laptop: build source: bitwarden/android/actions/runs/23952219208/attempts/1
:crab: SDK: 2.0.0-5676-14521973
:cloud_with_lightning: Server: 2026.4.2 @ EU

Nope. There, in “installed apps”, only browsers are listed. And “Google Play services”. – Did you deactivate Google Play Services on your phone?

BTW, to clarify: it’s indeed the systems QR code scanner that is accessible via the quick tiles that I used.

For now, this sounds more like an issue with your local configuration / setup.

If, however, you think this could be a bug, you can try to report it on GitHub (“New issue”).