> ## Documentation Index
> Fetch the complete documentation index at: https://ctrlrun.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# ApprovalRequired

> The action needs a human. `request_id` is what `ctrlrun approve` takes (SPEC §4.3).

`ctrlrun.ApprovalRequired` — class, defined at `src/ctrlrun/errors.py:88`

```python theme={null}
from ctrlrun import ApprovalRequired
```

```python theme={null}
class ApprovalRequired(CTRLRunError)
    def __init__(message: str | None = None, *, request_id: str, action_id: str | None = None)
```

The action needs a human. `request_id` is what `ctrlrun approve` takes (SPEC §4.3).

Raised instead of blocking, so an agent loop can surface the request and come back with
`ctrlrun.with_approval(request_id)` in context.

## Next

* [Python API index](/reference/api/index).
* [Get started](/get-started/quickstart) · [Why](/why).


## Related topics

- [Errors](/reference/errors.md)
- [Frequently asked questions](/faq.md)
- [Use the LangGraph adapter](/guides/langgraph-adapter.md)
- [WebhookApprovalProvider](/reference/api/WebhookApprovalProvider.md)
- [Three ways in](/get-started/three-ways-in.md)
