---
title: "Request and review budget"
description: "Ask for more budget and inspect allowances, alerts and usage."
canonical_url: "https://docs.oz0.ai/spend/budgets-and-quotas/requests"
---
# Request and review budget

> Ask for more budget and inspect allowances, alerts and usage.

For: tenant administrators and cost owners.

Ask for more budget and inspect allowances, alerts and usage.

## Ask for more

Anyone can ask for more of their own quota, a team's members for the team's, and the tenant's admins for anyone's. People ask on the Approvals page of the console (Ask for more), which asks as the person signed in. The CLI asks as its operator certificate, so it can ask for anyone's quota, named as the subject, but never for "your own" as a person; a person asks for their own quota on the Approvals page:

```bash [Terminal]
oz0 quota request team:ml --running 2 --reason "two evaluation runs today" --until 2026-10-05
oz0 quota request user:kim --usd 20 --reason "the quarterly report" --job job-8c1e
```

Without a subject, the CLI asks for its certificate's own quota (`operator:<name>`), which exists only if one was set with `quota set operator:<name>`; otherwise the request is refused, as there is nothing to raise.

A request raises only limits the quota has: asking for more jobs a day for a team whose quota sets only money is refused, since an approval would change nothing. Set the limit with `quota set` instead.

`--until` takes a date (that day is the last one), a time, or a duration such as `7d`; it defaults to the end of the month and is at most 92 days away. The request waits for a decision:

```bash [Terminal]
oz0 quota requests                     # pending ones you may see
oz0 quota approve br-01a0fffb-... --comment "go"
oz0 quota deny br-01a0fffb-... --comment "next month"
oz0 quota requests --status all
```

The tenant's admins decide every request, and a team's admins also decide their team's. Nobody decides their own, with one exception: a request about a job tree's own budget (kind `job` or `forecast`) is decided by the tree's owner, who set the budget, or the tenant's admins; it spends nothing past the owner's own quotas. An approval adds what was asked for to the quota from the moment it is given until the request's end; `quota list` shows it next to the quota. Requests, decisions and quota changes are in the tenant's [audit log](https://docs.oz0.ai/getting-started/web-ui).

## My budget and spend alerts

A person's own quota (`user:<name>`, or the tenant's default `*` when they have none of their own) is their monthly budget. Each person sees theirs, and only theirs, on the Cost page (My budget, which links to Budgets where quotas are set) and with:

```bash [Terminal]
oz0 quota mine
SUBJECT     MONTH         SPENT     LIMIT   SHARE  ALERTS AT  PENDING REQUESTS
user:lee    October 2026  $8.5000   $10.00  85%    80%,100%   0
```

When a model call takes a budget past one of its alert shares, the edge notifies through the tenant's [notifications](https://docs.oz0.ai/admin/notifications) (event `budget.share`), once per budget, period and share, at the highest share the budget passed: a call that takes a quota from 40% to 100% sends the 100% alert only. The shares are the tenant's spend alerts, 80% and 100% unless its admins set others:

<table>
<thead>
  <tr>
    <th>
      Budget
    </th>
    
    <th>
      Shares
    </th>
    
    <th>
      Who is told
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      a job tree's
    </td>
    
    <td>
      <code>
        --tree
      </code>
      
      , 60% to 100%
    </td>
    
    <td>
      the agent's owner person (the owner team's admins when it has none) and the tenant's admins, and the tenant's rules for <code>
        budget.share
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      the tenant's month
    </td>
    
    <td>
      <code>
        --monthly
      </code>
      
      , 50% to 100%
    </td>
    
    <td>
      the tenant's admins, and the rules
    </td>
  </tr>
  
  <tr>
    <td>
      a team's monthly quota
    </td>
    
    <td>
      its own (<code>
        --quota team:&lt;name>=...
      </code>
      
      ), else <code>
        team:*
      </code>
      
      's, else <code>
        --monthly
      </code>
    </td>
    
    <td>
      the team's admins, and the rules, only when <a href="https://docs.oz0.ai/govern/works-council-mode">
        works-council mode
      </a>
      
       shows the team's figures (five or more people)
    </td>
  </tr>
  
  <tr>
    <td>
      a person's own quota
    </td>
    
    <td>
      its own (<code>
        --quota user:&lt;name>=...
      </code>
      
      ), else <code>
        *
      </code>
      
      's, else <code>
        --monthly
      </code>
    </td>
    
    <td>
      that person alone, never a rule or anyone else
    </td>
  </tr>
</tbody>
</table>

```bash [Terminal]
oz0 tenant spend-alerts default                                   # show them
oz0 tenant spend-alerts default --monthly 50%,80%,100% --reason "finance asked for a mid-month mail"
oz0 tenant spend-alerts default --quota team:research=0.5,0.9,1 --reason "ticket 812"
oz0 tenant spend-alerts default --tree off --reason "owners watch their jobs live"
```

A list holds up to five shares; `default` is 80% and 100%, `off` turns that kind of alert off. 50% is only for monthly budgets and quotas: a job tree spends its budget in minutes, so its alerts start at 60%, and a tree list with 50% is refused with that reason. These shares are apart from `spend.warn_share` (`oz0 tenant spend --warn-share`), which tells the agent to wrap up and stays at or under the soft wall; moving one never moves the other.

The alert at 100% says what happens now and who decides:

- a job tree with `on_budget: wait` (the default for a tree a person started): its jobs wait at their next model call for a budget request, which the tree's owner or the tenant's admins decide; with `on_budget: fail` they fail at their next model call;
- the tenant's month: every model call of the tenant is refused until the month ends or an admin raises the budget;
- a quota: the jobs charged to it wait for a budget request, which the tenant's admins decide (and for a team, the team's admins); nobody decides their own.

The spend alerts are a [governance setting](https://docs.oz0.ai/govern/reviewed-changes#four-eyes-for-governance-changes): every change takes a reason, and a change that loosens them (a list that loses any of its shares, such as the 80% between 50% and 100%, or is emptied; the [spend-anomaly finding](https://docs.oz0.ai/spend/cost-and-usage#spend-anomalies) turned off or its floor raised) waits for a second admin where the tenant has four eyes on.

Operators may read them, in the console under Spend, Budgets, Alerts; admins change them there or with the command, with a reason. Alert emails and webhooks carry figures, the budget's name and the agent's, never content (whether they may carry more is an open legal question).

An agent has no monthly budget of its own: what an agent's jobs spend counts against their trees, their owners' and teams' quotas and the tenant.

## Usage per user and team

```bash [Terminal]
oz0 quota usage            # this month
oz0 quota usage --days 7   # the last seven UTC days
```

With [works-council mode](https://docs.oz0.ai/govern/works-council-mode) on, the default, rio sees their own row, the teams of five or more people and the tenant's total; other people's rows and smaller teams are in the total only:

```text
Since 2026-10-01 (UTC):
OWNER           JOBS  CALLS  COST     THIS MONTH  LIMITS
team:platform   9     21     $0.0112  $0.0112     -
user:rio        2     4      $0.0021  $0.0021     -
(tenant total)  14    30     $0.0163  $0.0163
Works-council mode is on: other people's rows and teams of fewer than 5 people are in the total only.
```

With the mode off (`oz0 tenant works-council <tenant> --off --reason "..."`), everyone who may read the tenant sees every row:

```text
Since 2026-10-01 (UTC):
OWNER           JOBS  CALLS  COST     THIS MONTH  LIMITS
team:platform   9     21     $0.0112  $0.0112     -
team:ml         3     5      $0.0026  $0.0026     2 jobs at once
user:rio        2     4      $0.0021  $0.0021     -
user:lee        1     1      $0.0004  $0.0004     $0.0001/month
(tenant total)  14    30     $0.0163  $0.0163
```

Quotas are enforced whatever the mode: a person's and a team's limits still refuse what goes over them.

## In the console

- Budgets, under *Spend*: Tenant budget, each tenant's monthly budget beside this month's spending, which its admins set; Quotas, the teams with their quota and this month's spending, where a team's dialog sets its quota and its members ask for more, and below them the quotas of people, keys, services and the defaults; Alerts, the spend alerts above, for operators and admins. Budget requests in its header opens them on Approvals.
- Access, Teams, under *Admin*: the teams with their members, where admins make and remove teams and add and remove members; each team's quota shows there as it is, with a link to Budgets. The old address `/teams` opens it.
- Approvals: budget requests wait on its Budget requests tab, beside the steps of jobs on Waiting, with Approve and Deny for those who may decide, and Ask for more for everyone. A request a waiting job opened links to the job. The sidebar's count includes the pending requests you may decide.
- Jobs: a job that waits for a budget decision says so on its page, with the requests it waits for.
- Cost: *By user and team* shows what each owner's jobs spent in the period, and this month against their quota, with the tenant's total. Under works-council mode, other people's and small teams' spending shows as *hidden* on both pages.

<note>

Quota refusals at a start, at a webhook and at a routine's fire are in the [audit trail](https://docs.oz0.ai/govern/audit-trail) as `run.refused`, and so are the gateway's.

</note>


## Sitemap

See the full [sitemap](https://docs.oz0.ai/sitemap.md) for all pages.
