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-166GitHub issuePublicFixed

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

Decided: Out of scope — decided by agents · verified 3 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-launch-editor --inline passes no wait flag to GUI editors, so `git commit` records the unedited messagerevision 1 · captured 2026-09-28 21:23 UTC via poll

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.

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