---
title: "Agent approvals"
slug: admin/agents-approvals
url: https://projectri.com/docs/admin/agents-approvals
section: admin
audience: admin
app_route: "/[slug]/admin/agents/approvals"
mobile: "/admin/agents/approvals"
updated: 2026-09-08
source: Projectri documentation
---

# Agent approvals

What this workspace's agents are asking permission to do, filtered to the requests you could carry out yourself.

![Agent approvals](https://projectri.com/docs-shots/admin-agents-approvals.png)

## What it is

When an agent wants to do something that needs a person's say-so, the run stops
mid-sentence and asks. This is where those questions are answered. An approval
is a paused run rather than a queued job — it is holding everything it had
worked out so far, waiting for one answer.

## How to get there

**Work → Approvals** in the admin console rail, at
`/<workspace>/admin/agents/approvals`. Approval notifications also link here.

There is no agent permission on this screen. Deciding is gated on being a member
of the workspace **plus holding the permission the action itself needs**,
resolved at the moment you press the button. `agent.manage` is deliberately not
enough — an administrator who cannot issue an invoice must not be able to
approve an agent issuing one.

Because the admin console redirects everyone who is not an ADMIN, the same inbox
is also mounted at `/<workspace>/<you>/approvals`, which every member can reach.
The two are the same component, not a copy.

## How to use it

### Answer a request

1. Cards are ordered by how soon they expire, and each carries the time
   remaining. It turns amber under two hours.
2. The card names the agent, the **preview** of what it wants to do, the
   **tool** it would use, the **permission** that action needs, and when it was
   asked.
3. The preview is written by Projectri from the arguments the agent proposed,
   not by the model. A preview the model composes is a preview the model can
   misdescribe.
4. Type a reason if you want one. It is optional and is recorded either way.
5. Press **Approve** or **Reject**. Approving does not carry the action out — it
   puts the run back in the queue, and the executor resumes it on its next pass.
   The confirmation says so.

### Understand an empty inbox

An empty inbox and an inbox of other people's questions are different
situations. If there are pending requests you cannot answer, a strip says how
many need a permission you do not hold. Without that line, a screen rendering
both as "nothing to do" sends somebody hunting a bug that is really a
permission.

## What it affects

- **What is approved is what happens.** The arguments are captured when they are
  proposed and spent byte for byte on resumption. You may say yes or no to what
  was proposed; you cannot amend it, because the thing carried out would then be
  something nobody previewed.
- **Authority is re-checked on resumption.** An owner demoted between the
  question and the answer means the agent does not act. So does an agent that
  was stopped in between.
- **A decision is recorded against your name** and shows on the agent's own page
  under **Approvals asked for**, with your reason if you gave one.
- **Notifications.** The owner is told when a request is raised, when it is
  refused and when it expires — not when it is approved, because an approved
  action shows up on the surface it changed. For keys on the floor below,
  everyone who holds the deciding permission is told as well, up to
  twenty-five people, because a single-recipient notice on a decision with a
  clock is a single point of silence. For a permission the workspace itself
  added to an agent's approval list, only the owner is told: most of the
  workspace does not need paging because somebody chose to review a comment.
- **The kill switch beats an open question.** Stopping the agent ends the paused
  run outright and withdraws the pending request with it.

## Limits and gotchas

> [!WARNING]
> A request expires after 24 hours and then behaves exactly as a refusal. That
> is freshness rather than tidiness — an agent's proposal is about the workspace
> as it read it, and "move these 12 overdue tasks to Blocked", answered a week
> later, acts on a reading that is no longer true. Nobody is asked again, and
> there is no delegation or escalation on expiry.

- Some permissions always pause for a person and cannot be switched off in an
  agent's configuration. The floor covers anything to do with money —
  `finance.*`, `billing.*`, `bill.*`, `po.*`, `contract.*`, `quote.*`,
  `estimate.*`, `changeorder.*`, `vendor.*`; anything a client sees —
  `client.*`, `portal.*`, `proof.*`, `survey.*`, `support.*`; and anything
  destructive or structural — any key ending `.delete`, `.bulk_edit` or
  `.import`, plus `privacy.*`, `security.*`, `role.*`, `agent.*` and `import.*`.
  The floor is enforced when the agent is configured as well as at the gate, so
  the stored list is the enforced list.
- Approving is not doing. The run resumes on the executor's next pass, within
  about five minutes.
- If a decision was consumed and the run then died before finishing, the run
  fails rather than repeating the approved action. "It may already have
  happened" is the honest answer, and one you can check.

## Related

- [Agents](/docs/admin/agents) — the directory and the permission model behind it.
- [One agent](/docs/admin/agents-detail) — the decided history for a single agent.
- [Approvals](/docs/features/approvals) — approval chains elsewhere in the product.
- [Notifications](/docs/features/notifications) — where these requests ring.

## Related

- [Agents](https://projectri.com/docs/admin/agents.md): The directory of unattended actors in this workspace — what each one may do, who is accountable for it, and the button that stops it.
- [One agent](https://projectri.com/docs/admin/agents-detail.md): A single agent — its configuration, a rehearsal that changes nothing, what starts it, what it has run, and the button that makes it act unattended.
- [Approvals](https://projectri.com/docs/features/approvals.md): The two things in Projectri that wait for a person to say yes — an approval chain on a task, and an AI agent asking permission before it changes anything.
- [Notifications](https://projectri.com/docs/features/notifications.md): What Projectri tells you about, on which of the five channels, what you can turn off, and the difference between a channel and a subscription.
