---
title: "How Gazebo Works | Gazebo Docs"
description: "How Gazebo manages credentials for AI agents — connect your services once, create scoped access profiles, give agents bearer tokens, and audit every access."
url: "https://gazebohq.com/docs/how-it-works"
---

Gazebo works in three layers: the vault (your credentials), access profiles (permission sets), and agents (the things that retrieve credentials).

## 1. Connect your services

Add your API keys and OAuth tokens to the Gazebo vault. Each credential is encrypted at rest with AES-256-GCM and associated with a service (Stripe, GitHub, Cloudflare, etc.).

Your plaintext credentials are never returned to a client after storage. The vault exists to issue them to agents that are permitted to receive them — not to display them back to you.

## 2. Create an access profile

An access profile is a named permission set that answers the question: *which services can this agent access, and what can it do with each one?*

Example profile — `stripe-reader`:

| Service | Allowed methods |
|---|---|
| Stripe | GET |

An agent with this profile can retrieve the Stripe credential and make read-only API calls. It cannot write to Stripe, and it cannot touch GitHub, Cloudflare, or any other connected service.

## 3. Create an agent and issue a bearer token

Create an agent in Gazebo, link it to an access profile, and copy the bearer token. This token is what the agent uses to authenticate with Gazebo at runtime.

The bearer token identifies the agent and resolves its access policy. It does not contain credential values — it's just an identity claim.

## 4. The agent retrieves credentials at runtime

When the agent needs to make an API call, it calls Gazebo — either via MCP (`get_credential`) or the REST API — with its bearer token and the name of the service it needs.

Gazebo:
1. Validates the bearer token
2. Checks the agent's access profile against the requested service and method
3. Logs the request
4. Returns the plaintext credential (or a structured denial)

The agent uses the credential to make its API call, then discards it. Credentials are fetched per-request — they are never stored in agent config.

## 5. Every access is logged

Every call to `get_credential` — whether it succeeds or is denied — appears in the audit log. You can see which agent accessed which service, with which method, and when.

## 6. Revoke anytime

Delete an agent in Gazebo to immediately revoke its access. The bearer token stops working. No credential rotation required.
