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

# VerifiedApprover

> Who answered, as the surface that took the answer verified them (SPEC-v0.8 §2.5).

`ctrlrun.VerifiedApprover` — class, defined at `src/ctrlrun/approval.py:127`

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

```python theme={null}
class VerifiedApprover
    def __init__(agent: str, user: str | None, issuer: str | None, granted_at: datetime, entitled: tuple[str, ...] = ())
```

Who answered, as the surface that took the answer verified them (SPEC-v0.8 §2.5).

**No claim value is here and none ever will be.** `v0.3 §2.4`'s rule is that evidence
carries claim *names* where values are withheld, and what an entitlement decision means is
*which control this approver satisfied*, which is what `entitled` says. A row holding the
role value would put an identity provider's payload in an evidence table for no gain.

`entitled` is filled by item 3 and is empty until then.

## Next

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


## Related topics

- [ApproverIdentity](/docs/reference/api/ApproverIdentity.md)
- [Python API](/docs/reference/api/index.md)
- [Approve from your assistant](/docs/mcp/approve-from-your-assistant.md)
- [Get the verified badge](/docs/verify/get-the-badge.md)
- [Roadmap](/docs/ROADMAP.md)
