---
title: "approval. diagnostics"
description: "Owner: the runtime spec (defs/runtime.ts). The status is the code's own; the exit comes from its category (CATEGORIES). A warning or info code never sets the status or the exit."
order: 3
---

# `approval.*` diagnostics

Owner: the runtime spec (`defs/runtime.ts`). The status is the code's own; the exit comes from its category (`CATEGORIES`). A warning or info code never sets the status or the exit.

| Code | Category | Severity | Status | Exit | Retry | Fix | Args |
|---|---|---|---|---|---|---|---|
| <a id="approval.expired"></a>`approval.expired` | state | error | 409 | 5 | no | — | `request`, `status?` |
| <a id="approval.input_lost"></a>`approval.input_lost` | state | error | 409 | 5 | no | — | `request` |
| <a id="approval.not_approver"></a>`approval.not_approver` | policy | error | 403 | 4 | no | — | `request` |
| <a id="approval.not_pending"></a>`approval.not_pending` | state | error | 409 | 5 | no | — | `request`, `status?` |
| <a id="approval.requester_standing_changed"></a>`approval.requester_standing_changed` | state | error | 409 | 5 | no | — | `request` |
| <a id="approval.rule_invalid"></a>`approval.rule_invalid` | schema | error | 400 | 2 | no | — | `action`, `reason` |
| <a id="approval.run_refused"></a>`approval.run_refused` | state | error | 409 | 5 | no | — | `request`, `refused`, `precondition?` |
| <a id="approval.self"></a>`approval.self` | policy | error | 403 | 4 | no | — | `request` |
