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

Feature request: Indicator bar icon & control for passwordless sudo (omarchy.indicators)

Reported by grold · filed Oct 7, 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

Feature request: Indicator bar icon & control for passwordless sudo (omarchy.indicators)revision 1 · captured 2026-10-07 04:20 UTC via poll

Summary

Add a dedicated indicator to the Omarchy status bar panel (omarchy.indicators in omarchy-shell) that displays the active status of temporary passwordless sudo (omarchy-sudo-passwordless), shows remaining countdown time, and provides an immediate one-click revocation killswitch or enable trigger.


Motivation & Problem Statement

Omarchy provides omarchy-sudo-passwordless, which grants temporary passwordless sudo access (default: 15 minutes, maximum: 24 hours). This feature is particularly valuable for developer automation and AI agent workflows (e.g. running non-interactive package operations or debugging sessions).

However, granting passwordless sudo carries significant security implications: any process running under the user's UID gains root access without interactive authentication until the grant expires.

Currently:
1. Lack of Visual Awareness: There is no persistent visual indicator on screen showing whether passwordless sudo is active. A user or developer might forget that passwordless sudo is enabled, leaving their system in an elevated, vulnerable state.
2. No Glanceable Countdown: There is no way to see remaining time without re-running the CLI command.
3. No Quick Revocation: To disable it early, the user must open a terminal and execute omarchy-sudo-passwordless.
4. No Unprivileged Status Query: Currently, omarchy-sudo-passwordless only accepts [MINUTES] and requires root privilege checks for internal inspection, making it difficult for user-level desktop shell widgets to safely query status.


Proposed Solution

1. New Bar Indicator (PasswordlessSudo.qml)

Integrate a new indicator into shell/plugins/bar/indicators/ (alongside StayAwake, NightLight, Dnd, ScreenRecording, etc.):

  • Inactive State:
  • Icon: Subtle / dim shield/lock icon (e.g., 󰌾 / 󰒃 / 󱅞 from Nerd Fonts).
  • Visibility: Hidden by default (consistent with Omarchy indicator behavior), revealed on bar hover or if alwaysShow is configured in shell.json.
  • Tooltip: "Passwordless Sudo: Inactive"
  • Left-Click Action: Launches the enable workflow (e.g., opens a terminal running omarchy-sudo-passwordless or prompts via gum / omarchy-menu).
  • Active State:
  • Icon: Prominent warning/active icon (e.g., unlocked shield 󰌿 / warning shield 󰒃) highlighted with theme accent / warning color (amber/yellow/red).
  • Visibility: Always visible while active in the center indicator strip (omarchy.indicators).
  • Tooltip: "Passwordless Sudo: ACTIVE (Xm remaining) — Click to revoke immediately"
  • Left-Click Action: Immediate killswitch — executes early revocation/disable, restoring normal sudo authentication instantly.

2. CLI & Privilege Boundary Enhancements (omarchy-sudo-passwordless)

To support the indicator safely without running privileged commands inside the desktop shell UI:

  1. Unprivileged Status Command:

Add omarchy-sudo-passwordless status [--json] to report:

   {
     "active": true,
     "remaining_seconds": 742,
     "deadline": "2026-10-07T08:25:00Z"
   }
  1. Session Runtime State File:

When omarchy-sudo-passwordless __enable succeeds, write a lightweight, unprivileged readable state file to $XDG_RUNTIME_DIR/omarchy-sudo-passwordless.json (or /run/user/$UID/omarchy-sudo-passwordless.json), and remove it upon expiration or __disable.
- Benefit: Allows omarchy-shell / Quickshell to read status instantaneously or via file watch without running child subprocesses or polling with sudo.
3. Explicit Revoke Command:
Add omarchy-sudo-passwordless disable (or revoke) as a clean non-interactive CLI target.


Technical Design Outline

+-------------------------------------------------------------+
|                        omarchy-shell                        |
|                                                             |
|   [ omarchy.indicators ]                                    |
|   └── PasswordlessSudo.qml (BarIndicator)                   |
|       ├── State: Active (󰌿 12m) / Inactive                 |
|       ├── Watcher: /run/user/$UID/sudo-passwordless.json    |
|       └── Click: omarchy-sudo-passwordless disable / launch |
+------------------------------+------------------------------+
                               │
                               ▼
+-------------------------------------------------------------+
|                 omarchy-sudo-passwordless                   |
|                                                             |
|   ├── Writes /etc/sudoers.d/99-omarchy-nopasswd-<UID>       |
|   ├── Arms systemd-run timer for auto-expiration            |
|   └── Publishes unprivileged runtime status file            |
+-------------------------------------------------------------+

Proposed File Changes:

  • bin/omarchy-sudo-passwordless: Add status and disable subcommands; manage the unprivileged runtime state file in $XDG_RUNTIME_DIR.
  • shell/plugins/bar/indicators/PasswordlessSudo.qml: Implement BarIndicator subclass following existing patterns (StayAwake.qml, ScreenRecording.qml).
  • shell/plugins/bar/widgets/Indicators.qml: Register "PasswordlessSudo" in defaultIndicatorEntries.

Security Considerations

  • Privilege Separation: The shell process (omarchy-shell / Quickshell) runs as the unprivileged user. It should never invoke elevated privileges simply to inspect state.
  • Fail-safe: If the runtime status file is missing or desynchronized, the indicator fails closed (showing inactive).
  • Killswitch Priority: Revoking should not require answering interactive prompts—clicking the active indicator should cleanly and immediately tear down the temporary sudoers rule.

This proposal was made with agy cli.

View raw text
### Summary
Add a dedicated indicator to the Omarchy status bar panel (`omarchy.indicators` in `omarchy-shell`) that displays the active status of temporary passwordless sudo (`omarchy-sudo-passwordless`), shows remaining countdown time, and provides an immediate one-click revocation killswitch or enable trigger.

---

### Motivation & Problem Statement
Omarchy provides `omarchy-sudo-passwordless`, which grants temporary passwordless sudo access (default: 15 minutes, maximum: 24 hours). This feature is particularly valuable for developer automation and AI agent workflows (e.g. running non-interactive package operations or debugging sessions).

However, granting passwordless sudo carries significant security implications: **any process** running under the user's UID gains root access without interactive authentication until the grant expires.

Currently:
1. **Lack of Visual Awareness:** There is no persistent visual indicator on screen showing whether passwordless sudo is active. A user or developer might forget that passwordless sudo is enabled, leaving their system in an elevated, vulnerable state.
2. **No Glanceable Countdown:** There is no way to see remaining time without re-running the CLI command.
3. **No Quick Revocation:** To disable it early, the user must open a terminal and execute `omarchy-sudo-passwordless`.
4. **No Unprivileged Status Query:** Currently, `omarchy-sudo-passwordless` only accepts `[MINUTES]` and requires root privilege checks for internal inspection, making it difficult for user-level desktop shell widgets to safely query status.

---

### Proposed Solution

#### 1. New Bar Indicator (`PasswordlessSudo.qml`)
Integrate a new indicator into `shell/plugins/bar/indicators/` (alongside `StayAwake`, `NightLight`, `Dnd`, `ScreenRecording`, etc.):

- **Inactive State:**
  - Icon: Subtle / dim shield/lock icon (e.g., `󰌾` / `󰒃` / `󱅞` from Nerd Fonts).
  - Visibility: Hidden by default (consistent with Omarchy indicator behavior), revealed on bar hover or if `alwaysShow` is configured in `shell.json`.
  - Tooltip: `"Passwordless Sudo: Inactive"`
  - Left-Click Action: Launches the enable workflow (e.g., opens a terminal running `omarchy-sudo-passwordless` or prompts via `gum` / `omarchy-menu`).

- **Active State:**
  - Icon: Prominent warning/active icon (e.g., unlocked shield `󰌿` / warning shield `󰒃`) highlighted with theme accent / warning color (amber/yellow/red).
  - Visibility: Always visible while active in the center indicator strip (`omarchy.indicators`).
  - Tooltip: `"Passwordless Sudo: ACTIVE (Xm remaining) — Click to revoke immediately"`
  - Left-Click Action: Immediate killswitch — executes early revocation/disable, restoring normal sudo authentication instantly.

#### 2. CLI & Privilege Boundary Enhancements (`omarchy-sudo-passwordless`)
To support the indicator safely without running privileged commands inside the desktop shell UI:

1. **Unprivileged Status Command:**
   Add `omarchy-sudo-passwordless status [--json]` to report:
   ```json
   {
     "active": true,
     "remaining_seconds": 742,
     "deadline": "2026-10-07T08:25:00Z"
   }
   ```
2. **Session Runtime State File:**
   When `omarchy-sudo-passwordless __enable` succeeds, write a lightweight, unprivileged readable state file to `$XDG_RUNTIME_DIR/omarchy-sudo-passwordless.json` (or `/run/user/$UID/omarchy-sudo-passwordless.json`), and remove it upon expiration or `__disable`.
   - *Benefit:* Allows `omarchy-shell` / Quickshell to read status instantaneously or via file watch without running child subprocesses or polling with sudo.
3. **Explicit Revoke Command:**
   Add `omarchy-sudo-passwordless disable` (or `revoke`) as a clean non-interactive CLI target.

---

### Technical Design Outline

```
+-------------------------------------------------------------+
|                        omarchy-shell                        |
|                                                             |
|   [ omarchy.indicators ]                                    |
|   └── PasswordlessSudo.qml (BarIndicator)                   |
|       ├── State: Active (󰌿 12m) / Inactive                 |
|       ├── Watcher: /run/user/$UID/sudo-passwordless.json    |
|       └── Click: omarchy-sudo-passwordless disable / launch |
+------------------------------+------------------------------+
                               │
                               ▼
+-------------------------------------------------------------+
|                 omarchy-sudo-passwordless                   |
|                                                             |
|   ├── Writes /etc/sudoers.d/99-omarchy-nopasswd-<UID>       |
|   ├── Arms systemd-run timer for auto-expiration            |
|   └── Publishes unprivileged runtime status file            |
+-------------------------------------------------------------+
```

#### Proposed File Changes:
- `bin/omarchy-sudo-passwordless`: Add `status` and `disable` subcommands; manage the unprivileged runtime state file in `$XDG_RUNTIME_DIR`.
- `shell/plugins/bar/indicators/PasswordlessSudo.qml`: Implement `BarIndicator` subclass following existing patterns (`StayAwake.qml`, `ScreenRecording.qml`).
- `shell/plugins/bar/widgets/Indicators.qml`: Register `"PasswordlessSudo"` in `defaultIndicatorEntries`.

---

### Security Considerations
- **Privilege Separation:** The shell process (`omarchy-shell` / Quickshell) runs as the unprivileged user. It should never invoke elevated privileges simply to inspect state.
- **Fail-safe:** If the runtime status file is missing or desynchronized, the indicator fails closed (showing inactive).
- **Killswitch Priority:** Revoking should not require answering interactive prompts—clicking the active indicator should cleanly and immediately tear down the temporary sudoers rule.

---

*This proposal was made with agy cli.*

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 22:04 UTC