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.
Brave Origin never receives the yt-dlp/Copy URL native messaging hosts: browser_dirs omits its profile, so both extensions load but silently do nothing
Reported by mateuspim · filed Aug 17, 2026Closed upstream on 2026-09-10 by its own reporter mateuspim. 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
System details
- Omarchy 4.0.0-1 (
omarchy version→4.0.0-1,/usr/share/omarchy/version→4.0.0.alpha) - Linux 7.1.8-arch1-3, AMD Ryzen 9 9900X, Radeon Graphics (amdgpu), ASUS TUF GAMING B650M-E WIFI
brave-origin-bin 1:1.93.136-1, default browser (xdg-settings get default-web-browser→brave-origin.desktop)yt-dlp 2026.07.04-1,jq,ffmpeg 2:9.0.1-1,mpvall present
What's wrong?
On Brave Origin, the Download Video extension (Alt+Shift+D) is completely inert. No download, no OSD, no notification, no error — nothing at all.
Copy URL (Alt+Shift+L) is broken by the same defect on the same machine, though I should be precise about the evidence: I reproduced the dead-shortcut symptom directly for Download Video, and diagnosed Copy URL from its host manifest com.omarchy.copy_url.json being equally absent from the profile. Since the native host is that extension's only route to the clipboard, it cannot function without it — but I fixed both at once and so never observed its broken state separately.
Both extensions appear correctly installed: they show in the toolbar, because --load-extension in ~/.config/brave-origin-flags.conf is written correctly. Only the browser-side half is set up. The native messaging host half is missing, so chrome.runtime.sendNativeMessage fails, and since background.js deliberately swallows the error (void chrome.runtime.lastError) the failure is entirely silent.
This is not the same bug as #6816 (stale extensions.commands registration). There, the native host manifests were present and clicking the toolbar action worked — only the accelerator was dead. Here the manifests do not exist for this browser at all, so both the accelerator and the toolbar click do nothing.
Root cause
omarchy-install-chromium-ytdlp and omarchy-install-chromium-copy-url write their host manifests into a hardcoded list of profile roots that has no Brave Origin entry:
browser_dirs=(
"$HOME/.config/chromium"
"$HOME/.config/google-chrome"
"$HOME/.config/google-chrome-beta"
"$HOME/.config/google-chrome-unstable"
"$HOME/.config/BraveSoftware/Brave-Browser"
"$HOME/.config/BraveSoftware/Brave-Browser-Beta"
"$HOME/.config/BraveSoftware/Brave-Browser-Nightly"
"$HOME/.config/microsoft-edge"
"$HOME/.config/microsoft-edge-dev"
)Brave Origin's user-data-dir is ~/.config/BraveSoftware/Brave-Origin (Beta: ~/.config/BraveSoftware/Brave-Origin-Beta, per #6879) — neither is in the list. Chromium resolves the user-level host directory as user-data-dir + NativeMessagingHosts, so it looks in a directory Omarchy never populates.
Nothing in the tree references Brave Origin's profile path:
$ grep -rl 'BraveSoftware/Brave-Browser' /usr/bin/ /usr/share/omarchy/
/usr/bin/omarchy-install-chromium-copy-url
/usr/bin/omarchy-install-chromium-ytdlp
/usr/share/omarchy/migrations/1786643346.sh
$ grep -rl 'Brave-Origin' /usr/bin/ /usr/share/omarchy/
$ # no matches anywhereWhich is odd, because Brave Origin is otherwise first-class: it is menu-installable (install.browser.brave-origin in omarchy-menu.jsonc), selectable as default, and migration 1784510887.sh auto-installs it while dropping Brave Origin Beta.
omarchy-install-browser brave-origin even calls both installers itself:
copy_chromium_flags() {
mkdir -p ~/.config
cp -f "$OMARCHY_PATH/config/chromium-flags.conf" "$1"
omarchy-install-chromium-copy-url
omarchy-install-chromium-ytdlp
}so installing Brave Origin through Omarchy's own menu writes the flags (extensions load) and then writes the host manifests into nine directories, none of which is the browser it just installed. On this machine the effect is visible directly — the installers created the directory ~/.config/BraveSoftware/Brave-Browser/NativeMessagingHosts/ for a browser that is not installed, and populated it, while the real profile's own NativeMessagingHosts/ sat empty:
$ ls ~/.config/BraveSoftware/Brave-Browser/ # not installed
NativeMessagingHosts # com.omarchy.ytdlp.json, com.omarchy.copy_url.json
$ ls ~/.config/BraveSoftware/Brave-Origin/NativeMessagingHosts/ # actually in use
$ # emptySecondary instance of the same omission: migration 1786643346.sh (the #6816 Copy URL repair) carries its own profile_roots list — expanded to 13 entries including vivaldi, opera and helium — and also omits both Brave Origin paths. So that repair silently never runs on Omarchy's own default browser.
Steps to reproduce
- On Omarchy 4.0.0, install Brave Origin: Setup → Install → Browser → Brave Origin (or
omarchy-install-browser brave-origin). - Make it the default browser and launch it.
- Open any page with a video and press Alt+Shift+D (or click the Download Video toolbar icon).
- Nothing happens.
ls ~/.config/BraveSoftware/Brave-Origin/NativeMessagingHosts/is empty.
Fix verified locally
Copying the manifests into the real profile root fixes both extensions immediately, with no browser restart — Chromium reads the host manifest from disk on every sendNativeMessage call:
cp ~/.config/BraveSoftware/Brave-Browser/NativeMessagingHosts/com.omarchy.*.json \
~/.config/BraveSoftware/Brave-Origin/NativeMessagingHosts/Alt+Shift+D then downloads correctly: progress OSD, then the "Download complete" toast with thumbnail.
Confirmed the rest of the chain was already sound, so the manifest location is the only defect: the extension's pinned manifest key hashes to dedjgknigfeelejglamclffonmophnfl, exactly matching allowed_origins in com.omarchy.ytdlp.json, and driving omarchy-chromium-ytdlp-host with a hand-built native-messaging frame parses the URL and validates fine.
Suggested resolution
- Add
$HOME/.config/BraveSoftware/Brave-Originand$HOME/.config/BraveSoftware/Brave-Origin-Betatobrowser_dirsin bothomarchy-install-chromium-ytdlpandomarchy-install-chromium-copy-url, and toprofile_rootsin migration1786643346.sh. - A migration to backfill the manifests for users already on Brave Origin, since the installers only run on browser install/refresh — affected users otherwise stay broken until they happen to run
omarchy-refresh-chromium. - Worth factoring the profile-root list into one shared helper. It is currently duplicated across at least three files with three different contents, which is how Brave Origin came to be missing from all of them; #6476 was the same class of bug (migration writing to
brave-origin-betaflags instead ofbrave-origin).
Filed by Claude Opus 5 via Claude Code, on behalf of the machine owner.
View raw text
### System details
- Omarchy 4.0.0-1 (`omarchy version` → `4.0.0-1`, `/usr/share/omarchy/version` → `4.0.0.alpha`)
- Linux 7.1.8-arch1-3, AMD Ryzen 9 9900X, Radeon Graphics (amdgpu), ASUS TUF GAMING B650M-E WIFI
- `brave-origin-bin 1:1.93.136-1`, default browser (`xdg-settings get default-web-browser` → `brave-origin.desktop`)
- `yt-dlp 2026.07.04-1`, `jq`, `ffmpeg 2:9.0.1-1`, `mpv` all present
### What's wrong?
On Brave Origin, the **Download Video** extension (Alt+Shift+D) is completely inert. No download, no OSD, no notification, no error — nothing at all.
**Copy URL** (Alt+Shift+L) is broken by the same defect on the same machine, though I should be precise about the evidence: I reproduced the dead-shortcut symptom directly for Download Video, and diagnosed Copy URL from its host manifest `com.omarchy.copy_url.json` being equally absent from the profile. Since the native host is that extension's only route to the clipboard, it cannot function without it — but I fixed both at once and so never observed its broken state separately.
Both extensions *appear* correctly installed: they show in the toolbar, because `--load-extension` in `~/.config/brave-origin-flags.conf` is written correctly. Only the browser-side half is set up. The native messaging host half is missing, so `chrome.runtime.sendNativeMessage` fails, and since `background.js` deliberately swallows the error (`void chrome.runtime.lastError`) the failure is entirely silent.
This is not the same bug as #6816 (stale `extensions.commands` registration). There, the native host manifests were present and clicking the toolbar action worked — only the accelerator was dead. Here the manifests do not exist for this browser at all, so both the accelerator *and* the toolbar click do nothing.
### Root cause
`omarchy-install-chromium-ytdlp` and `omarchy-install-chromium-copy-url` write their host manifests into a hardcoded list of profile roots that has no Brave Origin entry:
```bash
browser_dirs=(
"$HOME/.config/chromium"
"$HOME/.config/google-chrome"
"$HOME/.config/google-chrome-beta"
"$HOME/.config/google-chrome-unstable"
"$HOME/.config/BraveSoftware/Brave-Browser"
"$HOME/.config/BraveSoftware/Brave-Browser-Beta"
"$HOME/.config/BraveSoftware/Brave-Browser-Nightly"
"$HOME/.config/microsoft-edge"
"$HOME/.config/microsoft-edge-dev"
)
```
Brave Origin's user-data-dir is `~/.config/BraveSoftware/Brave-Origin` (Beta: `~/.config/BraveSoftware/Brave-Origin-Beta`, per #6879) — neither is in the list. Chromium resolves the user-level host directory as *user-data-dir* + `NativeMessagingHosts`, so it looks in a directory Omarchy never populates.
Nothing in the tree references Brave Origin's profile path:
```console
$ grep -rl 'BraveSoftware/Brave-Browser' /usr/bin/ /usr/share/omarchy/
/usr/bin/omarchy-install-chromium-copy-url
/usr/bin/omarchy-install-chromium-ytdlp
/usr/share/omarchy/migrations/1786643346.sh
$ grep -rl 'Brave-Origin' /usr/bin/ /usr/share/omarchy/
$ # no matches anywhere
```
Which is odd, because Brave Origin is otherwise first-class: it is menu-installable (`install.browser.brave-origin` in `omarchy-menu.jsonc`), selectable as default, and migration `1784510887.sh` auto-installs it while dropping Brave Origin Beta.
`omarchy-install-browser brave-origin` even calls both installers itself:
```bash
copy_chromium_flags() {
mkdir -p ~/.config
cp -f "$OMARCHY_PATH/config/chromium-flags.conf" "$1"
omarchy-install-chromium-copy-url
omarchy-install-chromium-ytdlp
}
```
so installing Brave Origin through Omarchy's own menu writes the flags (extensions load) and then writes the host manifests into nine directories, none of which is the browser it just installed. On this machine the effect is visible directly — the installers created the directory `~/.config/BraveSoftware/Brave-Browser/NativeMessagingHosts/` for a browser that is not installed, and populated it, while the real profile's own `NativeMessagingHosts/` sat empty:
```console
$ ls ~/.config/BraveSoftware/Brave-Browser/ # not installed
NativeMessagingHosts # com.omarchy.ytdlp.json, com.omarchy.copy_url.json
$ ls ~/.config/BraveSoftware/Brave-Origin/NativeMessagingHosts/ # actually in use
$ # empty
```
**Secondary instance of the same omission:** migration `1786643346.sh` (the #6816 Copy URL repair) carries its own `profile_roots` list — expanded to 13 entries including vivaldi, opera and helium — and *also* omits both Brave Origin paths. So that repair silently never runs on Omarchy's own default browser.
### Steps to reproduce
1. On Omarchy 4.0.0, install Brave Origin: Setup → Install → Browser → Brave Origin (or `omarchy-install-browser brave-origin`).
2. Make it the default browser and launch it.
3. Open any page with a video and press Alt+Shift+D (or click the Download Video toolbar icon).
4. Nothing happens. `ls ~/.config/BraveSoftware/Brave-Origin/NativeMessagingHosts/` is empty.
### Fix verified locally
Copying the manifests into the real profile root fixes both extensions immediately, with no browser restart — Chromium reads the host manifest from disk on every `sendNativeMessage` call:
```bash
cp ~/.config/BraveSoftware/Brave-Browser/NativeMessagingHosts/com.omarchy.*.json \
~/.config/BraveSoftware/Brave-Origin/NativeMessagingHosts/
```
Alt+Shift+D then downloads correctly: progress OSD, then the "Download complete" toast with thumbnail.
Confirmed the rest of the chain was already sound, so the manifest location is the only defect: the extension's pinned manifest `key` hashes to `dedjgknigfeelejglamclffonmophnfl`, exactly matching `allowed_origins` in `com.omarchy.ytdlp.json`, and driving `omarchy-chromium-ytdlp-host` with a hand-built native-messaging frame parses the URL and validates fine.
### Suggested resolution
- Add `$HOME/.config/BraveSoftware/Brave-Origin` and `$HOME/.config/BraveSoftware/Brave-Origin-Beta` to `browser_dirs` in both `omarchy-install-chromium-ytdlp` and `omarchy-install-chromium-copy-url`, and to `profile_roots` in migration `1786643346.sh`.
- A migration to backfill the manifests for users already on Brave Origin, since the installers only run on browser install/refresh — affected users otherwise stay broken until they happen to run `omarchy-refresh-chromium`.
- Worth factoring the profile-root list into one shared helper. It is currently duplicated across at least three files with three different contents, which is how Brave Origin came to be missing from all of them; #6476 was the same class of bug (migration writing to `brave-origin-beta` flags instead of `brave-origin`).
---
Filed by Claude Opus 5 via Claude Code, on behalf of the machine owner.
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.