---
title: "Variables d'environnement et secrets, avec while.sh"
url: https://while.sh/fr/guides/variables-et-secrets/
author: "Aloïs Oddon, cofondateur de Nextmap"
updated: 2026-11-02
---

# Les variables d'environnement et les secrets de votre appli, hors du code, avec votre agent IA

Une clé dans le code ou dans un .env finit par fuiter. Sur while, votre agent IA règle les variables de votre appli par MCP, et vos secrets vivent dans un coffre chiffré : votre appli les reçoit, votre agent ne peut pas les relire.

## Prérequis

- Une appli en ligne sur while, ou prête à l'être.
- Votre agent IA, branché à while par MCP.

## Étape 1 : Demandez une variable à votre agent

> Vous, à votre agent : Ajoute la variable LOG_LEVEL=info.

Votre agent la pose par MCP, et elle arrive à votre appli à la mise en ligne suivante.

## Étape 2 : Gardez vos secrets pour vous

Pour une clé ou un mot de passe, collez la valeur vous-même dans les réglages de votre appli, dans while, à « Variables et secrets » : votre appli la reçoit, votre agent ne la voit jamais. Et un secret que votre agent pose par MCP, il ne peut plus le relire.

## Ce que fait votre agent

Les secrets vivent dans un coffre chiffré, jamais dans while.yaml ni dans votre code, comme le veut la méthode des douze facteurs (source 1). Une variable sans secret, elle, peut s'écrire dans while.yaml. Ils arrivent à votre appli à chaque mise en ligne, en variable d'environnement, ou en fichier dans `/run/secrets/` pour les plus sensibles :

```js titre="server.js"
import { readFile } from 'node:fs/promises';

const cle = (await readFile('/run/secrets/CLE_API', 'utf8')).trim();
```

## Utiliser un registre npm privé

> Vous, à votre agent : Notre registre npm privé demande un jeton.

Votre agent déclare un secret de construction, `NPM_TOKEN`, et un `.npmrc` qui le lit. Vous saisissez sa valeur : il sert à installer les paquets, jamais à votre appli, et ne reste pas dans l'image.

```yaml titre="while.yaml"
services:
  - name: web
    port: 3000
    build:
      secrets: [NPM_TOKEN]
```

## Une valeur différente en prévisualisation

> Vous, à votre agent : Mets LOG_LEVEL=debug en prévisualisation.

Chaque environnement a ses propres variables : la prévisualisation parle davantage dans ses journaux, la production reste sobre.

## Les adresses que votre appli reçoit d'office

> Vous, à votre agent : Quelles variables notre appli reçoit-elle ?

Votre agent vous les liste : `DATABASE_URL` pour la base, `REDIS_URL` pour le cache, les `S3_` du stockage, `SENTRY_DSN` pour les erreurs, et une adresse par API branchée.

## Revenir à la version d'avant

> Vous, à votre agent : Reviens à la version d'avant.

Dans les 30 minutes qui suivent une mise en ligne, la version d'avant revient en une seconde. Ensuite, en quelques secondes. Une fois la version d'avant revenue, votre agent lit ce qui a cassé dans les journaux de while, corrige et remet en ligne.

## Prochaines étapes

- [Brancher Stripe ou Brevo sans clé dans le code](/fr/guides/api-sans-cle-dans-le-code/)
- [Appeler Claude ou GPT sans exposer la clé](/fr/guides/ia-sans-exposer-la-cle/)
- [La sécurité de while](/fr/securite/)

## Sources

1. [La méthode des douze facteurs, la configuration](https://12factor.net/fr/config), 2026-11-02

## Questions

### Puis-je mettre mes secrets dans while.yaml ?

Pas un secret : while.yaml décrit l'appli, et les secrets vivent dans le coffre de while. Une variable sans secret, oui.

### Et le .env de mon dépôt ?

Il reste hors de la construction et de l'image : ses valeurs se posent dans while.

### Faut-il remettre en ligne après un changement ?

Oui : une variable changée arrive à votre appli à la mise en ligne suivante.
