pending-approvals · git:20260924.ad0abaa · 2026-09-24 · sha256 0d4e2a284ce2eda9

pending-approvals git:20260924.ad0abaaA

Immutable. This exact content never changes and is served at /api/v1/blob/0d4e2a284ce2eda9.

---
name: pending-approvals
description: Use when the user asks to list, inspect, approve, reject, or revoke pending approvals
---

# Pending Approvals

Pending approvals are not resurfaced in later sessions on their own. Recovery
is explicit: the user asks to list pendings or supplies an approval id. Every
lookup and single-item decision takes the complete canonical
`P-<32 lowercase hex>` id; a short label is never a lookup key.

## Reading

- `gaia approvals pending` -- the undecided requests, all sessions by default
  (`--session <id>` narrows).
- `gaia approvals list` -- grants with STATUS, GRANT_STATE and OUTCOME
  columns, and the undecided requests beneath them with their STATE
  (`--session`, `--orphans-only` for the orphaned ones, `--json`).
- `gaia approvals show <approval_id>` -- one approval: State, Outcome, Reason,
  Requester, Window, Directory, the grant and the sealed payload.
- `gaia approvals history [<approval_id>]` -- recent approvals, or one
  approval's event chain.
- `gaia approvals stats` -- counts by state and outcome.

Every reader names an approval by one derived state; `reference.md` lists them.

## Deciding

The user decides on the signature Gaia shows (`orchestrator-present-approval`).
From a terminal, the user can also run `gaia approvals approve <approval_id>`:
it creates the grant exactly as Approve on the question does.

The orchestrator withdraws but never approves. It may run
`gaia approvals reject <approval_id>` (a pending request becomes `rejected`) and
`gaia approvals revoke <approval_id>` (an armed grant can no longer be used) --
for example to retire an orphaned request. Approving, replaying, and the bulk
verbs (`reject --all`, `reject-all`, `clean`) are the user's, or a specialist's
when the user asks for them.

A set that ended `failed` is frozen: show its completed, failed and untouched
commands as history; anything still needed is a new request.