Improve error message when Secret Service is unavailable on Linux #57524
WXY-V1hZ
started this conversation in
Feature Requests
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Body
What are you proposing?
I ran into this issue after saving my DeepSeek API key in Zed. Everything worked fine until I restarted Zed — the API key was gone and I had to reconfigure it just to use the AI features again. I checked the logs and found this error.
When Zed on Linux cannot reach a Secret Service provider (
org.freedesktop.secretson DBus), it currently logs a raw, cryptic DBus error and silently falls back to storing API keys only in memory — they are lost on restart.I propose that Zed detect the missing Secret Service early and show a clear, human-readable warning or error to the user.
For example, instead of this in the logs:
Show the user something like:
The underlying secure-storage mechanism (Secret Service DBus API) is fine — this is purely about the error message UX.
Why does this matter?
Many Linux users run lightweight window managers or compositors (Sway, i3, Hyprland, niri, dwm, etc.) that do not bundle a Secret Service daemon like gnome-keyring or KWallet. These users hit the bug without any clue what went wrong — they just notice their API key disappeared after restarting Zed.
The raw DBus error is meaningless to almost everyone. A friendly message:
Are there any examples or context?
Other tools that do this well
gnome-keyringat startup and shows a notification suggesting to install it for credential storage.The broken user journey (today)
The fixed user journey (proposed)
Possible approach
The check is straightforward — try to introspect the
org.freedesktop.secretsname on the session DBus. If unavailable:The code path likely already exists around:
where the DBus error is currently emitted. That error-handling branch is the natural place to add a user-facing message. No new infrastructure is required — just convert a raw error into a friendly one.
Beta Was this translation helpful? Give feedback.
All reactions