Proof Portal
Omarchy
ProbeLabs65 findings · 95 requirementsA 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.
Cold-boot lock (autologin) silently drops submitted input: no PAM conversation, no failure feedback
Reported by archledger · filed Aug 28, 2026 · open at source
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?
- 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. So far: in the audited area (lock) — decided by agents · verified; not a duplicate of another report — decided by agents · verified; matches no known issue — decided by agents · verified. The outcome (valid, duplicate, not a bug, …) is not decided yet. See the decision.
Original report
Environment
- Omarchy 4.0.1-1, fresh install, default autologin (
/etc/sddm.conf.d/autologin.conf), Hyprland session on a laptop - Reproduced twice, deterministically, on separate cold boots
What happens
On a cold boot with autologin, the session starts and the lock engages at startup. The lock's password field accepts typing, but submitting input (any text, including a real password or the string yes) is silently dropped: no PAM conversation starts, there is no failure flash, and the field just resets. Waiting 10+ seconds after the lock appears before submitting does not help.
Once the session is up, locking manually works perfectly: the same dialog, the same omarchy-lock-password PAM service, authentication succeeds normally.
Evidence
- No PAM conversation runs at the cold lock. I have face authentication wired into
omarchy-lock-password(apam_irlume.soline, plus the same in sudo/polkit-1). At the cold-boot lock,yes+ Enter never reaches PAM: the auth daemon's journal (which logs every attempt on every other surface) shows zero requests during the cold-lock window. Fingerprint also does not engage there. So input is dropped beforepasswordPam.start()could matter, or the start itself never happens. - The lock plugin logs nothing at cold start.
Service.qmllogsomarchy lock <ts> <event>onlock-requestedetc. viaconsole.log. The shell's journal for the whole boot contains zeroomarchy lockevents, even though the lock surface was visibly up and accepting keystrokes. That suggests the cold-start surface never went throughbeginLock()(stranded-lock recovery path), andlockRequestedis therefore false while the UI is visible. - The silent-drop path exists in the code:
submitPassword()opens withif (!lockRequested || authenticatingPassword || password.length === 0) returnandLockViewbindsinputEnabled: root.lockRequested. A visible, typeable lock that drops submissions with no feedback is the observed behavior of exactly that guard.
Why it matters
A visible lock screen that ignores submitted authentication, with no error feedback, is security-relevant on its own (users cannot tell dropped input from a wrong password) and it breaks every PAM-integrated unlock helper (biometric agents like irlume or pam_fprintd lanes) precisely at the moment the machine is most likely to be locked: right after boot.
Reproduction
- Install with autologin (the default)
- Reboot
- At the startup lock, type anything and press Enter
- Observe: no failure message, no PAM activity (verifiable with any PAM-logging module wired into
omarchy-lock-password), field resets
Contrast: lock manually from the running session; the same input path works.
Happy to provide the daemon-side journal excerpts or test a patch if useful.
View raw text
## Environment - Omarchy 4.0.1-1, fresh install, default autologin (`/etc/sddm.conf.d/autologin.conf`), Hyprland session on a laptop - Reproduced twice, deterministically, on separate cold boots ## What happens On a cold boot with autologin, the session starts and the lock engages at startup. The lock's password field accepts typing, but submitting input (any text, including a real password or the string `yes`) is **silently dropped**: no PAM conversation starts, there is no failure flash, and the field just resets. Waiting 10+ seconds after the lock appears before submitting does not help. Once the session is up, locking manually works perfectly: the same dialog, the same `omarchy-lock-password` PAM service, authentication succeeds normally. ## Evidence 1. **No PAM conversation runs at the cold lock.** I have face authentication wired into `omarchy-lock-password` (a `pam_irlume.so` line, plus the same in sudo/polkit-1). At the cold-boot lock, `yes` + Enter never reaches PAM: the auth daemon's journal (which logs every attempt on every other surface) shows zero requests during the cold-lock window. Fingerprint also does not engage there. So input is dropped before `passwordPam.start()` could matter, or the start itself never happens. 2. **The lock plugin logs nothing at cold start.** `Service.qml` logs `omarchy lock <ts> <event>` on `lock-requested` etc. via `console.log`. The shell's journal for the whole boot contains zero `omarchy lock` events, even though the lock surface was visibly up and accepting keystrokes. That suggests the cold-start surface never went through `beginLock()` (stranded-lock recovery path), and `lockRequested` is therefore false while the UI is visible. 3. **The silent-drop path exists in the code**: `submitPassword()` opens with `if (!lockRequested || authenticatingPassword || password.length === 0) return` and `LockView` binds `inputEnabled: root.lockRequested`. A visible, typeable lock that drops submissions with no feedback is the observed behavior of exactly that guard. ## Why it matters A visible lock screen that ignores submitted authentication, with no error feedback, is security-relevant on its own (users cannot tell dropped input from a wrong password) and it breaks every PAM-integrated unlock helper (biometric agents like irlume or pam_fprintd lanes) precisely at the moment the machine is most likely to be locked: right after boot. ## Reproduction 1. Install with autologin (the default) 2. Reboot 3. At the startup lock, type anything and press Enter 4. Observe: no failure message, no PAM activity (verifiable with any PAM-logging module wired into `omarchy-lock-password`), field resets Contrast: lock manually from the running session; the same input path works. Happy to provide the daemon-side journal excerpts or test a patch if useful.
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.
- Decided by agents · verified: in the audited area (lock)
- Decided by agents · verified: not a duplicate of another report
- Decided by agents · verified: matches no known issue
The outcome (valid, duplicate, not a bug, …) is not decided yet.