> ## Documentation Index
> Fetch the complete documentation index at: https://exosphere-auto-translate-docs-20260626-1023.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Iniciar sesión

> Inicia sesión en FailproofAI desde la CLI para activar recordatorios y funciones personalizadas

```bash theme={null}
failproofai auth login    # email + código de un solo uso
failproofai auth logout   # revocar esta sesión
failproofai auth whoami   # mostrar la identidad del usuario autenticado
```

La forma antigua con las flags `--login` / `--logout` / `--whoami` sigue aceptándose como alias por compatibilidad retroactiva.

La autenticación es opcional. Las políticas, el panel de control, la página `/audit` y todas las demás funciones locales funcionan exactamente igual independientemente de si has iniciado sesión o no. La funcionalidad de inicio de sesión existe para que las características que **necesitan** una identidad estable (recordatorios de re-auditoría hoy, más en el futuro) tengan un punto de anclaje.

## Flujo de inicio de sesión

```bash theme={null}
failproofai auth login
```

Solicita tu email, envía un código de un solo uso de 6 dígitos a esa dirección, pide el código y, si tiene éxito, escribe `~/.failproofai/auth.json` (modo `0600`). La misma sesión queda visible en el panel de control de la aplicación — al hacer clic en `[ set a reminder ]` en `/audit`, el sistema te reconocerá como autenticado.

El panel de control expone el mismo flujo como un diálogo modal en `/audit` para los usuarios que nunca usan la CLI.

## Cerrar sesión

```bash theme={null}
failproofai auth logout
```

Revoca la sesión actual en el servidor y elimina `~/.failproofai/auth.json`. Si el servidor de API no está disponible, el archivo local se elimina de todos modos — la intención local de cerrar sesión siempre prevalece.

## Verificación de identidad

```bash theme={null}
failproofai auth whoami
```

Muestra `<email> (<uuid del usuario>)` y termina con código 0 cuando existe una sesión válida, o `not signed in` y termina con código 1 en caso contrario. Renueva silenciosamente el token de acceso en segundo plano si está a menos de un minuto de expirar.

## Recordatorio de re-auditoría persistente

Cuando haces clic en **`[ set a reminder ]`** en la página `/audit` (o inicias sesión a través del modal que activa ese botón), el panel de control escribe un pequeño archivo complementario en `~/.failproofai/next-audit.json`:

```json theme={null}
{
  "next_audit_at": 1780765200,
  "user_email": "you@example.com",
  "set_at": 1780160574
}
```

Este archivo está asociado al email con el que se configuró — cambiar la sesión de la CLI a una cuenta diferente oculta cualquier recordatorio que pertenezca al usuario anterior. El desplazamiento predeterminado es de **7 días**, configurable más adelante cuando se implemente el planificador. Se crea con permisos `0600`, igual que `auth.json`.

El endpoint `/api/auth/reminder` del panel de control expone los métodos `GET` (leer), `POST` (establecer / reprogramar) y `DELETE` (eliminar), y requiere una sesión activa.

## Contenido de `~/.failproofai/auth.json`

```json theme={null}
{
  "access_token": "eyJhbGc…",
  "refresh_token": "9ede3e…",
  "access_expires_at": 1780160574,
  "refresh_expires_at": 1782748974,
  "user": { "id": "<uuid>", "email": "you@example.com" }
}
```

Se crea con permisos `0600` (solo lectura/escritura del propietario). El token de acceso es un JWT HS256 con validez de 1 hora; el token de actualización es una cadena aleatoria opaca de 256 bits que el servidor almacena como `SHA-256(token)`. La reutilización del token de actualización se detecta en el servidor y revoca todas las sesiones del usuario.

## Variables de entorno

| Variable               | Valor predeterminado         | Propósito                                                                                                         |
| ---------------------- | ---------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `FAILPROOF_API_URL`    | `https://api.befailproof.ai` | Reemplaza la URL base del servidor de API. Útil para el desarrollo local contra un servidor de API autohospedado. |
| `FAILPROOFAI_AUTH_DIR` | `~/.failproofai`             | Reemplaza la ubicación donde se almacena `auth.json`. Principalmente para pruebas.                                |

Consulta [Variables de entorno](/es/cli/environment-variables) para ver la lista completa.

## Solución de problemas

**"Could not reach the api-server"** — la CLI no puede abrir una conexión TCP a `FAILPROOF_API_URL`. Verifica tu red, o configura `FAILPROOF_API_URL` si estás ejecutando un servidor de API autohospedado.

**"Rate limited"** — demasiados intentos de inicio de sesión en una ventana de 15 minutos para ese email (5/email) o IP (20/IP), o un período de espera de 30 segundos para reenviar tras la solicitud anterior del mismo email. El mensaje de error incluye el tiempo de espera antes de reintentar, expresado en segundos.

**Código rechazado** — el OTP era incorrecto, había expirado o la entrada alcanzó su bloqueo por 5 intentos fallidos. Ejecuta `failproofai auth login` de nuevo para solicitar un código nuevo.
