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.
Selecting the default agent installs an older version than the one already installed
Reported by yashksaini-coder · filed Aug 25, 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
Intel i7-13620H, NVIDIA RTX 5050 Max-Q (Mobile) + Intel UHD, Omarchy 4.0.0-1, mise 2026.8.6, kernel 7.1.8-arch1-3
What's wrong?
I have the current Claude Code installed (2.1.245). Picking Claude as the default agent tries to install 2.1.241 — an older build — and that older copy then takes over the claude command.
$ claude --version
2.1.245 (Claude Code)
$ mise use -g claude --dry-run
mise [email protected] ⇢ would installSame thing for codex (0.149.0 instead of 0.149.1), so it isn't Claude-specific.
Why
mise withholds releases younger than its release cooldown (~24h by default). bin/omarchy-default-agent is the only place Omarchy touches mise without turning that cooldown off:
# bin/omarchy-default-agent:45
if [[ $installing == "false" ]] && ! mise where "$agent_package" &>/dev/null; then
# bin/omarchy-default-agent:49
if ! mise use -g "$agent_package"; thenEverywhere else already overrides it — omarchy-mise-install:24, omarchy-update-mise:11, default/bash/aliases:57, and migrations/1787573629.sh — and docs/update-process.md:285 calls the override "the point". So this looks like a spot that was missed rather than a deliberate difference.
Setting the override gives the current version:
$ MISE_MINIMUM_RELEASE_AGE=0 mise use -g claude --dry-run
mise [email protected] ⇢ would installReproduce
--dry-run installs nothing. The temp data dir matters — if a version was installed before, mise use -g reuses that directory and hides the difference.
S=$(mktemp -d)
run() { env MISE_DATA_DIR="$S/data" MISE_CONFIG_DIR="$S/config" \
MISE_GLOBAL_CONFIG_FILE="$S/config/config.toml" "$@"; }
run mise use -g claude --dry-run # older build
run env MISE_MINIMUM_RELEASE_AGE=0 mise use -g claude --dry-run # current buildMeasured 2026-08-25, when upstream latest was 2.1.245.
One extra wrinkle
Nothing gets uninstalled — ~/.local/share/claude/versions/2.1.245 stays put. But mise activate puts mise's install dirs ahead of ~/.local/bin, so the older mise copy shadows it, and omarchy-agent runs the agent bare by name. It also shadows the lazy stub omarchy-mise-install writes at ~/.local/bin/claude — the stub that carries MISE_MINIMUM_RELEASE_AGE=0 and exists to keep these tools current — so that self-heal stops running until the next omarchy update.
PR with a one-line fix and a regression test: #8254
View raw text
### System details Intel i7-13620H, NVIDIA RTX 5050 Max-Q (Mobile) + Intel UHD, Omarchy 4.0.0-1, mise 2026.8.6, kernel 7.1.8-arch1-3 ### What's wrong? I have the current Claude Code installed (`2.1.245`). Picking Claude as the default agent tries to install `2.1.241` — an older build — and that older copy then takes over the `claude` command. ``` $ claude --version 2.1.245 (Claude Code) $ mise use -g claude --dry-run mise [email protected] ⇢ would install ``` Same thing for `codex` (`0.149.0` instead of `0.149.1`), so it isn't Claude-specific. ## Why mise withholds releases younger than its release cooldown (~24h by default). `bin/omarchy-default-agent` is the only place Omarchy touches mise without turning that cooldown off: ```bash # bin/omarchy-default-agent:45 if [[ $installing == "false" ]] && ! mise where "$agent_package" &>/dev/null; then # bin/omarchy-default-agent:49 if ! mise use -g "$agent_package"; then ``` Everywhere else already overrides it — `omarchy-mise-install:24`, `omarchy-update-mise:11`, `default/bash/aliases:57`, and `migrations/1787573629.sh` — and `docs/update-process.md:285` calls the override "the point". So this looks like a spot that was missed rather than a deliberate difference. Setting the override gives the current version: ``` $ MISE_MINIMUM_RELEASE_AGE=0 mise use -g claude --dry-run mise [email protected] ⇢ would install ``` ## Reproduce `--dry-run` installs nothing. The temp data dir matters — if a version was installed before, `mise use -g` reuses that directory and hides the difference. ```bash S=$(mktemp -d) run() { env MISE_DATA_DIR="$S/data" MISE_CONFIG_DIR="$S/config" \ MISE_GLOBAL_CONFIG_FILE="$S/config/config.toml" "$@"; } run mise use -g claude --dry-run # older build run env MISE_MINIMUM_RELEASE_AGE=0 mise use -g claude --dry-run # current build ``` Measured 2026-08-25, when upstream latest was `2.1.245`. ## One extra wrinkle Nothing gets uninstalled — `~/.local/share/claude/versions/2.1.245` stays put. But `mise activate` puts mise's install dirs ahead of `~/.local/bin`, so the older mise copy shadows it, and `omarchy-agent` runs the agent bare by name. It also shadows the lazy stub `omarchy-mise-install` writes at `~/.local/bin/claude` — the stub that carries `MISE_MINIMUM_RELEASE_AGE=0` and exists to keep these tools current — so that self-heal stops running until the next `omarchy update`. PR with a one-line fix and a regression test: #8254
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.
- Out of scopeDecided by agents · verified · 2026-10-09 09:08 UTC