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-112GitHub issuePublicReceived

Agents panel: Codex collector counts no Pi usage when $HOME is a git repo (rg honors ~/.gitignore)

Reported by Ikractoia · filed Sep 25, 2026Closed upstream on 2026-10-04 by the bot omarchybot; the closing comment says it was fixed by PR #14049. GitHub close reason: completed.

Received and recorded verbatim. Nothing has been checked yet.

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

Agents panel: Codex collector counts no Pi usage when $HOME is a git repo (rg honors ~/.gitignore)revision 1 · captured 2026-09-28 21:23 UTC via poll

System details

Intel Core i9-10900K, NVIDIA GeForce RTX 2080 Ti, Omarchy 4.0.4-1, Linux 7.2.5-3-omarchy, ripgrep 15.2.0, codex-cli 0.157.0

What's wrong?

When $HOME is itself a git working tree (a common bare-ish dotfiles setup with a whitelist ~/.gitignore of *), the Codex tab of the agents panel counts zero Pi usage, even with tens of thousands of openai-codex messages under ~/.pi/agent/sessions/.

scan_pi_sessions() in bin/omarchy-agent-usage-codex runs:

[rg, "--json", "-e", r'"provider"\s*:\s*"openai-codex"', "-e", r'"api"\s*:\s*"openai-codex', str(root)]

Because root is a directory, ripgrep applies the parent repository's ignore rules (~/.gitignore, ~/.git/info/exclude, the global git excludes). Every session file is ignored, so rg reports "searches":0 and the scan silently returns nothing. The Claude collector is not affected because it walks the Pi roots with Path.rglob().

$ cd ~ && git rev-parse --show-toplevel
/home/me
$ git check-ignore -v .pi/agent/sessions/x.jsonl
.gitignore:2:*	.pi/agent/sessions/x.jsonl
$ rg -c '"provider"\s*:\s*"openai-codex"' ~/.pi/agent/sessions | wc -l
0
$ rg -c --no-ignore '"provider"\s*:\s*"openai-codex"' ~/.pi/agent/sessions | wc -l
222

Steps to reproduce

  1. Make $HOME a git repo with echo '*' > ~/.gitignore (dotfiles whitelist pattern).
  2. Use a Codex subscription through Pi so ~/.pi/agent/sessions/**/*.jsonl contains "provider":"openai-codex" messages.
  3. omarchy-agent-usage-update codex --force && jq '.totalPrompts, (.modelUsage|keys)' ~/.local/state/omarchy/agents/usage/codex.json

Expected: Pi's openai-codex models and prompts are included.
Actual: only native Codex CLI sessions are counted (here 65 prompts instead of 33,181; Pi's gpt-5.6-* models missing entirely).

Suggested fix

The session roots are data directories, not source trees, so VCS ignore rules should not apply. Pass --no-ignore (and --hidden, in case a session root or file is dot-prefixed) to the rg invocation. --no-ignore also stops a stray .ignore/.rgignore from hiding sessions.

Local workaround until then: printf '!*\n' > ~/.pi/agent/sessions/.ignore (a .ignore file outranks .gitignore in ripgrep).

Note: #12595 passes explicit file paths to rg, which ripgrep searches regardless of ignore rules, so it would fix this incidentally — but nothing there guards against the regression if the invocation goes back to directory roots.

View raw text
### System details

Intel Core i9-10900K, NVIDIA GeForce RTX 2080 Ti, Omarchy 4.0.4-1, Linux 7.2.5-3-omarchy, ripgrep 15.2.0, codex-cli 0.157.0

### What's wrong?

When `$HOME` is itself a git working tree (a common bare-ish dotfiles setup with a whitelist `~/.gitignore` of `*`), the Codex tab of the agents panel counts **zero** Pi usage, even with tens of thousands of `openai-codex` messages under `~/.pi/agent/sessions/`.

`scan_pi_sessions()` in `bin/omarchy-agent-usage-codex` runs:

```python
[rg, "--json", "-e", r'"provider"\s*:\s*"openai-codex"', "-e", r'"api"\s*:\s*"openai-codex', str(root)]
```

Because `root` is a directory, ripgrep applies the parent repository's ignore rules (`~/.gitignore`, `~/.git/info/exclude`, the global git excludes). Every session file is ignored, so `rg` reports `"searches":0` and the scan silently returns nothing. The Claude collector is not affected because it walks the Pi roots with `Path.rglob()`.

```text
$ cd ~ && git rev-parse --show-toplevel
/home/me
$ git check-ignore -v .pi/agent/sessions/x.jsonl
.gitignore:2:*	.pi/agent/sessions/x.jsonl
$ rg -c '"provider"\s*:\s*"openai-codex"' ~/.pi/agent/sessions | wc -l
0
$ rg -c --no-ignore '"provider"\s*:\s*"openai-codex"' ~/.pi/agent/sessions | wc -l
222
```

### Steps to reproduce

1. Make `$HOME` a git repo with `echo '*' > ~/.gitignore` (dotfiles whitelist pattern).
2. Use a Codex subscription through Pi so `~/.pi/agent/sessions/**/*.jsonl` contains `"provider":"openai-codex"` messages.
3. `omarchy-agent-usage-update codex --force && jq '.totalPrompts, (.modelUsage|keys)' ~/.local/state/omarchy/agents/usage/codex.json`

Expected: Pi's `openai-codex` models and prompts are included.
Actual: only native Codex CLI sessions are counted (here 65 prompts instead of 33,181; Pi's `gpt-5.6-*` models missing entirely).

### Suggested fix

The session roots are data directories, not source trees, so VCS ignore rules should not apply. Pass `--no-ignore` (and `--hidden`, in case a session root or file is dot-prefixed) to the `rg` invocation. `--no-ignore` also stops a stray `.ignore`/`.rgignore` from hiding sessions.

Local workaround until then: `printf '!*\n' > ~/.pi/agent/sessions/.ignore` (a `.ignore` file outranks `.gitignore` in ripgrep).

Note: #12595 passes explicit file paths to `rg`, which ripgrep searches regardless of ignore rules, so it would fix this incidentally — but nothing there guards against the regression if the invocation goes back to directory roots.

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.