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.
windows vm launch fails: chmod 0700 no longer clears setgid on ~/Windows (coreutils 9.11), which dockur resets to 2777
Reported by yeet-bits · filed Sep 11, 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
What happened
omarchy windows vm launch fails with only:
Starting Windows VM (this may prompt for authorization)...
❌ Failed to start Windows VM!
Try checking: omarchy-windows-vm statusThe container never starts, and no reason is printed (the failure happens inside the pkexec-elevated helper, whose stderr is not surfaced).
Root cause
A chain of three things:
- dockur/windows sets the shared directory on the host to mode 2777 (setgid) whenever the VM runs. So after any successful VM session,
~/Windows(the/sharedbind source) is left with the setgid bit set.
- GNU coreutils 9.11 (currently on Arch) changed numeric chmod semantics for directories.
chmod 0700no longer clears the set-group-ID bit;man chmodnow says:
To clear these bits for directories with a numeric mode requires an additional leading zero like 00755, leading minus like -6000, or leading equals like =755.
Verified empirically on coreutils 9.11-2:
$ mkdir d && chmod 2700 d && chmod 0700 d && stat -c %a d
2700 # silently retained
$ chmod =700 d && stat -c %a d
700- `omarchy-windows-vm` uses `chmod 0700` and then strictly verifies `mode == 700`. In
prepare_caller_mounts()(omarchy-windows-vm line ~583 in omarchy 4.0.3-1):
chmod 0700 -- "/proc/$BASHPID/fd/$storage_fd" "/proc/$BASHPID/fd/$shared_fd" || ...
...
[[ $storage_mode != 700 || $shared_mode != 700 ]] && return 1 # fails hereThe chmod succeeds, but the setgid bit survives it, so the privacy verification aborts the launch.
Because of (1), this is a guaranteed recurring failure: every launch after a successful VM run fails until the user manually clears the bit.
Steps to reproduce
chmod 2777 ~/Windows # or just run the Windows VM once — dockur does this for you
omarchy windows vm launch # → ❌ Failed to start Windows VM!Suggested fix
Use a form that explicitly clears the special bits. Affected sites in omarchy-windows-vm (4.0.3-1):
- line ~583 in
prepare_caller_mounts():chmod 0700 -- ...→chmod 00700 -- ...(orchmod =700) - line ~1018 in the install path: same change
- line ~1061 in
write_credentials(): same change (latent,~/.config/windowsis unlikely to carry setgid)
Verified workaround for users hitting this: chmod g-s ~/Windows.
System details
- Omarchy: 4.0.3-1
- Kernel: 7.2.3-arch1-3
- coreutils: 9.11-2
- Docker: 29.7.2, dockur/windows image
- Storage: btrfs, VM disk at ~/.windows (data.img, 64G)
View raw text
## What happened `omarchy windows vm launch` fails with only: ``` Starting Windows VM (this may prompt for authorization)... ❌ Failed to start Windows VM! Try checking: omarchy-windows-vm status ``` The container never starts, and no reason is printed (the failure happens inside the pkexec-elevated helper, whose stderr is not surfaced). ## Root cause A chain of three things: 1. **dockur/windows sets the shared directory on the host to mode 2777 (setgid) whenever the VM runs.** So after any *successful* VM session, `~/Windows` (the `/shared` bind source) is left with the setgid bit set. 2. **GNU coreutils 9.11 (currently on Arch) changed numeric chmod semantics for directories.** `chmod 0700` no longer clears the set-group-ID bit; `man chmod` now says: > To clear these bits for directories with a numeric mode requires an additional leading zero like 00755, leading minus like -6000, or leading equals like =755. Verified empirically on coreutils 9.11-2: ``` $ mkdir d && chmod 2700 d && chmod 0700 d && stat -c %a d 2700 # silently retained $ chmod =700 d && stat -c %a d 700 ``` 3. **`omarchy-windows-vm` uses `chmod 0700` and then strictly verifies `mode == 700`.** In `prepare_caller_mounts()` (omarchy-windows-vm line ~583 in omarchy 4.0.3-1): ```bash chmod 0700 -- "/proc/$BASHPID/fd/$storage_fd" "/proc/$BASHPID/fd/$shared_fd" || ... ... [[ $storage_mode != 700 || $shared_mode != 700 ]] && return 1 # fails here ``` The chmod succeeds, but the setgid bit survives it, so the privacy verification aborts the launch. Because of (1), this is a **guaranteed recurring failure**: every launch after a successful VM run fails until the user manually clears the bit. ## Steps to reproduce ``` chmod 2777 ~/Windows # or just run the Windows VM once — dockur does this for you omarchy windows vm launch # → ❌ Failed to start Windows VM! ``` ## Suggested fix Use a form that explicitly clears the special bits. Affected sites in `omarchy-windows-vm` (4.0.3-1): - line ~583 in `prepare_caller_mounts()`: `chmod 0700 -- ...` → `chmod 00700 -- ...` (or `chmod =700`) - line ~1018 in the install path: same change - line ~1061 in `write_credentials()`: same change (latent, `~/.config/windows` is unlikely to carry setgid) Verified workaround for users hitting this: `chmod g-s ~/Windows`. ## System details - Omarchy: 4.0.3-1 - Kernel: 7.2.3-arch1-3 - coreutils: 9.11-2 - Docker: 29.7.2, dockur/windows image - Storage: btrfs, VM disk at ~/.windows (data.img, 64G)
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.