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

# Seguridad y credenciales

> Gestión de credenciales, variables de entorno, limpieza de secretos y soporte para entornos sin conexión.

Raigal guarda las credenciales en local con permisos restringidos, enmascara tokens sensibles antes de enviar telemetría y soporta autenticación sin contraseñas fijas mediante GitHub Actions OIDC.

## Almacenamiento de credenciales

En los puestos de trabajo locales, las credenciales y las licencias temporales se guardan en el directorio del usuario:

* Ruta: `~/.raigal/credentials.json`
* Permisos: `0600` (lectura y escritura exclusivas para el usuario propietario)
* Estructura del archivo:
  ```json theme={null}
  {
    "token": "rgl_sess_...",
    "org": { "id": "org_123", "name": "Acme Corp" },
    "user": { "id": "user_456", "email": "dev@acme.com" },
    "created_at": "2026-10-21T12:00:00.000Z"
  }
  ```

## Variables de entorno `RAIGAL_TOKEN` y `RAIGAL_API_URL`

En pipelines de CI, contenedores Docker o scripts automatizados, puedes configurar el acceso con variables de entorno:

* `RAIGAL_TOKEN`: clave de API de la organización (`rgl_live_...`). Tiene prioridad sobre `~/.raigal/credentials.json`.
* `RAIGAL_ORG_ID`: identificador de la organización (`org_...`), obligatorio si la cuenta de GitHub pertenece a varias organizaciones de Raigal.
* `RAIGAL_API_URL`: dirección del backend (por defecto `https://app.raigal.dev`).

**GitHub Actions**

```yaml theme={null}
- name: Run Raigal quality gate
  env:
    RAIGAL_TOKEN: ${{ secrets.RAIGAL_TOKEN }}
    RAIGAL_API_URL: ${{ secrets.RAIGAL_API_URL || 'https://app.raigal.dev' }}
  run: npx --yes @methiu/raigal@latest ci --changes --base origin/${{ github.base_ref || 'main' }}
```

**Terminal (macOS/Linux)**

```bash theme={null}
export RAIGAL_TOKEN="rgl_live_tu_token_aqui"
export RAIGAL_API_URL="https://app.raigal.dev"
npx @methiu/raigal whoami
```

**Windows PowerShell**

```powershell theme={null}
$env:RAIGAL_TOKEN="rgl_live_tu_token_aqui"
$env:RAIGAL_API_URL="https://app.raigal.dev"
npx @methiu/raigal whoami
```

## Limpieza de secretos y privacidad de datos

Antes de enviar telemetría o resúmenes de PR a Raigal Cloud:

1. **Ejecución 100% en local**: El análisis de código (AST, linters y reglas) se ejecuta dentro de tu máquina o del runner de CI. Tu código fuente completo nunca se sube ni se guarda en los servidores de Raigal.
2. **Enmascaramiento de secretos (`maskSecrets`)**: Cadenas de alta entropía, claves privadas, tokens Bearer y cadenas de conexión a bases de datos se reemplazan automáticamente por `[REDACTED_SECRET]`.
3. **Vistas previas de diff en pull requests**: Durante las comprobaciones en CI, se envía una vista previa del parche git (limitada a 20 KB) con los secretos ya enmascarados para mostrar el diff en el panel web. Nunca se envían archivos completos.
4. **Reparaciones con agentes (`raigal agent`)**: Las sesiones de reparación corren en worktrees locales aislados y se comunican directamente con el proveedor de IA configurado (Claude Code, Cursor u OpenCode).

## Autenticación OIDC en GitHub Actions

Para ejecutar flujos en GitHub Actions sin necesidad de guardar secretos fijos en el repositorio:

1. Añade `permissions: id-token: write` al trabajo del flujo.
2. El runner de GitHub solicita un token OIDC firmado criptográficamente.
3. Raigal envía ese token en la cabecera `X-GitHub-OIDC` a `/v1/runs`.
4. Raigal Cloud valida la firma contra `https://token.actions.githubusercontent.com` y comprueba que el repositorio pertenece a tu organización.

## Funcionamiento sin conexión y entornos aislados (air-gap)

Raigal no realiza llamadas de red por cada archivo analizado:

1. **SaaS tolerante a desconexiones (licencia de 72 horas)**: Al hacer `raigal login` o configurar `RAIGAL_TOKEN`, Raigal Cloud emite una licencia temporal firmada con Ed25519. La CLI verifica esta firma en local con una clave pública incrustada en el binario, permitiendo escaneos sin conexión durante 72 horas.
2. **Entornos completamente aislados (banca, defensa, VPCs privadas)**:
   * **Raigal Cloud autohospedado**: Despliega el contenedor oficial en tu propia VPC sin salida a internet.
   * **Licencia estática sin conexión**: Clave JWT con firma estática válida de 1 a 3 años, validada en local por la clave pública del binario sin realizar ninguna llamada exterior.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.