> ## Documentation Index
> Fetch the complete documentation index at: https://ctrlrun-docs-python-3-13-3-14.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# LocalApprovalProvider

> Requests go to the StateStore; `wait()` polls it (SPEC-v0.1 §4.3).

`ctrlrun.LocalApprovalProvider` — class, defined at `src/ctrlrun/approval.py:369`

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

```python theme={null}
class LocalApprovalProvider
    def __init__(store: ApprovalStore, *, clock: Callable[[], datetime] = _utc_now, poll_interval: timedelta = DEFAULT_POLL_INTERVAL)
```

Requests go to the StateStore; `wait()` polls it (SPEC-v0.1 §4.3).

The human answers out of band — `ctrlrun approve <id>` or `ctrlrun deny <id>` in another
shell. Waiting is bounded by the request's own expiry, so a request nobody answers ends
in `ApprovalTimeout` rather than a blocked agent.

## Next

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