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

# Login

> Device-code flow para autenticar el CLI con tu cuenta Fhiron.

## Flujo interactivo

```bash theme={null}
fhiron login
```

El CLI abre tu navegador en `app.fhiron.cl/cli/auth?code=XXXX-XXXX` y espera la confirmación:

```
[info] Solicitando autorización...

Abre este link en tu navegador para autorizar:
  https://fhiron.cl/cli/auth?code=BWMJ-LXQT

Código de verificación: BWMJ-LXQT

  Esperando autorización (12s)...
```

Confirma en el browser que el código coincide y aprueba. La API key queda guardada en `~/.fhiron/config.json` con permisos `0600` y el CLI puede validar inmediatamente.

```
[ok] Sesión iniciada como tu@empresa.cl (tenant: mi-tenant)
[dim] Plan: Developer

Próximo paso: fhiron status o fhiron validate
```

## Atajo no-interactivo (CI/CD)

Cuando corres el CLI dentro de un pipeline no puedes abrir un browser. Usa `--token` con la API key obtenida desde el dashboard:

```bash theme={null}
fhiron login --token $FHIRON_API_KEY --tenant mi-tenant
```

O exporta la variable y el CLI la recoge automáticamente sin necesidad de login:

```bash theme={null}
export FHIRON_API_KEY=fhi_...
fhiron validate "src/**/*.fhir.json"
```

`FHIRON_API_KEY` tiene precedencia sobre la API key guardada en `~/.fhiron/config.json`.

## Cerrar sesión

```bash theme={null}
fhiron logout
```

Borra `~/.fhiron/config.json`. La API key sigue válida en el dashboard hasta que la rotes manualmente.

## Troubleshooting

<AccordionGroup>
  <Accordion title="El browser no se abre">
    Probablemente el CLI no detectó tu navegador por defecto (común en SSH o WSL). El URL se imprime de todas formas; cópialo manualmente. Para suprimir el intento de abrir browser, exporta `FHIRON_NO_BROWSER=1`.
  </Accordion>

  <Accordion title="`Code expirado` antes de confirmar">
    El código vive 10 minutos. Si pasó más, corre `fhiron login` de nuevo.
  </Accordion>

  <Accordion title="`Tu tenant no está activo`">
    El tenant fue suspendido o no completó el registro. Entra al [dashboard](https://fhiron.cl/dashboard) para verificar el estado del plan.
  </Accordion>

  <Accordion title="Quiero re-loguearme con otra cuenta">
    Corre `fhiron logout` primero, después `fhiron login`. O usa `fhiron login --force` para reemplazar la sesión activa.
  </Accordion>
</AccordionGroup>
