---
title: Concepts
description: The mental model behind authority, delegation, and audit in Caracal.
pageType: landing
keywords: [overview, concepts, mental model]
---

Caracal is built around a small set of authority-plane concepts that compose cleanly. Start with the product vocabulary, then use the reference names only when you need to read claims, policy input, API payloads, or storage diagrams.

The simplest product model is: register an **agent app**, register the **resources** it may use, attach **policy**, run the agent through Caracal, and inspect the **audit trail**.

## Product vocabulary

Use these names first:

| Product term | Reference terms behind it |
| --- | --- |
| Agent app | Application, principal |
| Agent run | Execution session, agent session, session ID |
| Mandate | Caracal access token, session mandate, resource mandate |
| Resource | Resource identifier, provider route, Gateway binding |
| Delegated permission | Delegation edge, typed constraint |

The reference terms are still precise and useful, but they should not be the first thing a new operator has to memorize.

## Core primitive set

Keep the model small. Caracal's long-term reusable layer is:

| Primitive | Why it exists |
| --- | --- |
| Principal | Names the workload asking to act. |
| Execution session | Binds that workload to runtime state and revocation anchors. |
| Mandate | Carries the exact authority the STS issued after policy evaluation. |
| Resource | Names the target and scope vocabulary policy can reason about. |
| Delegation edge | Narrows authority from one execution session to another. |
| Policy decision | Determines whether a mandate may be issued for one resource. |
| Audit event | Preserves the evidence needed to explain and reconstruct authority. |

Everything else — Gateway routes, provider configs, SDK context helpers, connectors, and adapters — supports these primitives. If an abstraction cannot preserve them clearly, it should stay out of the core model.

## Reading order

The concepts below build on each other. Read the [Authority Model](./authority-model/) first — it explains why the other concepts exist. Then read them in the order they appear in the sidebar.

| Concept | One-line definition |
| ------- | ------------------- |
| [Authority Model](./authority-model/) | The decision contract that governs every token exchange |
| [Mandate](./mandate/) | The short-lived, signed credential issued after a policy allows exchange |
| [Policy](./policy/) | The Rego document that decides whether exchange is permitted |
| [Principal and Application](./principal/) | Who is making the request |
| [Zone](./zone/) | The tenancy boundary that owns keys, policies, and resources |
| [Resource and Grant](./resource-grant/) | What agents can access and who is permitted to access it |
| [Delegation Graph](./delegation/) | How authority passes from one agent to another |
| [Typed Delegation Constraints](./caveat/) | Limits attached to delegation edges |
| [Sessions and Revocation](./sessions-revocation/) | Agent session lifecycle and how authority is withdrawn |
| [Audit Ledger](./audit-ledger/) | The tamper-evident record of every decision |
| [Step-Up Challenge](./step-up/) | How policies require elevated proof before granting access |

## Terminology precision

The docs use these terms with strict meaning throughout:

- **Mandate** — the JWT issued by the STS. Other systems call this an "access token." Caracal calls it a mandate because it is explicitly authorized by policy before issuance.
- **Principal** — the actor named in policy. In current product flows, this is the registered application behind an agent app.
- **Zone** — the tenancy boundary. Never synonymous with "environment" or "region."
- **Policy** — a Rego document registered in Caracal. Not to be confused with IAM policies from other systems.
- **Session** — the runtime state behind an agent run. Deep reference pages distinguish STS session IDs from Coordinator agent session IDs only when that distinction matters.
