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.
omarchy-shell: stale Quickshell polkit registration blocks pkexec until shell restart
Reported by VillainRU · filed Sep 1, 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?
- AreaOutside the audited area· Decided by agents · verified
- 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?
- Decided by agents and verified by a second, independent agent — see the decision.
Original report
System details
- Omarchy:
4.0.2-1 - Quickshell:
0.3.1-1 - polkit:
127-3
What happened
The Omarchy shell's polkit agent entered a stale/broken state. After that, GUI actions using pkexec did not show an authentication dialog and failed immediately.
The Windows VM launcher exposed this as the generic notification:
Windows VM
Failed to start Windows VMThis looks similar to #9374, but it is a separate failure mode: the VM directories already had the correct 0700 permissions. Restarting the Omarchy shell restored the polkit dialog and allowed the same command to succeed.
Journal evidence
The long-running Omarchy shell logged:
Sep 01 09:06:29 omarchy-shell:
failed to register listener: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: An authentication agent already exists for the given subject
Sep 01 09:06:29 omarchy-shell:
failed to register listener on path "/org/omarchy/PolkitAgent"Later, launching windows-vm.desktop produced no authentication dialog and exited with the generic failure notification. Running the status command without a graphical agent also showed that authorization could not be obtained:
Error creating textual authentication agent: Error opening current controlling terminal for the process (`/dev/tty'): No such device or address
Could not query the Windows VM (authorization declined?).Recovery
Running:
omarchy restart shellstarted a new shell process, which logged:
omarchy polkit agent registeredImmediately afterward, the same omarchy-windows-vm status action displayed the authentication dialog and succeeded. Starting the VM also succeeded.
Reproduction from the broken state
I do not yet have a deterministic one-command reproduction for creating the stale state, but once it occurs the behavior is consistent:
- The running shell logs
An authentication agent already exists for the given subjectwhile registering/org/omarchy/PolkitAgent. - Launch a GUI action that requires
pkexec, such as the Windows VM launcher. - No authentication dialog appears; the action fails immediately.
- Run
omarchy restart shelland wait foromarchy polkit agent registered. - Retry the same action; the dialog appears and authorization succeeds.
Around the initial registration error there was also Quickshell process activity, including a separate Quickshell process that later crashed. This may be related to a graph/service reload or a second agent instance, but I cannot confirm the exact trigger from this incident alone.
Expected behavior
- Exactly one usable polkit authentication agent should remain registered for the session.
- Reloading/recreating the Quickshell service should unregister or destroy the previous
PolkitAgentcleanly before registering a replacement. - If registration fails with
An authentication agent already exists, the shell should recover instead of leaving GUIpkexeccalls without a working authentication dialog.
Possible direction
The polkit service is kept loaded and registers a PolkitAgent at /org/omarchy/PolkitAgent. It may be worth checking the lifecycle during QML graph/service reloads and ensuring an old listener is unregistered before a replacement is constructed. A registration failure could also trigger a controlled retry/recreation after verifying whether the existing listener is still functional.
Separately, surfacing the underlying pkexec/polkit failure in the Windows VM launcher would make this much easier to diagnose than the current generic notification.
View raw text
## System details - Omarchy: `4.0.2-1` - Quickshell: `0.3.1-1` - polkit: `127-3` ## What happened The Omarchy shell's polkit agent entered a stale/broken state. After that, GUI actions using `pkexec` did not show an authentication dialog and failed immediately. The Windows VM launcher exposed this as the generic notification: ```text Windows VM Failed to start Windows VM ``` This looks similar to #9374, but it is a separate failure mode: the VM directories already had the correct `0700` permissions. Restarting the Omarchy shell restored the polkit dialog and allowed the same command to succeed. ## Journal evidence The long-running Omarchy shell logged: ```text Sep 01 09:06:29 omarchy-shell: failed to register listener: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: An authentication agent already exists for the given subject Sep 01 09:06:29 omarchy-shell: failed to register listener on path "/org/omarchy/PolkitAgent" ``` Later, launching `windows-vm.desktop` produced no authentication dialog and exited with the generic failure notification. Running the status command without a graphical agent also showed that authorization could not be obtained: ```text Error creating textual authentication agent: Error opening current controlling terminal for the process (`/dev/tty'): No such device or address Could not query the Windows VM (authorization declined?). ``` ## Recovery Running: ```bash omarchy restart shell ``` started a new shell process, which logged: ```text omarchy polkit agent registered ``` Immediately afterward, the same `omarchy-windows-vm status` action displayed the authentication dialog and succeeded. Starting the VM also succeeded. ## Reproduction from the broken state I do not yet have a deterministic one-command reproduction for creating the stale state, but once it occurs the behavior is consistent: 1. The running shell logs `An authentication agent already exists for the given subject` while registering `/org/omarchy/PolkitAgent`. 2. Launch a GUI action that requires `pkexec`, such as the Windows VM launcher. 3. No authentication dialog appears; the action fails immediately. 4. Run `omarchy restart shell` and wait for `omarchy polkit agent registered`. 5. Retry the same action; the dialog appears and authorization succeeds. Around the initial registration error there was also Quickshell process activity, including a separate Quickshell process that later crashed. This may be related to a graph/service reload or a second agent instance, but I cannot confirm the exact trigger from this incident alone. ## Expected behavior - Exactly one usable polkit authentication agent should remain registered for the session. - Reloading/recreating the Quickshell service should unregister or destroy the previous `PolkitAgent` cleanly before registering a replacement. - If registration fails with `An authentication agent already exists`, the shell should recover instead of leaving GUI `pkexec` calls without a working authentication dialog. ## Possible direction The polkit service is kept loaded and registers a `PolkitAgent` at `/org/omarchy/PolkitAgent`. It may be worth checking the lifecycle during QML graph/service reloads and ensuring an old listener is unregistered before a replacement is constructed. A registration failure could also trigger a controlled retry/recreation after verifying whether the existing listener is still functional. Separately, surfacing the underlying `pkexec`/polkit failure in the Windows VM launcher would make this much easier to diagnose than the current generic notification.
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
- Fixed bypr/12817· confirmed
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.
- Out of scopeDecided by agents · verified · 2026-10-09 10:23 UTC