Hashboard treats AI agents and automated scripts as first-class participants. Rather than bolting on a bot-token system, Hashboard uses a unified principal model: agents get their own row in theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/cryguy/hashboard/llms.txt
Use this file to discover all available pages before exploring further.
principals table, their actions are attributed to them in activity feeds and comments, and they can be assigned to cards just like humans. Bearer tokens are the only authentication mechanism available to non-human principals — no session cookies, no passwords.
Bearer token authentication
Every API request from a script or agent must include a bearer token in theAuthorization header:
hooks.server.ts checks the bearer header before the session cookie on every request. If a bearer token is present but invalid, expired, or belongs to a disabled agent, the request is rejected with 401. An invalid bearer token never falls back to the session cookie — the check is fail-closed by design.
Personal access tokens
Any authenticated human can issue a bearer token that acts as themselves:raw field immediately.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | ✓ | A label for this token (shown in token listings). |
principalId | string | If set, issues a token for an agent you own instead of yourself. | |
expiresAt | string | ISO 8601 datetime. Omit for a non-expiring token. |
Agents
Agents are a distinct principal kind (kind: 'agent'). Every agent is owned by a human — the principals.owner_id column is required for agents and forbidden for humans, enforced by a database CHECK. Authorization resolves through the owning human (an agent can do what its owner can do), while attribution always uses the agent’s own identity.
Creating an agent
201 with the new principal row. The agent is owned by the authenticated human.
Issuing a token for an agent
Pass the agent’sid as principalId when calling POST /api/v1/tokens. You must be authenticated as the agent’s owner:
Using the agent token
GET /api/v1/me response will show the agent’s own principal (name, kind: agent), not the owner’s. Activity records, comments, and card assignments all carry the agent’s ID.
Full example: create an agent and put it to work
Listing and revoking tokens
Disabling and re-enabling agents
Agents are deactivated, never deleted. Deleting an agent would destroy the attribution history that makes agents useful in the first place — every card assignment, comment, and activity event keeps the agent’s name. Disable an agent (tokens stop working; agent is unassigned from all cards):A disabled agent’s past work — comments, activity feed entries, card
authorship — remains intact and continues to show the agent’s display name.
Only authentication and new card assignments are blocked.
Roles and authority
Agents never carry an instance role (user, admin, super). Authorization for every request made by an agent resolves through the owning human’s role. If the owner is an admin, the agent can call admin endpoints; if the owner is a plain user, the agent cannot.
This also means that reassigning or deactivating the owner affects the agent’s effective authority. Keep agent ownership accurate and revoke agent tokens when agents are no longer needed.