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-windows-vm fails silently when ~/Windows carries the setgid bit
Reported by pbecks1963 · filed Sep 8, 2026Closed upstream on 2026-09-20 by bjarneo via an automated message, as a duplicate of #9334 (R-1173). GitHub close reason: completed.
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?
- Not yet mapped to any requirement or component.
- 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. No decision has been recorded yet.
Original report
omarchy-windows-vm fails silently when ~/Windows carries the setgid bit
Summary
omarchy-windows-vm launch (also via the "Windows" entry in the Quickshell menu /.desktop, which runs the same command) fails to start the VM with no diagnostic
output when the user's shared-data directory ~/Windows has mode 2700
(setgid bit set) instead of 0700. The user sees only the generic
"Failed to start Windows VM!" banner (or, from the menu, a critical
notification with no detail).
What happened
~/Windowshad modedrwx--S---(2700, setgid bit) — a legitimate state a
directory can be in (e.g. created with a setgid parent).
2. omarchy-windows-vm launch ran: polkit authorization succeeds, the privileged
__priv up_wait runs, and assert_mounts_safe → prepare_caller_mounts
aborts at the exact-mode check below:
- chmod 0700 -- /proc/<pid>/fd/<storage_fd> /proc/<pid>/fd/<shared_fd> **does
not clear the setgid bit** when issued through the /proc/<pid>/fd path:
storage read back 700, shared read back 2700.
- [[ $storage_mode != 700 || $shared_mode != 700 ]] → true → return 1.
- Every failure path back up to the CLI is silent:
__priv_up/__priv_up_wait just return 1, the launch wrapper prints only
the generic banner, and the container is never created. (Docker socket
activation was never even triggered because the abort happens before the
docker-compose call, which makes the failure easy to misread as "Docker
not running".)
Expected
- The VM starts, or at minimum the failing step emits the actual reason
(e.g. chmod 0700 on ~/Windows did not stick → mode is 2700), instead of
failing silently.
Workaround found on the affected machine
chmod g-s ~/Windows # clears setgid → mode 0700
omarchy-windows-vm launch # then worksSteps to reproduce
install -d -m 2700 ~/Windows(or otherwise give the shared dir a setgid bit).- Configure the VM with
omarchy-windows-vm install(or keep an existing install). omarchy-windows-vm launch(authorize the polkit prompt).- Observe: no command output beyond the generic failure banner; no container is
created; the VM never comes up. Manual binary reproduction with tracing:
# as root, with a valid compose in place:
mount_source=~/Windows
# prepare_caller_mounts() chmods via fd path then requires EXACT 0700:
# chmod 0700 -- /proc/$BASHPID/fd/$shared_fd
# stat -Lc %a ... -> 2700 (setgid not cleared via fd path)
# [[ 2700 != 700 ]] -> abort, silent return 1Relevant code
/usr/bin/omarchy-windows-vm, prepare_caller_mounts():
- https://github.com/basecamp/omarchy/blob/main/... (function in the packaged
omarchy-windows-vmbinary, ~line 583) chmod 0700 -- "/proc/$BASHPID/fd/$storage_fd" "/proc/$BASHPID/fd/$shared_fd"if [[ $storage_mode != 700 || $shared_mode != 700 ]]; then ... return 1; fi(line ~590, no message emitted)
Two things worth fixing:
1. Robustness: a user-owned directory with a setgid bit should not be able to
brick the mount preflight; either strip the bit with chmod g-s/chmod 00700
in a way that actually sticks for the fd-based call, or relax the exact == 700
check (e.g. compare masked bits / only enforce no world/group-write).
2. Observability: every return 1 in the mount-preflight chain should emit a
diagnostic (echo ... >&2) so launch reports the true cause.
Environment
- Omarchy:
4.0.2-1 - Kernel:
7.1.9-arch1-2(Arch) - Root filesystem for
~/Windows: btrfs (/dev/mapper/root[/@home], mounted at/home) - Host: Hyprland/omarchy-shell (Quickshell menu launch path:
uwsm app -- gtk-launch windows-vm.desktop→Exec=uwsm app -- omarchy-windows-vm launch)
View raw text
## omarchy-windows-vm fails silently when `~/Windows` carries the setgid bit
### Summary
`omarchy-windows-vm launch` (also via the "Windows" entry in the Quickshell menu /
`.desktop`, which runs the same command) fails to start the VM with no diagnostic
output when the user's shared-data directory `~/Windows` has mode `2700`
(setgid bit set) instead of `0700`. The user sees only the generic
"Failed to start Windows VM!" banner (or, from the menu, a critical
notification with no detail).
### What happened
1. `~/Windows` had mode `drwx--S---` (`2700`, setgid bit) — a legitimate state a
directory can be in (e.g. created with a setgid parent).
2. `omarchy-windows-vm launch` ran: polkit authorization succeeds, the privileged
`__priv up_wait` runs, and `assert_mounts_safe` → `prepare_caller_mounts`
aborts at the exact-mode check below:
- `chmod 0700 -- /proc/<pid>/fd/<storage_fd> /proc/<pid>/fd/<shared_fd>` **does
not clear the setgid bit** when issued through the `/proc/<pid>/fd` path:
storage read back `700`, shared read back `2700`.
- `[[ $storage_mode != 700 || $shared_mode != 700 ]]` → true → `return 1`.
- Every failure path back up to the CLI is silent:
`__priv_up`/`__priv_up_wait` just `return 1`, the launch wrapper prints only
the generic banner, and the container is never created. (Docker socket
activation was never even triggered because the abort happens before the
docker-compose call, which makes the failure easy to misread as "Docker
not running".)
### Expected
- The VM starts, or at minimum the failing step emits the actual reason
(e.g. `chmod 0700` on `~/Windows` did not stick → mode is `2700`), instead of
failing silently.
### Workaround found on the affected machine
```bash
chmod g-s ~/Windows # clears setgid → mode 0700
omarchy-windows-vm launch # then works
```
### Steps to reproduce
1. `install -d -m 2700 ~/Windows` (or otherwise give the shared dir a setgid bit).
2. Configure the VM with `omarchy-windows-vm install` (or keep an existing install).
3. `omarchy-windows-vm launch` (authorize the polkit prompt).
4. Observe: no command output beyond the generic failure banner; no container is
created; the VM never comes up. Manual binary reproduction with tracing:
```bash
# as root, with a valid compose in place:
mount_source=~/Windows
# prepare_caller_mounts() chmods via fd path then requires EXACT 0700:
# chmod 0700 -- /proc/$BASHPID/fd/$shared_fd
# stat -Lc %a ... -> 2700 (setgid not cleared via fd path)
# [[ 2700 != 700 ]] -> abort, silent return 1
```
### Relevant code
`/usr/bin/omarchy-windows-vm`, `prepare_caller_mounts()`:
- https://github.com/basecamp/omarchy/blob/main/... (function in the packaged `omarchy-windows-vm` binary, ~line 583)
- `chmod 0700 -- "/proc/$BASHPID/fd/$storage_fd" "/proc/$BASHPID/fd/$shared_fd"`
- `if [[ $storage_mode != 700 || $shared_mode != 700 ]]; then ... return 1; fi` (line ~590, no message emitted)
Two things worth fixing:
1. Robustness: a user-owned directory with a setgid bit should not be able to
brick the mount preflight; either strip the bit with `chmod g-s`/`chmod 00700`
in a way that actually sticks for the fd-based call, or relax the exact `== 700`
check (e.g. compare masked bits / only enforce no world/group-write).
2. Observability: every `return 1` in the mount-preflight chain should emit a
diagnostic (`echo ... >&2`) so `launch` reports the true cause.
### Environment
- Omarchy: `4.0.2-1`
- Kernel: `7.1.9-arch1-2` (Arch)
- Root filesystem for `~/Windows`: btrfs (`/dev/mapper/root[/@home]`, mounted at `/home`)
- Host: Hyprland/omarchy-shell (Quickshell menu launch path: `uwsm app -- gtk-launch windows-vm.desktop` → `Exec=uwsm app -- omarchy-windows-vm launch`)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.
No decision has been recorded yet.