megachangelog
Feature2026.9.0

CLI v2026.9.0 Release

Bitwarden CLI v2026.9.0 includes major feature additions such as SSH key autofill, vault redesign components, desktop FIDO2 user verification, browser health reports, and numerous UI improvements across web, browser, and desktop platforms. This release also brings billing terminology updates, PAM UI enhancements, import service extensions, and improved policy management features.

What's Changed

πŸ’™ Community Highlight

  • [PM-29036] fix(desktop): set desktopName for Wayland app_id to display correct icon by @thisisryanswift in #17764
  • [PM-38964] Remove obsolete LockScreen config from AppX manifest by @hammadxcm in #21229

:shipit: Feature Development

❗ Breaking Changes

πŸ› Bug fixes

  • [PM-8711] inconsistent casing between vault management api feedback and api docs by @JaredScar in #22232
  • [PM-11607] AC Event Log Buttons vertical alignment by @JaredScar in #22222
  • [PM-41559] [PM-41539] Recognize both Keeper SSO callback URL forms by @detunized in #22265
  • [PM-41691] Fix issue where edit item, hidden passwords wipes password, TOTP by @JaredScar in #22287
  • [PM-40258]: AuthRequestResponse refactor by @enmande in #22182
  • [PM-41854] fix: skip collections coachmark step for users without collections by @gbubemismith in #22376
  • Auth/ PM-41535 & PM-41897 - Open Org Invite Link - Update accept-error classifier for new SDK API error format by @JaredSnider-Bitwarden in #22393
  • Auth & KM / PM-41538 - Organization Invite Acceptance - Show invite accepted toast on TDE and KC SSO JIT flows by @JaredSnider-Bitwarden in #22394
  • [PM-41880] Quick fix for edit members dialog dependencies by @ttalty in #22407
  • fix(biometrics): change the biometric persistent encryption migration to handle the case where the aes-cbc-hmac key has a key id by @quexten in #22336
  • [PM-41829] Login Buttons Overlap Owner and Name Elements When Resizing Browser by @jengstrom-bw in #22418
  • Auth/PM-41978 - Open Org Invite Acceptance - update error copy for vfo1-foundation vault terminology change by @JaredSnider-Bitwarden in #22485
  • [PM-42166] Update member access report terminology by @JaredScar in #22522
  • [PM-42006] Self Host Premium Upgrade Copy Change by @JaredScar in #22493
  • [PM-41830] Shrinking Window Causes Buttons to Overlap Owner Element and Pushes More Options Menu Offscreen by @jengstrom-bw in #22419
  • [PM-41979] [PM-41899] [VULN-735] Validate profileId in Chromium importer by @detunized in #22432
  • Auth / PM-32421 - CLI - Login Command - Validate SSO account has a CLI-supported decryption path by @JaredSnider-Bitwarden in #22411
  • [PM-42235] Browser: Health at risk category empty state fixes by @lastbestdev in #22538
  • [PM-42239] Access Intelligence: Match v2 request password change button behavior to v1 by @lastbestdev in #22537
  • [PM-40350] Revert early return introduced in #21836 by @harr1424 in #22453
  • [PM-41905] Add Autotype MVP Window Validity Check by @coltonhurst in #22398
  • Revert "[PM-42239] Access Intelligence: Match v2 request password change button behavior to v1" by @lastbestdev in #22590
  • fix(key-connector): fix sdk-based unlock with key-connector on jit provisioning by @quexten in #22545
  • [PM-40120] Prompt CLI user for divergent domain access by @harr1424 in #22216
  • [PM-27010] fix: Resolve tax ID type from country and value, with format guidance by @amorask-bitwarden in #22388
  • [PM-42239] Access Intelligence v2 match request password change button behavior to v1 by @lastbestdev in #22641
  • webauthn: Pass PRF input on unlock passkey creation by @iinuwa in #21998
  • fix(updater): disable AppImage in-app auto-update by @addisonbeck in #22689
  • [PM-42470] Add cooldown to user key id backfill migration by @quexten in #22682
  • [PM-42414] Browser health UI follow up tweaks by @lastbestdev in #22678
  • fix(key-management): Clear key id backfill cooldown on logout by @quexten in #22698
  • [PM-41333] Remove IPC fingerprint and client key half by @quexten in #22645
  • [PM-42443] Include member items when fetching org ciphers in Access Intelligence by @Banrion in #22749
  • [PM-36960] fix: TOTP not copied to clipboard on stripe settings in Chrome by @bensbits91 in #20780
  • [PM-42465] Fix batch bar Clear not unchecking vault by @nick-livefront in #22706
  • [SRE-2516] Do not event upload request bodies of unlimited size by @MGibson1 in #15190
  • [PM-42631] Fix flaky storybook tests for shared folder card grid by @jengstrom-bw in #22760
  • [PM-42468] fix: Prevent crash from null active account in cipher row menu services by @nick-livefront in #22776
  • [PM-42203] Gate basic auth listeners behind a feature flag by @jprusik in #22612
  • [PM-42394] Show Vault and Shared Folders filter chips when vault is empty by @nick-livefront in #22761
  • Vault Storybook - Remove org notification banner feature flag reference by @nick-livefront in #22833
  • SSH Agent import: log on failure by @neuronull in #22676
  • [PM-41487] Reuse a freshly built lunr index instead of rebuilding after the lock by @shane-melton in #22227
  • feat(salt): [PM-27060] - Use SDK salt for MP Login by @Patrick-Pimentel-Bitwarden in #22381
  • [PM-42932] fix: normalize null hostname from getUriHostname to prevent search crash by @nick-livefront in #22882
  • fix(login-decryption-options): [PM-42457] -… by @Patrick-Pimentel-Bitwarden in #22649
  • Fix: SSH Agent sign approval requests for non-forwarded hosts by @neuronull in #22836
  • [PM-36618] Web: Fix end icon in export button on events pages by @lastbestdev in #22788
  • Fix/autofill toplayer listener dedup by @blackwood in #21511
  • fix(snap): add hardware-observe plug for FIDO HID enumeration by @addisonbeck in #22885
  • Fix: SSH sign request handling of non-active account by @neuronull in #22856
  • [PM-42912] Filter Icons by @nick-livefront in #22920
  • [PM-42903] Browser: Add virtual scrolling to health at risk category view by @lastbestdev in #22850
  • Rolled back changes for set-password by @Patrick-Pimentel-Bitwarden in #22900
  • [PM-42913] Reuse the health scan when returning to the overview by @Banrion in #22927
  • [PM-13373] Fix Enpass CSV Importer by @harr1424 in #22561
  • [PM-42994] Shared folders grid and Items table needs standard spacing by @jengstrom-bw in #22933
  • [PM-42851] Fail the vault health scan when the exposed-password check errors by @AlexRubik in #22848
  • [PM-42525] Vault side nav query param preservation by @shane-melton in #22932
  • [PM-42970] Fix folder filter restore race condition by @nick-livefront in #23013
  • [PM-43064] Look up fill assist targeting rules with frame URL instead of tab URL by @jprusik in #22990
  • [PM-42991] After selecting a pagination size option the dropdown selection and pagination is no longer clickable by @jengstrom-bw in #22942
  • [PM-42937] Clear vault filters when active account changes by @nick-livefront in #22904
  • [PM-42854] bugs with policies drawers for RC by @JaredScar in #23044

βš™οΈ Maintenance

  • chore: remove grype scanning by @sognefej in #22289
  • [chore] Add CODEOWNERS entry for the licensed browser DIRT directory by @AlexRubik in #22325
  • Autosync Crowdin Translations for web by @bw-ghapp[bot] in #22302
  • Autosync Crowdin Translations for desktop by @bw-ghapp[bot] in #22300
  • Autosync Crowdin Translations for browser by @bw-ghapp[bot] in #22301
  • Autosync Crowdin Translations for web by @bw-ghapp[bot] in #22340
  • Autosync Crowdin Translations for desktop by @bw-ghapp[bot] in #22338
  • Autosync Crowdin Translations for browser by @bw-ghapp[bot] in #22339
  • [PM-38767] Adopt cargo-run-bin for binary tool version pinning in desktop_native by @coroiu in #21169
  • refactor(crypto): split out legacy compat key service by @quexten in #22319
  • Add PAM Allium specification by @abergs in #22373
  • [PM-41874] refactor(crypto): move shared client wiring callers to @bitwarden/legacy-crypto by @quexten in #22368
  • [PM-41874] refactor(crypto): move dirt callers to @bitwarden/legacy-crypto by @quexten in #22366
  • [PM-41874] refactor(crypto): move admin-console callers to @bitwarden/legacy-crypto by @quexten in #22367
  • [PM-41874] refactor(crypto): move desktop-native callers to @bitwarden/legacy-crypto by @quexten in #22372
  • refactor(auth): unlock via UnlockService in login strategies by @quexten in #22354
  • [PM-36409] Enhance type safety across various components by @JaredScar in #22391
  • Remove unused loginApprovalModelRef by @djsmith85 in #22405
  • [PM-41874] refactor(crypto): move key-management callers to @bitwarden/legacy-crypto by @quexten in #22362
  • Autosync Crowdin Translations for browser by @bw-ghapp[bot] in #22423
  • Autosync Crowdin Translations for desktop by @bw-ghapp[bot] in #22422
  • Autosync Crowdin Translations for web by @bw-ghapp[bot] in #22424
  • [PM-35785] Fix SDK breaking change: missing asUuid by @eliykat in #22392
  • refactor(key-management-ui): stop re-setting the user key after unlock by @quexten in #22355
  • [BRE-2116] Bump actions/checkout to v7.0.1 + add bypass flag in client build workflows by @brandonbiete in #22385
  • Fix: breaking SDK change - use asUuid in tests by @eliykat in #22443
  • widen engines pin to include Node 24 by @addisonbeck in #22480
  • [PM-38455] Remove unused premiumRequired from app.components by @djsmith85 in #22403
  • [PM-41874] refactor(crypto): move tools callers to @bitwarden/legacy-crypto by @quexten in #22364
  • [PM-41874] refactor(crypto): move secrets-manager callers to @bitwarden/legacy-crypto by @quexten in #22370
  • [PM-41874] refactor(crypto): move platform callers to @bitwarden/legacy-crypto by @quexten in #22369
  • [PM-41874] refactor(crypto): move vault callers to @bitwarden/legacy-crypto by @quexten in #22365
  • [PM-41684] Remove unused Autotype MVP IPC channels by @coltonhurst in #22285
  • [PM-41801] Switch to using policyAppliesToUser$ for the Autotype Default Policy by @coltonhurst in #22322
  • [PM-42196] Update Native Passkey Ownership by @coltonhurst in #22529
  • refactor(auth): unlock via UnlockService when setting an initial password by @quexten in #22356
  • [PM-41874] refactor(crypto): move billing callers to @bitwarden/legacy-crypto by @quexten in #22371
  • [PM-41874] refactor(crypto): move auth callers to @bitwarden/legacy-crypto by @quexten in #22363
  • refactor(key-management): read the user key via userKey$ by @quexten in #22353
  • refactor(unlock): replace UserAutoUnlockKeyService with UnlockService by @quexten in #22359
  • refactor(key-management): unlock via UnlockService in key connector conversion by @quexten in #22358
  • [PM-41874] Remove legacy-crypto shims (platform) by @quexten in #22579
  • chore(lock): Move LockService into libs/unlock and add lock/unlock source tracking by @quexten in #22539
  • [PM-41874] Remove legacy-crypto shims (key management) by @quexten in #22578
  • ci: Beta Appx manifest changes by @iinuwa in #22564
  • Autosync Crowdin Translations for desktop by @bw-ghapp[bot] in #22568
  • Autosync Crowdin Translations for browser by @bw-ghapp[bot] in #22569
  • refactor(auth): unlock via UnlockService during TDE JIT registration by @quexten in #22357
  • Autosync Crowdin Translations for web by @bw-ghapp[bot] in #22570
  • Autosync Crowdin Translations for web by @bw-ghapp[bot] in #22607
  • refactor(crypto): drop electron key service by @quexten in #22601
  • Sign Windows Beta Appx in CI by @iinuwa in #22563
  • [PM-38187] Improve isSnapStore detection by @djsmith85 in #21195
  • Bump client version(s) by @github-actions[bot] in #22608
  • tests: add test for device trust / shared unlock / unlock ordering by @quexten in #22600
  • [BRE-2208] Adding an MS store check for beta releases to fail-fast if beta version > 1 by @pixman20 in #22583
  • refactor(unlock): extract AutoUnlockService by @quexten in #22602
  • Autosync Crowdin Translations for desktop by @bw-ghapp[bot] in #22605
  • Autosync Crowdin Translations for browser by @bw-ghapp[bot] in #22606
  • fix build failures on main caused by out-of-date import by @audreyality in #22666
  • Auth/PM-41523 - Organization Invite Service - Introduce NoOp and make DI match client support for org invites by @JaredSnider-Bitwarden in #22494
  • key service flaky cipherDecryptionKeys$ tests by @mzieniukbw in #22680
  • chore(shared-unlock): update to new shared unlock implementation by @quexten in #22540
  • [PM-40024] Remove obsolete keys used in messages.json for old components since we removed V2 components already by @JaredScar in #22617
  • ci: Fix not reporting test results on push and workflow_dispatch by @eliykat in #22679
  • Fix IPC doc comment by @coltonhurst in #22754
  • [BRE-2208] Turning off auto bump for beta releases by @pixman20 in #22582
  • [PM-33422] refactor: remove pm-31948-org-user-notification-banner feature flag by @jaasen-livefront in #22719
  • [BRE-2166] Add metadata to container images by @vgrassia in #22804
  • [PM-42443] Test cases for including My Items in Access Intelligence by @Banrion in #22755
  • [BRE-2219] Replace 'checksum' usage with 'Get-FileHash' cmdlet for Desktop/CLI builds by @vgrassia in #22825
  • [PM-35599] Update Password Request Models (Auth) by @rr-bw in #20643
  • [PM-35601] Update Password Request Models (Admin Console) by @rr-bw in #20664
  • refactor(km): simplify process reload service by @quexten in #22646
  • disabling failing key service test by @mzieniukbw in #22875
  • chore(km): Add browser and CLI process reload to codecov component by @quexten in #22869
  • ci: Copy macOS autofill extension in after-pack to avoid re-signing by @iinuwa in #22621
  • [PM-39460] Add v2_encrypted_migrations_grace_period_start to state bridge by @eligrubb in #22653
  • Mute flaky chip-filter test by @vleague2 in #22925
  • [BRE-2230] fix(ci): derive web build git hash from checked-out HEAD by @aj-bw in #22881
  • Autosync Crowdin Translations for web by @bw-ghapp[bot] in #22770
  • Autosync Crowdin Translations for desktop by @bw-ghapp[bot] in #22768
  • Autosync Crowdin Translations for browser by @bw-ghapp[bot] in #22769
  • Autosync Crowdin Translations for web by @bw-ghapp[bot] in #22984
  • Autosync Crowdin Translations for browser by @bw-ghapp[bot] in #22983
  • Autosync Crowdin Translations for desktop by @bw-ghapp[bot] in #22982
  • [PM-43089] Browser: Update Health intro CTA images by @lastbestdev in #23015
  • Bump client version(s) by @github-actions[bot] in #23038

πŸ“¦ Dependency Updates

  • Update sdk-internal to 0.2.0-main.956 by @bw-ghapp[bot] in #22146
  • [deps] Platform: Update @types/node to v22.20.1 by @renovate[bot] in #22218
  • Update sdk-internal to 0.2.0-main.967 by @bw-ghapp[bot] in #22326
  • [deps]: Update dtolnay/rust-toolchain digest to 4360b52 by @renovate[bot] in #22459
  • [deps]: Update actions/stale action to v11 by @renovate[bot] in #22475
  • Update sdk-internal to 0.2.0-main.970 by @bw-ghapp[bot] in #22442
  • Update sdk-internal to 0.2.0-main.971 by @bw-ghapp[bot] in #22512
  • [deps] Desktop Native: Update Rust crate serial_test to v4 by @renovate[bot] in #22469
  • [deps] Platform: Update Rust crate serde_with to v3.22.0 by @renovate[bot] in #22462
  • [deps]: Update Rust to v1.97.1 by @renovate[bot] in #22467
  • Update sdk-internal to 0.2.0-main.978 by @bw-ghapp[bot] in #22518
  • Update sdk-internal to 0.2.0-main.979 by @bw-ghapp[bot] in #22581
  • [deps] AC: Update core-js to v3.50.0 by @renovate[bot] in #22460
  • Update sdk-internal to 0.2.0-main.983 by @bw-ghapp[bot] in #22592
  • [deps] Autofill: Update wait-on to v9.1.0 by @renovate[bot] in #22461
  • Address RUSTSEC-2026-0258 by @coltonhurst in #22514
  • [deps] Platform: Update postcss to v8.5.23 [SECURITY] by @renovate[bot] in #22324
  • [deps] Platform: Update nx to v22.7.7 [SECURITY] by @renovate[bot] in #22693
  • Automated update from source run 32391882332 by @bre-deploy[bot] in #22558
  • Update sdk-internal to 0.2.0-main.1001 by @bw-ghapp[bot] in #22651
  • Update sdk-internal to 0.2.0-main.1008 by @bw-ghapp[bot] in #22841
  • Update sdk-internal to 0.2.0-main.1011 by @bw-ghapp[bot] in #22892
  • Update sdk-internal to 0.2.0-main.1012 by @bw-ghapp[bot] in #22922
  • Update sdk-internal to 0.2.0-main.1013 by @bw-ghapp[bot] in #22985

🎨 Other

New Contributors

Full Changelog: cli-v2026.8.0...cli-v2026.9.0

cliautofillvaultsecurityuibrowser

Source: original entry β†—