---
title: Approvals
description: The 0.5.0 Approvals page. Time left, approve, reject with a reason, edit a draft, and the approval history.
sidebar:
  order: 5
---

> Since 0.5.0. In 0.4.0, gated messages were approved from the [Inbox](/desk/inbox).

## What it is

Approvals (`#/approvals`, keys `g a`) lists every gate waiting on a person, with time left before it times out, and the history of decided gates.

## Why it exists

An approval is the one moment a routine waits on a person before acting outside. It deserves its own list, ordered by urgency, with the draft visible and editable.

## How it works

| Control | Writes |
|---|---|
| Approve | `decisions/<gateId>` `{decision: "approve", at, by}` |
| Reject with a reason | `decisions/<gateId>` with decision `reject` and the reason (field shape set by the 0.5.0 build) |
| Edit draft, then approve | `decisions/<gateId>` `{decision: "approve", draft, at, by}` |

A gate may carry an optional `draft` `{subject, body}` and `recipients` `[{role}]`. Roles only: the write contract refuses a recipient entry with an address or any key other than `role`. A gate without a draft hides Edit draft and the recipients line. The sending step uses the decision's `draft` when present and the gate's own draft otherwise. Gates under 6 hours from timing out also appear in the notifications feed.

## Worked example

Hiring Signals' intro note to Northwind Goods waits with 41 hours left. The person edits the body to mention the team size and approves. The decision stores the edited `draft`, and the sending step uses it instead of the gate's own draft.

## Common pitfalls

- **Looking for addresses.** Packs and drafts carry roles only. Recipient settings default to empty lists.
- **Expecting the page to send.** It records a decision in `decisions/<gateId>`. Sending is the gate's sending step.

## Related

- [Gates and approvals](/concepts/gates-and-approvals)
- [Inbox](/desk/inbox)
