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-agent-usage-codex: 4s RPC timeout intermittently drops Codex usage/limits
Reported by matthewjaybarr-png · filed Sep 27, 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
What happens
omarchy-agent-usage-codex spawns codex app-server and makes two JSON-RPC
calls to it — account/read then account/rateLimits/read — each bounded by
a 4-second timeout (rpc_request(..., timeout=4)).
A successful run typically completes in ~2s, but response time varies enough
that the call intermittently exceeds 4s. When it does, the script's exception
handler overwrites the entire result for that refresh:
except Exception as exc:
result["usageStatusText"] = "Codex limits unavailable"
result["authHelpText"] = str(exc) # e.g. "account/read"result["limits"] stays [] (its initial default), so any usage record
consumer reading the cached JSON — the bar widget and any app that reads~/.local/state/omarchy/agents/usage/codex.json — loses the rate-limit
display for that whole refresh cycle, even though the previous cycle had
valid data.
Reproduction
Ran the collector 8 times back-to-back on an idle-ish machine:
for i in $(seq 8); do
/usr/bin/omarchy-agent-usage-codex --force
done3 of 8 runs failed with the exact signature above (`usageStatusText: "Codex
limits unavailable", authHelpText: "account/read"`), each taking ~5s
end-to-end vs ~2s for a success — consistent with hitting the 4s timeout onaccount/read and returning shortly after.
Fix
The 4s timeout margin against codex app-server's actual response time is
too tight. Bumping both RPC timeouts (account/read,account/rateLimits/read) from 4s to something like 10s resolves it in local
testing (0 failures in 6 subsequent runs). Patch is a one-line-per-call
change in fetch_codex_rpc().
Environment
- omarchy package: 4.0.4-1
- codex-cli: 0.157.1
View raw text
## What happens
`omarchy-agent-usage-codex` spawns `codex app-server` and makes two JSON-RPC
calls to it — `account/read` then `account/rateLimits/read` — each bounded by
a 4-second timeout (`rpc_request(..., timeout=4)`).
A successful run typically completes in ~2s, but response time varies enough
that the call intermittently exceeds 4s. When it does, the script's exception
handler overwrites the *entire* result for that refresh:
```python
except Exception as exc:
result["usageStatusText"] = "Codex limits unavailable"
result["authHelpText"] = str(exc) # e.g. "account/read"
```
`result["limits"]` stays `[]` (its initial default), so any usage record
consumer reading the cached JSON — the bar widget and any app that reads
`~/.local/state/omarchy/agents/usage/codex.json` — loses the rate-limit
display for that whole refresh cycle, even though the previous cycle had
valid data.
## Reproduction
Ran the collector 8 times back-to-back on an idle-ish machine:
```
for i in $(seq 8); do
/usr/bin/omarchy-agent-usage-codex --force
done
```
3 of 8 runs failed with the exact signature above (`usageStatusText: "Codex
limits unavailable"`, `authHelpText: "account/read"`), each taking ~5s
end-to-end vs ~2s for a success — consistent with hitting the 4s timeout on
`account/read` and returning shortly after.
## Fix
The 4s timeout margin against `codex app-server`'s actual response time is
too tight. Bumping both RPC timeouts (`account/read`,
`account/rateLimits/read`) from 4s to something like 10s resolves it in local
testing (0 failures in 6 subsequent runs). Patch is a one-line-per-call
change in `fetch_codex_rpc()`.
## Environment
- omarchy package: 4.0.4-1
- codex-cli: 0.157.1Validation
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 19:33 UTC