[BUG] Linux .deb Recommends a nonexistent package (kwalletd6), pulling gnome-keyring onto KDE systems
I had AI help me with this after suffering the issue. I tried my best to avoid ai babble and it's all based on the events on my machine.
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report
- [x] I am using the latest version — the defect is identical in every published version, including 1.49585.0 (see version section)
What's Wrong?
Packaging bug in the official Claude Code Desktop .deb for Linux
(https://downloads.claude.ai/claude-desktop/apt/stable, documented at
https://code.claude.com/docs/en/desktop-linux). It bundles the Claude Code engine
(2.1.260 here) and the Code tab is affected because sign-in cannot persist.
The package's KDE keyring alternatives are not real package names:
$ dpkg-query -W -f='${Recommends}\n' claude-desktop
... gnome-keyring | kwalletd6 | kwalletd5, ...
$ apt-cache policy kwalletd6 kwalletd5
kwalletd6:
Installed: (none)
Candidate: (none)
kwalletd5:
Installed: (none)
Candidate: (none)
kwalletd6 is a binary, not a package. The package is kwallet6:
$ dpkg -S /usr/bin/kwalletd6
kwallet6: /usr/bin/kwalletd6
Because neither KDE alternative can be satisfied, APT installs gnome-keyring on
every KDE system, even where KWallet is already installed and working. Two Secret
Service providers then race for org.freedesktop.secrets at login. When
gnome-keyring wins, Electron's safeStorage gets no key and the app shows:
Your sign-in won't be saved on this device. Install and unlock a system keyring (such as KDE Wallet (KWallet)), then restart the app.
What Should Happen?
Installing claude-desktop on a KDE system with kwallet6 present should not
pull in a second keyring, and sign-in should persist across restarts.
Fix in debian/control:
-Recommends: ... gnome-keyring | kwalletd6 | kwalletd5, ...
+Recommends: ... gnome-keyring | kwallet6 | kwalletd5, ...
The app only needs some Secret Service implementation via libsecret or the XDG
portal, so Suggests: would also be reasonable.
Error Messages/Logs
$ busctl --user list | grep -i secret
org.freedesktop.impl.portal.desktop.kwallet 1825 ksecretd
org.freedesktop.secrets 1795 gnome-keyring-d
org.kde.ksecretd 1825 ksecretd
org.kde.secretservicecompat 1825 ksecretd
$ grep 'gnome-keyring' /var/log/dpkg.log
2026-09-02 18:04:52 configure gnome-keyring:amd64 50.0-1 <none> # same transaction as claude-desktop
$ zcat /var/log/installer/initial-status.gz | grep -c '^Package: gnome-keyring$'
0 # distro did not ship it
Steps to Reproduce
- Kubuntu 26.04 (Plasma 6). Confirm
kwallet6is installed andgnome-keyringis not. sudo apt install claude-desktop. Notegnome-keyringin the same dpkg transaction.- Reboot. Both
gnome-keyring-daemonandksecretdstart;busctl --user list | grep -i secretshows gnome-keyring owningorg.freedesktop.secrets. - Launch Claude Desktop. Depending on which daemon won, the warning above appears and the session is not saved.
sudo apt remove gnome-keyring plus a reboot fixes it: ksecretd becomes the sole
owner and the app's portal backend initialises against it.
Claude Model
Not sure / Multiple models
Is this a regression?
I don't know
Claude Code Version
claude-desktop 1.46388.2 (amd64, Anthropic apt repo, stable), bundling Claude
Code engine 2.1.260 (~/.config/Claude/claude-code/2.1.260/claude --version).
Not version-specific. The Recommends line is byte-identical from 1.17180.0
through the current candidate 1.49585.0:
$ apt-cache show claude-desktop | grep -c 'gnome-keyring | kwalletd6 | kwalletd5'
37 # every published version
Platform
Anthropic API
Operating System
Ubuntu/Debian Linux
Terminal/Shell
Other
Additional Information
Ubuntu 26.04.1 LTS (Kubuntu), Plasma 6, XDG_CURRENT_DESKTOP=KDE, kwallet6
6.24.0-0ubuntu1, libpam-kwallet5 4:6.6.4-0ubuntu1.
Stock /etc/pam.d/sddm lists both pam_gnome_keyring.so and pam_kwallet5.so asoptional. That is inert until something installs gnome-keyring, which is what
this dependency does.
Previously filed as #92598 and auto-closed as "not about Claude Code" because the
version field said N/A. Comparable official-.deb packaging reports triaged here:
#84069, #84386.
Not a duplicate of #77913. Same warning text, different cause: there the portal
backend fails to initialise on ChromeOS/Crostini (prev_init_success:false,XDG_CURRENT_DESKTOP=X-Generic). Here it initialises fine:
$ grep -o '"os_crypt":{[^}]*}' ~/.config/Claude/Local\ State
"os_crypt":{"portal":{"prev_desktop":"KDE","prev_init_success":true}
This bug is upstream of backend selection: the .deb installs a provider that
should never have been installed. #80494 and #89812 (repeated re-login on Linux)
may share this cause on KDE hosts but do not identify one.
3 Comments
Can confirm same behavior on Debian Testing/Forky with KDE6. It would be nice if someone could forward this to the Claude Desktop team, or tell where to report this.
Workaround to not get
gnome-keyringinstalled:apt install --no-install-recommends claude-desktopActually I think this is done, as I understand it,
codebyte-anthas picked this up and completed the issue, probably in a private anthropic repositoryI expect this command will return kwallet5/6 (ie without the 'd') in a few days after it goes through their build process
sudo apt update && apt-cache show claude-desktop | grep -E '^(Version|Recommends)' | head -2FYI The fix is done but not the way I guessed...
In
claude-desktop2.7032.0, the line is now:So doesn't name a kwallet package, just checks if you're on Plasma... so wouldn't pull in
gnome-keyringfor us anymore