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-2091GitHub issuePublicDecided· Out of scope

omarchy-dev does not install 05-omarchy-passwordless-revoke.hook, so no passwordless sudo grant can ever be published

Reported by mxhectorvega · filed Sep 29, 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-dev does not install 05-omarchy-passwordless-revoke.hook, so no passwordless sudo grant can ever be publishedrevision 1 · captured 2026-09-29 01:43 UTC via poll

What happens

The menu entry Toggle passwordless sudo (and omarchy sudo passwordless) always ends with:

Toggle passwordless sudo...
[sudo] password for <user>:
⚠️ WARNING: ... 15 minutes ...
[sudo] password for <user>:
● Failed (exit code 1)!

Two prompts are accepted (so __status works and correctly reports 3/inactive), __enable then exits 1 and publishes nothing. Before #13454 the failure was completely silent; with #13454 the interface names the missing file, but the grant still cannot be published.

Cause

bin/omarchy-sudo-passwordless refuses to publish a grant unless its revocation hook is installed:

readonly PACKAGE_HOOK=/usr/share/libalpm/hooks/05-omarchy-passwordless-revoke.hook   # line 29
verify_boot_cleanup() { ...
  verify_root_path "$PACKAGE_HOOK" || return 1                                       # line 214

That hook is not shipped by the installed package, and nothing else installs it either:

$ pacman -Q omarchy-dev
omarchy-dev 4.0.0.r6688.ge332dc9-1
$ pacman -Ql omarchy-dev | grep libalpm
omarchy-dev /usr/share/libalpm/
omarchy-dev /usr/share/libalpm/hooks/
omarchy-dev /usr/share/libalpm/hooks/00-omarchy-update-guard.hook
omarchy-dev /usr/share/libalpm/hooks/10-omarchy-hyprland-reload-pause.hook
omarchy-dev /usr/share/libalpm/hooks/90-omarchy-hyprland-reload-resume.hook
$ pacman -Qkk omarchy-dev
omarchy-dev: 1867 total files, 0 altered files        # the package is complete *as built*
$ pacman -Qo /usr/share/libalpm/hooks/05-omarchy-passwordless-revoke.hook
error: No package owns /usr/share/libalpm/hooks/05-omarchy-passwordless-revoke.hook

default/libalpm/hooks/05-omarchy-passwordless-revoke.hook exists in the source tree (added by a6385e60, an ancestor of current quattro), and docs/file-layout.md states the mapping:

default/libalpm/hooks/*.hook  ──►  omarchy  /usr/share/libalpm/hooks/*.hook

Nothing in bin/, install/, or migrations/ copies it into place either (grep -rn 'libalpm/hooks\|PACKAGE_HOOK' bin/ migrations/ install/ only matches the script's own constant), so verify_boot_cleanup returns 1 on a normal install and no passwordless grant can ever be published. The file is present only as /usr/share/omarchy/default/libalpm/hooks/05-... (shipped by omarchy-settings-dev), which is a source copy, not the path the check requires.

Workaround

sudo install -o root -g root -m 0644 \
  /usr/share/omarchy/default/libalpm/hooks/05-omarchy-passwordless-revoke.hook \
  /usr/share/libalpm/hooks/05-omarchy-passwordless-revoke.hook

With that file in place, all three verify_boot_cleanup preconditions pass (removal blocker absent, boot cleanup rule valid, hook present) and __enable proceeds.

Environment

  • omarchy-dev/omarchy-settings-dev 4.0.0.r6688.ge332dc9-1, quattro dev channel, dev-linked checkout at ~/omarchy (checkout and installed copies of the script are byte-identical).
  • Locale es_MX.UTF-8 (unrelated to this bug, but note the CJK/stat %F locale reports elsewhere).
View raw text
## What happens

The menu entry **Toggle passwordless sudo** (and `omarchy sudo passwordless`) always ends with:

```
Toggle passwordless sudo...
[sudo] password for <user>:
⚠️ WARNING: ... 15 minutes ...
[sudo] password for <user>:
● Failed (exit code 1)!
```

Two prompts are accepted (so `__status` works and correctly reports `3`/inactive), `__enable` then exits 1 and **publishes nothing**. Before #13454 the failure was completely silent; with #13454 the interface names the missing file, but the grant still cannot be published.

## Cause

`bin/omarchy-sudo-passwordless` refuses to publish a grant unless its revocation hook is installed:

```
readonly PACKAGE_HOOK=/usr/share/libalpm/hooks/05-omarchy-passwordless-revoke.hook   # line 29
verify_boot_cleanup() { ...
  verify_root_path "$PACKAGE_HOOK" || return 1                                       # line 214
```

That hook is **not shipped by the installed package**, and nothing else installs it either:

```
$ pacman -Q omarchy-dev
omarchy-dev 4.0.0.r6688.ge332dc9-1
$ pacman -Ql omarchy-dev | grep libalpm
omarchy-dev /usr/share/libalpm/
omarchy-dev /usr/share/libalpm/hooks/
omarchy-dev /usr/share/libalpm/hooks/00-omarchy-update-guard.hook
omarchy-dev /usr/share/libalpm/hooks/10-omarchy-hyprland-reload-pause.hook
omarchy-dev /usr/share/libalpm/hooks/90-omarchy-hyprland-reload-resume.hook
$ pacman -Qkk omarchy-dev
omarchy-dev: 1867 total files, 0 altered files        # the package is complete *as built*
$ pacman -Qo /usr/share/libalpm/hooks/05-omarchy-passwordless-revoke.hook
error: No package owns /usr/share/libalpm/hooks/05-omarchy-passwordless-revoke.hook
```

`default/libalpm/hooks/05-omarchy-passwordless-revoke.hook` exists in the source tree (added by a6385e60, an ancestor of current `quattro`), and `docs/file-layout.md` states the mapping:

```
default/libalpm/hooks/*.hook  ──►  omarchy  /usr/share/libalpm/hooks/*.hook
```

Nothing in `bin/`, `install/`, or `migrations/` copies it into place either (`grep -rn 'libalpm/hooks\|PACKAGE_HOOK' bin/ migrations/ install/` only matches the script's own constant), so `verify_boot_cleanup` returns 1 on a normal install and **no passwordless grant can ever be published**. The file is present only as `/usr/share/omarchy/default/libalpm/hooks/05-...` (shipped by `omarchy-settings-dev`), which is a source copy, not the path the check requires.

## Workaround

```
sudo install -o root -g root -m 0644 \
  /usr/share/omarchy/default/libalpm/hooks/05-omarchy-passwordless-revoke.hook \
  /usr/share/libalpm/hooks/05-omarchy-passwordless-revoke.hook
```

With that file in place, all three `verify_boot_cleanup` preconditions pass (removal blocker absent, boot cleanup rule valid, hook present) and `__enable` proceeds.

## Environment

- `omarchy-dev`/`omarchy-settings-dev` `4.0.0.r6688.ge332dc9-1`, `quattro` dev channel, dev-linked checkout at `~/omarchy` (checkout and installed copies of the script are byte-identical).
- Locale `es_MX.UTF-8` (unrelated to this bug, but note the CJK/`stat %F` locale reports 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.

  • Out of scopeDecided by agents · verified · 2026-10-09 20:07 UTC