> ## Documentation Index
> Fetch the complete documentation index at: https://base-a060aa97-docs-sync-code-change-91427ab.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# IPolicyRegistry.policyAdmin

> Returns the current admin of a policy in the Policy Registry.

## Signature

```solidity IPolicyRegistry.sol theme={null}
function policyAdmin(uint64 policyId) external view returns (address);
```

| Field               | Value                 |
| ------------------- | --------------------- |
| Selector            | `0x09dd0a47`          |
| Canonical signature | `policyAdmin(uint64)` |

## Description

Never reverts. Returns `address(0)` for any ID that has no admin, including sentinels and IDs that have never been created.

**Inverted IDs:** When bit 63 (the invert flag) is set, `policyAdmin` strips the flag and returns the base policy's admin. An inverted ID has no record of its own — `policyAdmin(invertedPolicyId(id)) == policyAdmin(id)`.

After `renounceAdmin`, no address can be assigned as admin again. `policyAdmin` returns `address(0)` permanently for that policy.

During a pending admin transfer, `policyAdmin` still returns the **current** admin. The staged nominee is readable via `pendingPolicyAdmin`. Administration transfers only when the nominee calls `finalizeUpdateAdmin`.

## Parameters

| Name       | Type     | Description                                                          |
| ---------- | -------- | -------------------------------------------------------------------- |
| `policyId` | `uint64` | The policy to query. Bit 63 (invert flag) is stripped before lookup. |

## Returns

The current admin address, or `address(0)` for built-in sentinels (`ALWAYS_ALLOW`, `ALWAYS_BLOCK`), renounced policies, unknown IDs, and malformed IDs. An inverted ID returns the base policy's admin.

## Access Control

View, no role required.

## Example

```solidity Usage Example theme={null}
address admin = IPolicyRegistry(registry).policyAdmin(policyId);

// Inverted IDs resolve to the base policy's admin.
uint64 inverted = IPolicyRegistry(registry).invertedPolicyId(policyId);
address sameAdmin = IPolicyRegistry(registry).policyAdmin(inverted); // == admin
```
