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

# Connexion

> Connectez-vous à FailproofAI depuis la CLI pour activer les rappels et les fonctionnalités personnalisées

```bash theme={null}
failproofai auth login    # email + code à usage unique
failproofai auth logout   # révoquer cette session
failproofai auth whoami   # afficher l'identité connectée
```

L'ancienne forme avec les flags `--login` / `--logout` / `--whoami` est toujours acceptée comme alias pour la rétrocompatibilité.

L'authentification est optionnelle. Les politiques, le tableau de bord, la page `/audit` et toutes les autres fonctionnalités locales fonctionnent exactement de la même manière que vous soyez connecté ou non. La surface de connexion existe afin que les fonctionnalités qui **nécessitent** une identité stable (rappels de ré-audit aujourd'hui, d'autres à l'avenir) disposent d'un ancrage.

## Flux de connexion

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

Demande votre adresse e-mail, envoie un code à usage unique à 6 chiffres à cette adresse, vous invite à saisir ce code, puis en cas de succès écrit `~/.failproofai/auth.json` (mode `0600`). La même session est alors visible dans le tableau de bord intégré — en cliquant sur `[ set a reminder ]` dans `/audit`, vous apparaîtrez comme connecté.

Le tableau de bord propose le même flux sous forme de boîte de dialogue modale sur `/audit` pour les utilisateurs qui ne touchent jamais à la CLI.

## Déconnexion

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

Révoque la session actuelle sur le serveur et supprime `~/.failproofai/auth.json`. Si le serveur API est inaccessible, le fichier local est supprimé quand même — l'intention locale de se déconnecter l'emporte toujours.

## Vérification d'identité

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

Affiche `<email> (<user uuid>)` et quitte avec le code 0 lorsqu'une session valide existe, ou `not signed in` et quitte avec le code 1 dans le cas contraire. Actualise silencieusement le jeton d'accès en arrière-plan s'il expire dans moins d'une minute.

## Rappel de ré-audit récurrent

Lorsque vous cliquez sur **`[ set a reminder ]`** dans la page `/audit` (ou que vous vous connectez via la boîte de dialogue modale que le bouton conditionne), le tableau de bord écrit un petit fichier complémentaire dans `~/.failproofai/next-audit.json` :

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

Ce fichier est rattaché à l'adresse e-mail pour laquelle il a été défini — changer de session CLI pour un autre compte masque tout rappel appartenant à l'utilisateur précédent. Le décalage par défaut est de **7 jours**, configurable ultérieurement lorsque le planificateur sera disponible. Créé avec les permissions `0600` comme `auth.json`.

Le endpoint `/api/auth/reminder` du tableau de bord expose `GET` (lecture), `POST` (définir / replanifier) et `DELETE` (effacer), et nécessite une session active.

## Contenu 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" }
}
```

Créé avec les permissions `0600` (lecture/écriture réservées au propriétaire). Le jeton d'accès est un JWT HS256 valable 1 heure ; le jeton de rafraîchissement est une chaîne aléatoire opaque de 256 bits que le serveur stocke sous la forme `SHA-256(token)`. La réutilisation du jeton de rafraîchissement est détectée côté serveur et révoque toutes les sessions de l'utilisateur.

## Variables d'environnement

| Variable               | Valeur par défaut            | Description                                                                                                  |
| ---------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------ |
| `FAILPROOF_API_URL`    | `https://api.befailproof.ai` | Remplace l'URL de base du serveur API. Utile pour le développement local contre un serveur API auto-hébergé. |
| `FAILPROOFAI_AUTH_DIR` | `~/.failproofai`             | Remplace l'emplacement de stockage de `auth.json`. Principalement utilisé pour les tests.                    |

Consultez [Variables d'environnement](/fr/cli/environment-variables) pour la liste complète.

## Dépannage

**« Could not reach the api-server »** — la CLI ne parvient pas à ouvrir une connexion TCP vers `FAILPROOF_API_URL`. Vérifiez votre réseau, ou définissez `FAILPROOF_API_URL` si vous utilisez un serveur API auto-hébergé.

**« Rate limited »** — trop de tentatives de connexion dans une fenêtre de 15 minutes pour cette adresse e-mail (5/email) ou cette adresse IP (20/IP), ou un délai de renvoi de 30 secondes après la précédente requête pour la même adresse e-mail. Le message d'erreur indique le délai avant nouvelle tentative en secondes.

**Code refusé** — le code OTP était incorrect, expiré, ou le nombre maximal de 5 mauvaises tentatives a été atteint. Exécutez `failproofai auth login` à nouveau pour demander un nouveau code.
