Can't log in Bitwarden via the desktop app in Tails.
- Dominant language
- TypeScript
- Stars
- 13.8k
- Forks
- 2k
- Avg merge
- 3d 9h
- Merged PRs (30d)
- 397
Description
### Steps To Reproduce
1. Go to 'https://vault.bitwarden.com/download/?app=desktop&platform=linux' and download the app.
2. Make it executable.
3. Launch the app and enter the e-mail and password.
4. Click on 'Authenticate with Master Password'
### Expected Result
If the 2FA has been setup the app should ask for 2FA otherwise I should be able to login immediately.
### Actual Result
I get the message "Unexpected error: Failed to fetch."
### Screenshots or Videos

### Additional Context
```
sep 15 20:20:36 amnesia org.gnome.Nautilus[19377]: (node:19377) DeprecationWarning: file property is deprecated and will be removed in v5.
sep 15 20:20:36 amnesia org.gnome.Nautilus[19377]: (Use `bitwarden --trace-deprecation ...` to show where the warning was created)
sep 15 20:20:36 amnesia org.gnome.Nautilus[19377]: [19377:0915/202036.225894:ERROR:object_proxy.cc(623)] Failed to call method: org.freedesktop.DBus.Properties.Get: object_path= /org/freedesktop/portal/desktop: org.freedesktop.DBus.Error.InvalidArgs: No such interface “org.freedesktop.portal.FileChooser”
sep 15 20:20:36 amnesia org.gnome.Nautilus[19377]: [19377:0915/202036.225932:ERROR:select_file_dialog_linux_portal.cc(274)] Failed to read portal version property
sep 15 20:20:36 amnesia org.gnome.Nautilus[19412]: libva error: vaGetDriverNameByIndex() failed with unknown libva error, driver_name = (null)
sep 15 20:20:36 amnesia org.gnome.Nautilus[19377]: (node:19377) UnhandledPromiseRejectionWarning: TypeError: Cannot read properties of undefined (reading 'init')
sep 15 20:20:36 amnesia org.gnome.Nautilus[19377]: at BiometricsService. (/tmp/.mount_BitwarJCrABo/resources/app.asar/main.js:47195:55)
sep 15 20:20:36 amnesia org.gnome.Nautilus[19377]: at Generator.next ()
sep 15 20:20:36 amnesia org.gnome.Nautilus[19377]: at /tmp/.mount_BitwarJCrABo/resources/app.asar/main.js:47161:71
sep 15 20:20:36 amnesia org.gnome.Nautilus[19377]: at new Promise ()
sep 15 20:20:36 amnesia org.gnome.Nautilus[19377]: at biometrics_service_awaiter (/tmp/.mount_BitwarJCrABo/resources/app.asar/main.js:47157:12)
sep 15 20:20:36 amnesia org.gnome.Nautilus[19377]: at BiometricsService.init (/tmp/.mount_BitwarJCrABo/resources/app.asar/main.js:47194:16)
sep 15 20:20:36 amnesia org.gnome.Nautilus[19377]: at Main. (/tmp/.mount_BitwarJCrABo/resources/app.asar/main.js:53060:46)
sep 15 20:20:36 amnesia org.gnome.Nautilus[19377]: at Generator.next ()
sep 15 20:20:36 amnesia org.gnome.Nautilus[19377]: at fulfilled (/tmp/.mount_BitwarJCrABo/resources/app.asar/main.js:52957:58)
sep 15 20:20:36 amnesia org.gnome.Nautilus[19377]: (node:19377) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
sep 15 20:20:38 amnesia org.gnome.Nautilus[19377]: (node:19377) UnhandledPromiseRejectionWarning: TypeError: Cannot read properties of null (reading 'null')
sep 15 20:20:38 amnesia org.gnome.Nautilus[19377]: at new Menubar (/tmp/.mount_BitwarJCrABo/resources/app.asar/main.js:45541:131)
sep 15 20:20:38 amnesia org.gnome.Nautilus[19377]: at MenuMain. (/tmp/.mount_BitwarJCrABo/resources/app.asar/main.js:45595:56)
sep 15 20:20:38 amnesia org.gnome.Nautilus[19377]: at Generator.next ()
sep 15 20:20:38 amnesia org.gnome.Nautilus[19377]: at fulfilled (/tmp/.mount_BitwarJCrABo/resources/app.asar/main.js:45565:58)
sep 15 20:20:38 amnesia org.gnome.Nautilus[19377]: (node:19377) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 3)
sep 15 20:20:41 amnesia org.gnome.Nautilus[15357]: scheduling to check sse in 10 seconds
sep 15 20:20:41 amnesia org.gnome.Nautilus[15357]: sse info not available, skip reconnect
sep 15 20:20:41 amnesia org.gnome.Nautilus[19377]: 20:20:41.692 › Checking for update
sep 15 20:20:41 amnesia org.gnome.Nautilus[19377]: 20:20:41.910 › Error: Error: net::ERR_CONNECTION_REFUSED
sep 15 20:20:41 amnesia org.gnome.Nautilus[19377]: at SimpleURLLoaderWrapper. (node:electron/js2c/browser_init:2:49549)
sep 15 20:20:41 amnesia org.gnome.Nautilus[19377]: at SimpleURLLoaderWrapper.emit (node:events:513:28)
sep 15 20:20:41 amnesia org.gnome.Nautilus[19377]: (node:19377) UnhandledPromiseRejectionWarning: Error: net::ERR_CONNECTION_REFUSED
sep 15 20:20:41 amnesia org.gnome.Nautilus[19377]: at SimpleURLLoaderWrapper. (node:electron/js2c/browser_init:2:49549)
sep 15 20:20:41 amnesia org.gnome.Nautilus[19377]: at SimpleURLLoaderWrapper.emit (node:events:513:28)
sep 15 20:20:41 amnesia org.gnome.Nautilus[19377]: (node:19377) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 4)
```
### Operating System
Linux
### Operating System Version
Tails 5.17.1
### Installation method
Direct Download (from bitwarden.com)
### Build Version
2023.8.4
### Issue Tracking Info
- [X] 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.
Contributor guide
Research direction
Start by reproducing the login failure with Bitwarden desktop 2023.8.4 on Tails 5.17.1, then inspect the bundled resources/app.asar/main.js entry points shown in the logs, especially the failed fetch and initialization errors. Done means the desktop app can complete login and present 2FA when configured, without the reported fetch error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- electron, nodejs, typescript
- Domain
- authentication, desktop
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100