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-1121GitHub issuePublicFixed

omarchy-shell: stale Quickshell polkit registration blocks pkexec until shell restart

Reported by VillainRU · filed Sep 1, 2026 · open at source

Decided: Out of scope — decided by agents · verified 3 days ago.

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

omarchy-shell: stale Quickshell polkit registration blocks pkexec until shell restartrevision 1 · captured 2026-09-28 21:24 UTC via poll

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 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:

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 shell

started a new shell process, which logged:

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.

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