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 launch fails: chmod 0700 does not clear setgid bit on ~/Windows
Reported by m13072234271 · filed Sep 30, 2026Closed upstream on 2026-09-30 by its own reporter m13072234271. GitHub close reason: completed. Closed by its own reporter — not by itself evidence of a fix.
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 exits with ❌ Failed to start Windows VM! even though the VM itself is healthy. omarchy windows vm status reports the container as stopped/exited, and re-running launch keeps failing.
Root cause
omarchy-windows-vm's prepare_caller_mounts() runs this privacy preflight on the user's mount sources (~/.windows and ~/Windows):
chmod 0700 -- "/proc/$BASHPID/fd/$storage_fd" "/proc/$BASHPID/fd/$shared_fd"
storage_mode=$(stat -Lc '%a' ...)
shared_mode=$(stat -Lc '%a' ...)
if [[ $storage_mode != 700 || $shared_mode != 700 ]]; then
return 1
fiThe check assumes chmod 0700 results in mode 0700. On Linux that is true for files, but not for directories: chmod 0700 does not clear the setgid bit on a directory (only chmod g-s does). Verified on this system:
$ mkdir d && touch f && chmod 2755 d f
$ chmod 0700 d f
$ stat -c '%a %A %n' d f
2700 drwx--S--- d # setgid survives on the directory
700 -rwx------ f # cleared on the fileThe setgid bit gets onto ~/Windows because the dockurr/windows container's Samba setup runs chmod 2777 on /shared when it is empty (/run/samba.sh):
elif [[ "$empty" == "Y" ]] && chmod 2777 "$dir" 2>/dev/null; then
...
# Keep newly created content in the shared group through the setgid bit.
if ! chmod 2777 "$dir"; thenSo on first start with an empty ~/Windows, Samba sets the setgid bit; the next launch's chmod 0700 cannot remove it, the != 700 check fails, and launch bails out with the generic "Failed to start Windows VM!" message.
Steps to reproduce
omarchy windows vm install(leaves~/Windowsempty)- Start the VM once and let Samba initialize
/shared(it runschmod 2777) omarchy windows vm stopomarchy windows vm launch- Launch fails;
stat -c '%a' ~/Windowsshows2700instead of700
Expected
launch starts the VM.
Actual
launch prints ❌ Failed to start Windows VM! and exits 1.
Workaround
chmod g-s ~/Windows
omarchy windows vm launch(Also drop a placeholder file into ~/Windows so Samba never sees it as empty and re-applies chmod 2777 on the next container start.)
Suggested fix
Clear the setgid bit explicitly on the mount sources in prepare_caller_mounts() (and anywhere else the script relies on chmod 0700 on a directory), e.g.:
chmod g-s -- "/proc/$BASHPID/fd/$storage_fd" "/proc/$BASHPID/fd/$shared_fd"or accept a setgid-only mode (2xxx) as valid in the check.
System
- Omarchy 4.0.4-1
- Kernel 7.2.5-3-omarchy
- CPU: AMD Ryzen 7 H 255 w/ Radeon 780M Graphics
- Root filesystem: btrfs (LUKS)
- docker image:
dockurr/windowsv6.05
Full diagnostic log: omarchy debug --no-sudo --print (898 lines) available on request.
View raw text
## What happened `omarchy windows vm launch` exits with `❌ Failed to start Windows VM!` even though the VM itself is healthy. `omarchy windows vm status` reports the container as stopped/exited, and re-running launch keeps failing. ## Root cause `omarchy-windows-vm`'s `prepare_caller_mounts()` runs this privacy preflight on the user's mount sources (`~/.windows` and `~/Windows`): ```bash chmod 0700 -- "/proc/$BASHPID/fd/$storage_fd" "/proc/$BASHPID/fd/$shared_fd" storage_mode=$(stat -Lc '%a' ...) shared_mode=$(stat -Lc '%a' ...) if [[ $storage_mode != 700 || $shared_mode != 700 ]]; then return 1 fi ``` The check assumes `chmod 0700` results in mode `0700`. On Linux that is true for **files**, but **not for directories**: `chmod 0700` does not clear the setgid bit on a directory (only `chmod g-s` does). Verified on this system: ```bash $ mkdir d && touch f && chmod 2755 d f $ chmod 0700 d f $ stat -c '%a %A %n' d f 2700 drwx--S--- d # setgid survives on the directory 700 -rwx------ f # cleared on the file ``` The setgid bit gets onto `~/Windows` because the `dockurr/windows` container's Samba setup runs `chmod 2777` on `/shared` when it is empty (`/run/samba.sh`): ```bash elif [[ "$empty" == "Y" ]] && chmod 2777 "$dir" 2>/dev/null; then ... # Keep newly created content in the shared group through the setgid bit. if ! chmod 2777 "$dir"; then ``` So on first start with an empty `~/Windows`, Samba sets the setgid bit; the next `launch`'s `chmod 0700` cannot remove it, the `!= 700` check fails, and launch bails out with the generic "Failed to start Windows VM!" message. ## Steps to reproduce 1. `omarchy windows vm install` (leaves `~/Windows` empty) 2. Start the VM once and let Samba initialize `/shared` (it runs `chmod 2777`) 3. `omarchy windows vm stop` 4. `omarchy windows vm launch` 5. Launch fails; `stat -c '%a' ~/Windows` shows `2700` instead of `700` ## Expected `launch` starts the VM. ## Actual `launch` prints `❌ Failed to start Windows VM!` and exits 1. ## Workaround ```bash chmod g-s ~/Windows omarchy windows vm launch ``` (Also drop a placeholder file into `~/Windows` so Samba never sees it as empty and re-applies `chmod 2777` on the next container start.) ## Suggested fix Clear the setgid bit explicitly on the mount sources in `prepare_caller_mounts()` (and anywhere else the script relies on `chmod 0700` on a directory), e.g.: ```bash chmod g-s -- "/proc/$BASHPID/fd/$storage_fd" "/proc/$BASHPID/fd/$shared_fd" ``` or accept a setgid-only mode (`2xxx`) as valid in the check. ## System - Omarchy 4.0.4-1 - Kernel 7.2.5-3-omarchy - CPU: AMD Ryzen 7 H 255 w/ Radeon 780M Graphics - Root filesystem: btrfs (LUKS) - docker image: `dockurr/windows` v6.05 Full diagnostic log: `omarchy debug --no-sudo --print` (898 lines) available on request.
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.