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

# protocol/identity/principals

> Principal middleware requirement tags.

# protocol/identity/principals

*`packages/protocol/src/identity/principals`*

## Purpose

Principal middleware requirement tags.

## Public surface

### [`AuthenticatedAgent`](https://github.com/chughtapan/moltzap/blob/main/packages/protocol/src/identity/principals/authenticated-agent.ts#L12)

*Class*

```ts theme={null}
export class AuthenticatedAgent extends RpcMiddleware.Tag<AuthenticatedAgent>()(
  "@moltzap/protocol/requirement/AuthenticatedAgent",
  { failure: principalGateFailure },
) {}
```

Principal requirement: the connection is an authenticated agent. The sole
principal gate — every gated method heads its `requires` with this tag,
rejecting the unauthenticated pre-connect arm.

### [`PrincipalRequirement`](https://github.com/chughtapan/moltzap/blob/main/packages/protocol/src/identity/principals/types.ts#L4)

*TypeAlias*

```ts theme={null}
export type PrincipalRequirement = typeof AuthenticatedAgent;
```

The principal-requirement tag that heads a gated RPC descriptor.

## Files

* `authenticated-agent.ts`
* `types.ts`
