Saltar al contenido principal

Autenticación — Agent token

Cada request al Agent API público necesita una sola cosa:

Authorization: Bearer <agent-token>

El agent token es un string hex de 64 caracteres sin prefijo, generado por bench-up.sh en el primer boot (openssl rand -hex 32) e impreso en su banner. Es el mismo token que el CLI guarda en ~/.whet/config.json y que los MCP clients llevan en su header Authorization.

Sin signing secret HMAC, sin keys pk_live_* / pk_test_*, sin firmas por request. Solo el Bearer token. El esquema HMAC que existe en el codebase (INTERNAL_HMAC_SECRET, WEBHOOK_SIGNING_SECRET) es para el canal interno whet-app ↔ backend y los receivers de webhooks entrantes — no se usa en el Agent API público.

Lifecycle del token

FaseQué pasa
Generaciónbench-up.sh corre openssl rand -hex 32 y escribe el token en el .env.local del workbench como AGENT_API_TOKEN.
Distribuciónwhet auth login del CLI lo guarda en ~/.whet/config.json (permisos 600). Los MCP clients lo llevan en su JSON de config.
RotaciónRegenerá AGENT_API_TOKEN en .env.local y reiniciá el container whet-app. El token viejo deja de verificar apenas el container reinicia; no hay ventana de overlap hoy.
RevocaciónSeteá AGENT_API_TOKEN a un valor nuevo (o vacío) y reiniciá. El token es único — no hay superficie de API-key por cliente todavía.

Scopes

Hoy el agent token tiene scope completo del workspace. No hay tokens por scope (org:read, artifacts:publish, etc.) — eso es roadmap.

Operacionalmente significa: si no querés que un agente publique, no le des un token. Usá MCP clients en flujos donde el paso de publish siga pasando por un humano confirmando el call.

Errores comunes

HTTPerror.codeCausa
401unauthorizedHeader Authorization ausente, token incorrecto, o AGENT_API_TOKEN no seteado en el server.
403forbiddenEl token es válido pero el estado del workspace prohíbe la acción (ej. publicar un artifact que sigue en draft).
404not_foundEl recurso no existe en el workspace asociado a este token.

Cada response incluye el header X-Request-Id. Correlacioná contra los logs del operador por ese id; request_id no aparece en el body del error. Ver Errores para la taxonomía completa.

Firmas de webhook (esquema distinto)

Si estás consumiendo eventos desde Whet (en lugar de llamar al API de Whet), el esquema es distinto: los webhooks llegan firmados con HMAC usando el WEBHOOK_SIGNING_SECRET compartido al provisionar. Ver Webhooks · verificación HMAC para el algoritmo.

Multi-tenant / Whet Cloud (diferido)

El modelo de deployment actual es single-tenant: una instancia Whet por cliente, un workspace, un agent token. Whet Cloud (multi-tenant) va a introducir emisión de tokens por org vía better-auth — AGENT_API_TOKEN se va a convertir en fallback solo para deployments self-hosted. Sin timeline aún; trackeable por el roadmap.