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

`omarchy update` hangs on a sudo password prompt even after `omarchy sudo passwordless`

Reported by duffmahn · filed Aug 30, 2026 · open at source

Decided: Out of scope — decided by agents · verified 4 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 update` hangs on a sudo password prompt even after `omarchy sudo passwordless`revision 1 · captured 2026-09-28 21:24 UTC via poll

What happens

omarchy sudo passwordless writes a NOPASSWD: ALL sudoers drop-in, so the user should not be prompted.
But omarchy update still stops on [sudo] password for <user>: and, with no one at the keyboard, hangs
until the prompt times out and set -e aborts the run.

The abort happens after the pre-update snapshot has been taken, so the machine is left having done the
risky half of the operation and none of the useful half. On an unattended box (CI, a server, a VM driven by
an agent) this is a silent five-minute stall followed by a failed update.

Cause

bin/omarchy-update-stay-awake, in the systemd-inhibit branch:

if omarchy-cmd-present systemd-inhibit; then
  if (( EUID != 0 )); then
    if [[ -t 0 ]]; then
      sudo -v                    # ← line 95
      inhibit_runner=(sudo)
    else
      inhibit_runner=(pkexec)

Two things combine:

  1. omarchy update gives itself a tty (via script), so [[ -t 0 ]] is true and the sudo -v branch is

taken even in a fully unattended run.
2. sudo -v is governed by sudo's verifypw option, whose default is `all`. Under verifypw=all, sudo -v
demands a password if any rule for that user requires one. A stock Arch install has wheel's
%wheel ALL=(ALL:ALL) ALL alongside the NOPASSWD: ALL file that omarchy-sudo-passwordless writes — so
the passworded wheel rule is enough to make sudo -v prompt, and the NOPASSWD file never gets a say.

So omarchy sudo passwordless does not actually make omarchy update passwordless.

Reproduce

  1. omarchy sudo passwordless
  2. Run omarchy update non-interactively (no human to type a password)
  3. Observe the hang at [sudo] password for <user>:, then the set -e abort — with the snapshot already created

Observed on Omarchy 4.0.1: a 5-minute hang, then abort.

Workaround that works

Add verifypw=any for the user in a sudoers drop-in:

Defaults:<user> verifypw=any

With that in place the same omarchy update completed in about 20 seconds.

Suggested fix

Either drop the sudo -v pre-flight (it is only warming the sudo timestamp — sudo will prompt when actually
needed), or make it non-fatal and non-blocking (sudo -n -v || true) so a passwordless configuration is
respected and an unattended run degrades to pkexec/failure fast instead of hanging. Alternatively, have
omarchy-sudo-passwordless also set verifypw=any for the user, so the guarantee it advertises holds for
sudo -v too.

Environment

Omarchy 4.0.1-1, Arch, x86_64, KVM guest. sudo defaults unmodified apart from the NOPASSWD file written by
omarchy sudo passwordless. First observed 2026-08-28.

View raw text
### What happens

`omarchy sudo passwordless` writes a `NOPASSWD: ALL` sudoers drop-in, so the user should not be prompted.
But `omarchy update` still stops on `[sudo] password for <user>:` and, with no one at the keyboard, hangs
until the prompt times out and `set -e` aborts the run.

The abort happens **after the pre-update snapshot has been taken**, so the machine is left having done the
risky half of the operation and none of the useful half. On an unattended box (CI, a server, a VM driven by
an agent) this is a silent five-minute stall followed by a failed update.

### Cause

`bin/omarchy-update-stay-awake`, in the `systemd-inhibit` branch:

```bash
if omarchy-cmd-present systemd-inhibit; then
  if (( EUID != 0 )); then
    if [[ -t 0 ]]; then
      sudo -v                    # ← line 95
      inhibit_runner=(sudo)
    else
      inhibit_runner=(pkexec)
```

Two things combine:

1. `omarchy update` gives itself a tty (via `script`), so `[[ -t 0 ]]` is **true** and the `sudo -v` branch is
   taken even in a fully unattended run.
2. `sudo -v` is governed by sudo's `verifypw` option, whose default is **`all`**. Under `verifypw=all`, `sudo -v`
   demands a password if *any* rule for that user requires one. A stock Arch install has wheel's
   `%wheel ALL=(ALL:ALL) ALL` alongside the `NOPASSWD: ALL` file that `omarchy-sudo-passwordless` writes — so
   the passworded wheel rule is enough to make `sudo -v` prompt, and the `NOPASSWD` file never gets a say.

So `omarchy sudo passwordless` does not actually make `omarchy update` passwordless.

### Reproduce

1. `omarchy sudo passwordless`
2. Run `omarchy update` non-interactively (no human to type a password)
3. Observe the hang at `[sudo] password for <user>:`, then the `set -e` abort — with the snapshot already created

Observed on Omarchy 4.0.1: a 5-minute hang, then abort.

### Workaround that works

Add `verifypw=any` for the user in a sudoers drop-in:

```
Defaults:<user> verifypw=any
```

With that in place the same `omarchy update` completed in about 20 seconds.

### Suggested fix

Either drop the `sudo -v` pre-flight (it is only warming the sudo timestamp — `sudo` will prompt when actually
needed), or make it non-fatal and non-blocking (`sudo -n -v || true`) so a passwordless configuration is
respected and an unattended run degrades to `pkexec`/failure fast instead of hanging. Alternatively, have
`omarchy-sudo-passwordless` also set `verifypw=any` for the user, so the guarantee it advertises holds for
`sudo -v` too.

### Environment

Omarchy 4.0.1-1, Arch, x86_64, KVM guest. sudo defaults unmodified apart from the `NOPASSWD` file written by
`omarchy sudo passwordless`. First observed 2026-08-28.

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

  • Related PRpr/9511· 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:03 UTC