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

# AuthorityResult

> What the authority axis decided, and which grant it decided on (§4.8).

`ctrlrun.AuthorityResult` — class, defined at `src/ctrlrun/authority.py:457`

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

```python theme={null}
class AuthorityResult
    def __init__(passed: bool, reason: str, grant_id: str | None = None, delegation_id: str | None = None, depth: int = 0, dimension: str | None = None, missing_parent_id: str | None = None, expired_parent_id: str | None = None, depth_exceeded: int | None = None, cycle_at: str | None = None)
```

What the authority axis decided, and which grant it decided on (§4.8).

The four trailing fields carry §7's `AUTHORITY_DENIED` evidence: the `dimension` a §5.6
rule-4 step failed on, the `missing_parent_id` of rule 1, the `expired_parent_id` of rule
3, and rule 5's `depth_exceeded` or `cycle_at`. They exist because rules 1, 3, 4, 5 and 6
all report `authority_escalation`, so without them five guards would be indistinguishable
in evidence and no test could tell which had run.

## Next

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


## Related topics

- [Python API](/reference/api/index.md)
- [Authority](/reference/api/Authority.md)
- [Claims](/CLAIMS.md)
- [Fail closed](/concepts/fail-closed.md)
- [The gateway in five minutes](/mcp/gateway-in-5-minutes.md)
