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-1115GitHub issuePublicDecided· Out of scope

omarchy-remove-security-sshd consults root's authorized_keys under sudo/pkexec, so the user's keys survive removal

Reported by shaynhornik · filed Sep 1, 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-remove-security-sshd consults root's authorized_keys under sudo/pkexec, so the user's keys survive removalrevision 1 · captured 2026-09-28 21:24 UTC via poll

Description

bin/omarchy-remove-security-sshd resolves the keys file as AUTHORIZED_KEYS="$HOME/.ssh/authorized_keys". The script is marked omarchy:requires-sudo=true, and under sudo (or pkexec, the escalation default/agents/skills/omarchy/SKILL.md prescribes for terminal-less callers) $HOME is /root — so the script inspects and offers to delete root's authorized_keys, not the invoking user's.

Impact

The command's stated contract is "Disable the OpenSSH server, close the firewall port, and optionally remove authorized keys". Under escalation:

  • Root usually has no authorized_keys, so [[ -s $AUTHORIZED_KEYS ]] is false and the removal prompt is silently skipped. The invoking user's real ~/.ssh/authorized_keys survives, and those keys are live again the moment sshd is re-enabled — while the operator believes SSH access was fully torn down.
  • If root does have an authorized_keys, the prompt targets and deletes root's keys instead of the user's.

This is the same $HOME-under-escalation class as #9569, but split out because here it changes a security decision rather than leaving cache data behind (related hardening context: #9267, #9255).

Root cause

AUTHORIZED_KEYS="$HOME/.ssh/authorized_keys"

with no derivation of the invoking user, unlike sibling privileged scripts (omarchy-apply-lock derives OMARCHY_INSTALL_USER → SUDO_USER → PKEXEC_UID).

Suggested fix

Apply the omarchy-apply-lock target-user derivation and point AUTHORIZED_KEYS at that user's home. PR incoming.

Environment: observed against quattro @ 2de641b-era checkout (current tip), script unchanged on omacom/omarchy HEAD.

View raw text
## Description

`bin/omarchy-remove-security-sshd` resolves the keys file as `AUTHORIZED_KEYS="$HOME/.ssh/authorized_keys"`. The script is marked `omarchy:requires-sudo=true`, and under `sudo` (or `pkexec`, the escalation `default/agents/skills/omarchy/SKILL.md` prescribes for terminal-less callers) `$HOME` is `/root` — so the script inspects and offers to delete **root's** `authorized_keys`, not the invoking user's.

## Impact

The command's stated contract is "Disable the OpenSSH server, close the firewall port, and optionally remove authorized keys". Under escalation:

- Root usually has no `authorized_keys`, so `[[ -s $AUTHORIZED_KEYS ]]` is false and the removal prompt is silently skipped. The invoking user's real `~/.ssh/authorized_keys` survives, and those keys are live again the moment sshd is re-enabled — while the operator believes SSH access was fully torn down.
- If root *does* have an `authorized_keys`, the prompt targets and deletes root's keys instead of the user's.

This is the same `$HOME`-under-escalation class as #9569, but split out because here it changes a security decision rather than leaving cache data behind (related hardening context: #9267, #9255).

## Root cause

```bash
AUTHORIZED_KEYS="$HOME/.ssh/authorized_keys"
```

with no derivation of the invoking user, unlike sibling privileged scripts (`omarchy-apply-lock` derives `OMARCHY_INSTALL_USER` → `SUDO_USER` → `PKEXEC_UID`).

## Suggested fix

Apply the `omarchy-apply-lock` target-user derivation and point `AUTHORIZED_KEYS` at that user's home. PR incoming.

Environment: observed against `quattro` @ 2de641b-era checkout (current tip), script unchanged on `omacom/omarchy` HEAD.

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 10:24 UTC