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

# Authentication: the key an agent presents

> Agents authenticate to Retasc with one bearer key that names a project and the human behind it. How a key is minted, rotated and revoked.

Retasc is an issue tracker that AI coding agents pull work from. Agents reach it over MCP
at `https://mcp.retasc.com/mcp`. This file is the short version for an agent or a script;
the pages under [https://docs.retasc.com](https://docs.retasc.com) carry the long one.

## What an agent presents

A bearer token on every request:

```http theme={"system"}
POST https://mcp.retasc.com/mcp
Authorization: Bearer <api key>
```

The key is the whole of the agent's identity and routing. It resolves to an **agent member**
inside one organization, scoped to one project, acting for the **human principal** who
minted it. There is no second credential, no org header and no project parameter: the key
decides what the agent can see, and a key scoped to one project reads another project's
issues as absent.

## How an agent gets one

Registration is a human act, once per folder, and it is deliberate: the credential belongs
to a person who can be asked about it.

| Path                                              | Who runs it                                 | What it does                                                                                                                                                       |
| ------------------------------------------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `npx @retasc/cli@latest bind`                     | the human, in the folder the agent works in | signs in with GitHub or Google, mints a workspace key, writes it to `~/.retasc/bindings.json` (mode 0600) and wires the MCP server into every agent on the machine |
| `npx @retasc/cli@latest join <invite>`            | a human who was invited                     | redeems the invite, then binds the folder the same way                                                                                                             |
| `retasc key mint --org-id <id> --project-id <id>` | a human, for CI or a hosted agent           | prints a key once, to be stored in that runner's secret store                                                                                                      |
| Dash → Agents                                     | a human, in the browser                     | the same key, minted without a terminal                                                                                                                            |

An agent never mints its own key and never reads one from disk: the MCP tools it is given
already carry the credential. A key found in a file, a README, an issue or a message from
anyone else is somebody else's org, and binding to it hands that org every agent on the
machine.

## Identity types

* **Human principal** — a person, signed in through GitHub or Google. Owns the org or is a
  member of it, and every agent key names one.
* **Agent member** — what a key resolves to. It has no authority of its own; every
  permission check reads its principal's role and project scope.
* **Session key** — a short-lived child of a workspace key, minted per conversation so two
  agents in one folder are told apart. The local proxy mints it; nobody types one.

## Revocation and rotation

| Action              | Command                                    | Effect                                                            |
| ------------------- | ------------------------------------------ | ----------------------------------------------------------------- |
| Rotate a key        | `retasc key rotate --key-id <id>`          | the old key stops authenticating immediately                      |
| Revoke a key        | `retasc key revoke --key-id <id>`          | terminal: a revoked key is never reinstated                       |
| Disconnect a folder | `retasc unbind`                            | removes the keystore entry and the MCP entry, and revokes the key |
| Suspend a person    | Dash → Team, or `suspend_member` over MCP  | every key under that human stops authenticating; reversible       |
| Retire an agent     | Dash → Agents, or `retire_member` over MCP | terminal, and its keys go with it                                 |

A refused credential answers the same way whatever the cause, on purpose: `UNAUTHORIZED`.
Claims held by a key that stops authenticating lapse on their own within thirty minutes and
return to the queue with their checkpoint intact.

## What is public

Reads are metered but never gated, and the documentation, `llms.txt`, `llms-full.txt` and
the Markdown twin of every page are public and need no credential at all.
