@xynogen/pix-sudo

Pi tool — sudo_run with interactive PAM password prompt (PAM via sudo -S)

Packages

Package details

extension

Install @xynogen/pix-sudo from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@xynogen/pix-sudo
Package
@xynogen/pix-sudo
Version
0.3.7
Published
Jul 18, 2026
Downloads
1,414/mo · 76/wk
Author
xynogen
License
MIT
Types
extension
Size
46.6 KB
Dependencies
3 dependencies · 2 peers
Pi manifest JSON
{
  "extensions": [
    "src/index.ts"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

pix-sudo

Pi tool — sudo_run with interactive PAM password prompt.

What it does

Registers the sudo_run tool, which executes shell commands as root behind a permission dialog (the shared overlay component from @xynogen/pix-pretty). Every command requires explicit per-call Allow/Deny approval in the UI, with a 60-second auto-deny timeout (dead-man's switch) — that approval step is never skipped. The dialog shape depends on PAM's sudo ticket cache: if a valid cached ticket exists (sudo -n true), the tool shows a confirm-only dialog (Allow/Deny, body notes "sudo session active") and runs with an empty password; if no valid ticket exists, it runs the two-stage flow — Allow/Deny first, then a masked password input ( per character). The password is passed to the lightweight sudo -S -v validation command via stdin, never written to disk; pix-sudo itself stores nothing. After validation refreshes sudo's PAM ticket, the requested command runs separately without keeping the overlay stuck on “Checking password…” for the command's duration. The ticket cache is the kernel/PAM tty timestamp (default ~15 min, OS-managed sudoers timeout), so it only skips re-typing the password, never the approval. Output is truncated to 50 KB / 2000 lines. In non-interactive (RPC/JSON) mode the tool is blocked immediately with an error.

Completed calls collapse after the configured Pix delay into a status row such as ✓ sudo apt install ripgrep · exit 0 · 18 lines; denied and timed-out calls use , and nonzero exits use . Expanding the row restores the normal stdout/stderr or exact diagnostic without restarting the elapsed timer. Configure the delay with collapse.delaySec and the per-tool toggle with collapse.tools.sudo in ~/.pi/agent/pix.json. Approval and masked-password overlays are never collapsed, and passwords are never included in result metadata or render state.

Install

pi install npm:@xynogen/pix-sudo

Full distro

Source: github.com/xynogen/pix-mono

To install the complete pix suite (all packages + Pi itself):

curl -fsSL https://raw.githubusercontent.com/xynogen/pix-mono/main/scripts/install.sh | sh

License

MIT