Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.

Inbox
ReportR-4761GitHub issuePublicReceived

default-keyring.sh writes an unparseable stub keyring, wiping Chrome/Docker secrets on every login

Reported by gurupak · filed Aug 30, 2026Closed upstream on 2026-09-21 by bjarneo via an automated message, as a duplicate of #5105 (R-1991). GitHub close reason: completed.

Received and recorded verbatim. Nothing has been checked yet.

At a glance

1 · What is claimed?
Only the report text below — no validator has restated it as checkable claims yet.
2 · What does it affect?
Not yet mapped to any requirement or component.
3 · Is it reproducible?
No validation has been run yet.
4 · What remains unclear?
  • Not validated yet: no claims, no reproducer.
5 · What happens next?
Our staff decide whether the report is valid. Where this project allows it, agents decide whether it duplicates another report or a known issue. No decision has been recorded yet.

Original report

default-keyring.sh writes an unparseable stub keyring, wiping Chrome/Docker secrets on every loginrevision 1 · captured 2026-10-04 12:03 UTC via poll

What happened

After every login (SDDM autologin -> Hyprland via uwsm), the login keyring
occasionally comes back empty: Chrome loses its "Chrome Safe Storage" secret
(so it treats the profile as untrusted and demands sign-in/verification
again), and Docker Desktop loses its stored credential-helper secret (so it
re-prompts to store credentials in the keychain again). This has now happened
to me repeatedly across separate days.

Root cause found

gnome-keyring-daemon is started twice at login through two independent
paths that both race to open the same on-disk keyring file
(~/.local/share/keyrings/Default_keyring.keyring):

  1. PAM session hook: -session optional pam_gnome_keyring.so auto_start,

present in both /etc/pam.d/sddm and /etc/pam.d/sddm-autologin.
2. The packaged systemd user service gnome-keyring-daemon.service
(WantedBy=default.target), which starts unconditionally at every user
session in addition to being socket-activated.

Caught live in this boot's own journal, right at login:

gnome-keyring-daemon[1469]: keyring was in an invalid or unrecognized format: /home/USER/.local/share/keyrings/Default_keyring.keyring
gnome-keyring-daemon[1469]: keyring was in an invalid or unrecognized format: /home/USER/.local/share/keyrings/Default_keyring.keyring

When gnome-keyring hits this, it quarantines the file and silently creates a
brand-new empty default keyring, wiping every secret that was stored in
it (Chrome's Safe Storage key, Docker's stored credential, etc.). On disk I
can see the trail of previous casualties from earlier days:

~/.local/share/keyrings/stale-backup-20260828-211412/Default_keyring_1.keyring
~/.local/share/keyrings/stale-backup-20260828-211412/Default_keyring_2.keyring

omarchy install/login/sddm.sh already strips the -auth/-password
pam_gnome_keyring.so lines from /etc/pam.d/sddm specifically to avoid
creating a password-encrypted login keyring that conflicts with Omarchy's
passwordless default-keyring.sh design — but it leaves the `-session
... auto_start line untouched in both /etc/pam.d/sddm` and
/etc/pam.d/sddm-autologin, so the daemon is still double-started against
the systemd user service every login. That looks like the missing half of
that fix.

Expected behavior

The keyring should be started exactly once per session, and its contents
should persist reliably across logins instead of occasionally being wiped.

Steps to reproduce

  1. Fresh Omarchy install/session with SDDM autologin enabled (default).
  2. Store a secret via libsecret (e.g. log into Chrome, or let Docker Desktop

store a registry credential).
3. Reboot repeatedly. Intermittently (not every time — it's a race), the
keyring will come back empty and the app will re-prompt.
4. Confirm via journalctl --user -b 0 | grep -i "invalid or unrecognized format".

Proposed fix

Remove the redundant PAM session line so only the systemd user service
(which is already correctly socket-activated) manages the daemon:

sed -i '/-session.*optional.*pam_gnome_keyring\.so.*auto_start/d' /etc/pam.d/sddm /etc/pam.d/sddm-autologin

Happy to send a PR for this if maintainers agree with the diagnosis.

System details

  • Omarchy version: 4.0.1-1
  • gnome-keyring: 1:50.0-1
  • Kernel: 7.1.9-arch1-2
  • Login flow: sddm (autologin) -> uwsm start -g -1 -e -D Hyprland hyprland.desktop
  • No polkit authentication agent is running/installed on this system

(unrelated to the bug, noted in case it's relevant to keyring prompt
behavior elsewhere).

View raw text
## What happened

After every login (SDDM autologin -> Hyprland via uwsm), the login keyring
occasionally comes back empty: Chrome loses its "Chrome Safe Storage" secret
(so it treats the profile as untrusted and demands sign-in/verification
again), and Docker Desktop loses its stored credential-helper secret (so it
re-prompts to store credentials in the keychain again). This has now happened
to me repeatedly across separate days.

## Root cause found

`gnome-keyring-daemon` is started twice at login through two independent
paths that both race to open the same on-disk keyring file
(`~/.local/share/keyrings/Default_keyring.keyring`):

1. PAM session hook: `-session optional pam_gnome_keyring.so auto_start`,
   present in **both** `/etc/pam.d/sddm` and `/etc/pam.d/sddm-autologin`.
2. The packaged systemd user service `gnome-keyring-daemon.service`
   (`WantedBy=default.target`), which starts unconditionally at every user
   session in addition to being socket-activated.

Caught live in this boot's own journal, right at login:

```
gnome-keyring-daemon[1469]: keyring was in an invalid or unrecognized format: /home/USER/.local/share/keyrings/Default_keyring.keyring
gnome-keyring-daemon[1469]: keyring was in an invalid or unrecognized format: /home/USER/.local/share/keyrings/Default_keyring.keyring
```

When gnome-keyring hits this, it quarantines the file and silently creates a
brand-new **empty** default keyring, wiping every secret that was stored in
it (Chrome's Safe Storage key, Docker's stored credential, etc.). On disk I
can see the trail of previous casualties from earlier days:

```
~/.local/share/keyrings/stale-backup-20260828-211412/Default_keyring_1.keyring
~/.local/share/keyrings/stale-backup-20260828-211412/Default_keyring_2.keyring
```

`omarchy install/login/sddm.sh` already strips the `-auth`/`-password`
`pam_gnome_keyring.so` lines from `/etc/pam.d/sddm` specifically to avoid
creating a password-encrypted login keyring that conflicts with Omarchy's
passwordless `default-keyring.sh` design — but it leaves the `-session
... auto_start` line untouched in both `/etc/pam.d/sddm` and
`/etc/pam.d/sddm-autologin`, so the daemon is still double-started against
the systemd user service every login. That looks like the missing half of
that fix.

## Expected behavior

The keyring should be started exactly once per session, and its contents
should persist reliably across logins instead of occasionally being wiped.

## Steps to reproduce

1. Fresh Omarchy install/session with SDDM autologin enabled (default).
2. Store a secret via libsecret (e.g. log into Chrome, or let Docker Desktop
   store a registry credential).
3. Reboot repeatedly. Intermittently (not every time — it's a race), the
   keyring will come back empty and the app will re-prompt.
4. Confirm via `journalctl --user -b 0 | grep -i "invalid or unrecognized format"`.

## Proposed fix

Remove the redundant PAM session line so only the systemd user service
(which is already correctly socket-activated) manages the daemon:

```bash
sed -i '/-session.*optional.*pam_gnome_keyring\.so.*auto_start/d' /etc/pam.d/sddm /etc/pam.d/sddm-autologin
```

Happy to send a PR for this if maintainers agree with the diagnosis.

## System details

- Omarchy version: 4.0.1-1
- gnome-keyring: 1:50.0-1
- Kernel: 7.1.9-arch1-2
- Login flow: sddm (autologin) -> `uwsm start -g -1 -e -D Hyprland hyprland.desktop`
- No polkit authentication agent is running/installed on this system
  (unrelated to the bug, noted in case it's relevant to keyring prompt
  behavior elsewhere).

Validation

Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.

Linked

Not linked to any known issue, other report or change yet.

Decision

Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.

No decision has been recorded yet.