Disable passkey autofill popup in browser VMs#170
Conversation
The WebAuthn Conditional UI ("Use passkey from another device") overlay
appears on login form inputs and blocks CUA click actions during managed
auth flows. Disable it via the WebAuthenticationConditionalUI feature flag.
- Headless: added to the existing --disable-features list in wrapper.sh
- Headful: added to chromium-launcher hardcoded args (headful doesn't
set CHROMIUM_FLAGS, so this is the only --disable-features it gets)
Made-with: Cursor
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
| "--user-data-dir=/home/kernel/user-data", | ||
| "--password-store=basic", | ||
| "--no-first-run", | ||
| "--disable-features=WebAuthenticationConditionalUI", |
There was a problem hiding this comment.
Hardcoded --disable-features silently overridden by later flag
Medium Severity
Chromium uses last-one-wins semantics for duplicate --disable-features flags. The hardcoded --disable-features=WebAuthenticationConditionalUI in chromiumArgs is placed before final is appended (line 70), so any --disable-features entry in final silently overrides it. In headless mode this happens every time — wrapper.sh's comprehensive --disable-features list lands in final and replaces the hardcoded one. It works today only because wrapper.sh independently added WebAuthenticationConditionalUI. If the two lists ever diverge, or if headful runtime flags introduce a --disable-features, the hardcoded flag labeled "flags we send no matter what" will have no effect.
Additional Locations (1)
rgarcia
left a comment
There was a problem hiding this comment.
I checked the Chromium source (v145.0.7632.116) and WebAuthenticationConditionalUI no longer exists as a feature flag. It was present in earlier Chromium versions when conditional mediation was experimental, but it has since graduated and been removed. The only trace of it is in tools/metrics/histograms/enums.xml as a historical record.
In the current source, IsConditionalMediationAvailable in content/browser/webauth/authenticator_common_impl.cc unconditionally returns true:
// Desktop Chrome can always show GPM passkeys through conditional mediation.
std::move(callback).Run(true);There's no feature flag gating this anymore, so --disable-features=WebAuthenticationConditionalUI will be silently ignored by Chrome.
There's also no enterprise policy to disable this (I checked the policy templates). Suppressing the passkey conditional UI on our Chromium build would require a source-level change — either making IsConditionalMediationAvailable return false, or gating it behind a new flag/policy.
Additionally, for headless pool browsers, the API sets CHROMIUM_FLAGS which overrides the wrapper.sh defaults, so the wrapper.sh change here wouldn't take effect in that path anyway. If we do find a working flag, it should go in browser_pool_activities.go in the API where the other --disable-features entries live.


Summary
WebAuthenticationConditionalUIfeature flag) which shows "Use passkey from another device" overlays on login form inputs--disable-featureslist inwrapper.shchromium-launcherhardcoded args (headful doesn't setCHROMIUM_FLAGS, so this is the only--disable-featuresit gets)Follows the same pattern as the existing
PasswordManagerEnabled: false,AutofillAddressEnabled: false, andAutofillCreditCardEnabled: falsepolicies inpolicy.json— this just covers the passkey variant that wasn't disabled yet.Test plan
Made with Cursor
Note
Medium Risk
Adds a Chromium feature-disable flag that changes WebAuthn/passkey UI behavior; this could impact sites that rely on conditional passkey prompts even though it reduces automation-blocking overlays.
Overview
Disables Chrome’s WebAuthn Conditional UI (the passkey autofill/"use passkey from another device" overlay) across browser VMs.
Headless images now include
WebAuthenticationConditionalUIin the existing--disable-featureslist inwrapper.sh, and headful launches add--disable-features=WebAuthenticationConditionalUIas a hardcoded arg inchromium-launcherso the popup can’t block managed auth flows.Written by Cursor Bugbot for commit 792212e. This will update automatically on new commits. Configure here.