Can an automated browser sign in with a passkey?

How an automated browser signs in with a passkey: what real machines answer, what Chrome's virtual authenticator gives away, and why the time has to vary.

Davide Grasböck · Founder, Scalebrowser

Published Oct 12, 2026 · 6 min read

Short answer

An automated browser can sign in with a passkey when it answers like a real machine: on Windows the platform authenticator is Windows Hello, which Microsoft says more than 99 percent of people signing in to Windows with a Microsoft account use. Chrome's virtual authenticator, built for testing, answers with a test model id, a counter that starts at 1 and user presence in no time. Our own bench found a subtler tell on 14 September 2026: the first ceremony took 5508 and 5519 milliseconds in two starts of one profile. We removed it before that build shipped.
5508 ms, first ceremony, beside a USB security key

More sign-ups now end at a passkey prompt, and an account created with a passkey cannot be reached without it. Automation tools meet that prompt with a virtual authenticator made for tests, or with advice to switch passkeys off. Both leave traces a site can read in the ordinary ceremony. We set what Chrome's test authenticator hands a site next to what a Windows machine hands it, and report the one timing error our own bench found in September 2026.

What is a passkey for an automated browser?

A passkey is a WebAuthn credential: a private key that stays with the authenticator and a public key the site stores in place of a password. Three parts decide whether an automated browser can use one.

  • The platform authenticator. The W3C's WebAuthn Level 3 specification calls the authenticators "that are part of the client device" platform authenticators. On Windows that is Windows Hello.
  • The credential. A key pair scoped to one site, carrying a model id for the authenticator and a signature counter the site can watch.
  • The ceremony. Registration creates the credential and sign-in proves it; both wait for a person to confirm at the sensor.

An automated browser has no person at the sensor. It still has to answer each of these parts the way a machine with a person in front of it would, and it has to keep the private key after the browser closes. Other prompts a browser draws next to the page are covered in permission prompts in automation.

Which answer do real machines give?

Real Windows machines mostly answer that they have a platform authenticator: Microsoft reported on 1 May 2025 that "more than 99% of people who sign into their Windows devices with their Microsoft account do so using Windows Hello". A page asks with isUserVerifyingPlatformAuthenticatorAvailable(), which under the specification resolves "with the value of true" when the client discovers any user-verifying platform authenticator.

MachineWhat the method returnsWhy
Windows 11 with Windows Hello set uptrueHello is the operating system's own authenticator; Windows 11 requires TPM 2.0
A machine whose operating system offers no user-verifying authenticatorfalsenothing on the device can verify the user

No primary source publishes the share of all machines that answer true. Microsoft's figure covers people with a Microsoft account on Windows, and it is the closest public number. It is enough to show which answer is ordinary for a Windows desktop: a profile that claims Windows and answers false sits in the smaller group, and a site can read that before any ceremony starts.

Why does a virtual authenticator give automation away?

A virtual authenticator gives automation away because it was built to test WebAuthn, and several fields it hands the site say so. Chrome's DevTools Protocol has an experimental WebAuthn domain that "allows configuring virtual authenticators to test the WebAuthn API". Its enable command starts "intercepting credential storage and retrieval with a virtual authenticator", and the options of addVirtualAuthenticator decide what the page then sees.

What the site readsChrome's virtual authenticator by defaultWhere it is written
Model id (AAGUID)01020304-0506-0708-0102-030405060708Chromium source
Is that id a known authenticatorno, absent from all 59 entries of the list on 29 September 2026, which names 3 for Windows Hellopasskey AAGUID list
Signature counter at registration1Chromium source
User presence"tests of user presence will succeed immediately"DevTools Protocol
User verificationfails unless set, default falseDevTools Protocol
Source: Chromium source device/fido, Chrome DevTools Protocol WebAuthn domain and the community passkey AAGUID list, read 27 September 2026

Each of these values arrives with the ordinary ceremony, so a site pays nothing extra to read them. In our own measurement on stock Chromium, the authenticator also disappeared with the DevTools session that created it, which means a tool that opens a new session per action loses its sensor between two actions. Browserbase's authentication guide takes the opposite route and, as of September 2026, recommends disabling passkeys in automated sessions, which leaves the account with whatever factor remains. Where the passkey sits among the other walls of a sign-in is laid out in agent sign-in.

What does an automated passkey have to get right?

An automated passkey has to get three things right beyond the model id: the time a person takes, the counter over many sign-ins, and the key's survival when the browser ends badly.

  • The time. A person needs seconds to reach a sensor and never takes the same number of milliseconds twice.
  • The counter. Every use raises the signature counter; a counter frozen at zero reads as a synced passkey rather than one bound to a device.
  • The survival. A browser that crashes or is closed by hand must not take the private key with it.

The timing result went against us. On 14 September 2026 our engine bench found that the first passkey registration of one profile took almost the same time in two separate starts, about 10 milliseconds apart, and a person does not repeat a deliberation that closely. The delay was tied to the profile's identity instead of being drawn fresh for each ceremony. The corrected build, measured on 16 September 2026, is the one that shipped.

BuildFirst registration, start 1First registration, start 2Ceremonies repeating within 32 ms across starts
14 September 20265508 ms5519 ms5 of 5
16 September 20265500 ms4841 ms0 of 10
Source: Scalebrowser engine bench, one profile started twice, passkey ceremonies timed in the page, builds of 14 and 16 September 2026

Survival is tested on a public page. The passkey acceptance bench registers a key on webauthn.io with the Windows engine, kills the engine, starts it again, signs in and then retires the key through the agent; it passed 8 of 8 checks on 14 and 18 August 2026. The passkeys page of the documentation describes where the key lives between runs and why a missing key is recorded with a reason instead of deleted.

Scalebrowser

Scalebrowser gives each agent its own isolated browser with a persistent identity, on your own machine, so a run stays signed in, handles the captcha and finishes without anyone watching it.

See how Scalebrowser does it

How is a second factor handled without passkeys?

Without a passkey the second factor is usually a six-digit code, and that code can be computed inside the profile. Under RFC 6238 it changes every 30 seconds, so it is derived from the stored setup key at the moment the code field needs it, and the agent never reads the digits. The steps are in TOTP for agents.

Run it on your own machine

Seven days to try it with your own agents on your own sites. Starting the trial needs a card.

Written by

Davide Grasböck

Founder, Scalebrowser

Builds Scalebrowser, the browser layer for AI agents that runs on your own machine. Measures every change a web page could observe against a real browser before it ships, and writes up the ones that turned out wrong.

All articles by Davide Grasböck