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-launch-editor --inline passes no wait flag to GUI editors, so `git commit` records the unedited message
Reported by pjover · filed Sep 23, 2026 · open at source
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
System details
- Omarchy 4.0.3-mac.1 (
omarchy-dev4.0.3.r6962.ga67d7f7-1) - Hyprland 0.56.2-3, uwsm 0.26.7-1, git 2.55.0-1
- visual-studio-code-bin 1.125.0-1
- Apple MacBook Pro (16-inch, M1 Pro, 2021), aarch64, kernel 7.1.13-3-1-ARCH
What's wrong
Omarchy sets EDITOR="omarchy-launch-editor --inline". The --inline contract is
"run the editor so the caller blocks on it" — honored for TUI editors viaexec "$editor" "$@".
For a GUI editor, the *) branch runs:
exec setsid uwsm-app -- "$editor" "$@"
with no wait flag. Every mainstream GUI editor, when an instance is already
running, hands the file to that instance and exits 0 immediately. git commit
resumes, reads an unmodified COMMIT_EDITMSG, and commits the template message.
No error is shown.
Steps to reproduce
- Defaults → Editor → VS Code (or
echo code > ~/.local/state/omarchy/defaults/editor) - Have VS Code already running (
code .in any project) - In a git repo with a staged change:
git commit # or: git commit --amend
Observed: git returns in ~1.5s and commits immediately. VS Code opensCOMMIT_EDITMSG in the running window a moment later; anything typed there is
never read.
Expected: git blocks until the COMMIT_EDITMSG tab is closed, as code --wait
provides.
Impact
Commits silently recorded with the unedited template message. In my case four
consecutive git commit --amend runs failed to fix a typo in a commit subject,
with no error at any point — the amend appears to succeed each time.
The same applies to anything using $EDITOR as a blocking editor: git rebase -i,git commit, crontab -e, systemctl edit.
Suggested fix
Pass the editor's wait flag in the --inline GUI path:
case "${editor##*/}" in
code|code-insiders|codium|cursor|windsurf|zed|zeditor) wait_flag=(--wait) ;;
subl|sublime_text) wait_flag=(-w) ;;
gnome-text-editor|gedit) wait_flag=(--wait) ;;
*) wait_flag=() ;;
esac
exec setsid -w uwsm-app -- "$editor" "${wait_flag[@]}" "$@"
Only when --inline is given; the non-inline launcher path should stay detached.
Secondary: setsid without -w drops the exit status
setsid forks when its caller is already a process-group leader, and the parent
then exits 0 immediately without waiting:
uwsm-app -- slow-exit-7 rc=7 3041ms
setsid uwsm-app -- slow-exit-7 rc=0 1ms
setsid -w -- slow-exit-7 rc=7 3036ms
This does not trigger under git's current process topology, but it would defeat
the fix above and already discards editor failures in that case. setsid -w in
the --inline path fixes both.
Filed by Claude Opus 5 via Claude Code.
View raw text
## System details
- Omarchy 4.0.3-mac.1 (`omarchy-dev` 4.0.3.r6962.ga67d7f7-1)
- Hyprland 0.56.2-3, uwsm 0.26.7-1, git 2.55.0-1
- visual-studio-code-bin 1.125.0-1
- Apple MacBook Pro (16-inch, M1 Pro, 2021), aarch64, kernel 7.1.13-3-1-ARCH
## What's wrong
Omarchy sets `EDITOR="omarchy-launch-editor --inline"`. The `--inline` contract is
"run the editor so the caller blocks on it" — honored for TUI editors via
`exec "$editor" "$@"`.
For a GUI editor, the `*)` branch runs:
exec setsid uwsm-app -- "$editor" "$@"
with no wait flag. Every mainstream GUI editor, when an instance is already
running, hands the file to that instance and exits 0 immediately. `git commit`
resumes, reads an unmodified `COMMIT_EDITMSG`, and commits the template message.
No error is shown.
## Steps to reproduce
1. Defaults → Editor → VS Code (or `echo code > ~/.local/state/omarchy/defaults/editor`)
2. Have VS Code already running (`code .` in any project)
3. In a git repo with a staged change:
git commit # or: git commit --amend
Observed: git returns in ~1.5s and commits immediately. VS Code opens
`COMMIT_EDITMSG` in the running window a moment later; anything typed there is
never read.
Expected: git blocks until the `COMMIT_EDITMSG` tab is closed, as `code --wait`
provides.
## Impact
Commits silently recorded with the unedited template message. In my case four
consecutive `git commit --amend` runs failed to fix a typo in a commit subject,
with no error at any point — the amend appears to succeed each time.
The same applies to anything using `$EDITOR` as a blocking editor: `git rebase -i`,
`git commit`, `crontab -e`, `systemctl edit`.
## Suggested fix
Pass the editor's wait flag in the `--inline` GUI path:
case "${editor##*/}" in
code|code-insiders|codium|cursor|windsurf|zed|zeditor) wait_flag=(--wait) ;;
subl|sublime_text) wait_flag=(-w) ;;
gnome-text-editor|gedit) wait_flag=(--wait) ;;
*) wait_flag=() ;;
esac
exec setsid -w uwsm-app -- "$editor" "${wait_flag[@]}" "$@"
Only when `--inline` is given; the non-inline launcher path should stay detached.
## Secondary: `setsid` without `-w` drops the exit status
`setsid` forks when its caller is already a process-group leader, and the parent
then exits 0 immediately without waiting:
uwsm-app -- slow-exit-7 rc=7 3041ms
setsid uwsm-app -- slow-exit-7 rc=0 1ms
setsid -w -- slow-exit-7 rc=7 3036ms
This does not trigger under git's current process topology, but it would defeat
the fix above and already discards editor failures in that case. `setsid -w` in
the `--inline` path fixes both.
---
Filed by Claude Opus 5 via Claude Code.
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
- Fixed bypr/13305· 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 19:35 UTC