# update-check

> Demander à npm s’il existe une version plus récente de BMAD+ et si votre politique la laisserait s’appliquer, sans rien changer : options, statuts, raisons, champs JSON, cache et mode hors ligne.

Canonical: https://bmad-plus.rochetta.fr/fr/docs/reference/cli-update-check/
Language: fr
BMAD+ version: 0.23.1
Documentation reviewed: 2026-10-19
Author: Laurent Rochetta
License: MIT

Documentation BMAD+ › [Référence](https://bmad-plus.rochetta.fr/fr/docs/reference/) › update-check

`update-check` vous dit où en est votre projet par rapport à la dernière version publiée. Elle compare trois choses : la version installée dans le projet, celle du paquet que vous lancez et la plus récente sur votre canal de mise à jour. Elle ne fait que rapporter. Rien n’est téléchargé, installé ni écrit, sauf un petit fichier de cache. Les assistants la lancent une fois par session parce que les fichiers d’instructions générés le leur demandent.

<a id="synopsis"></a>
## Synopsis

**Dans le terminal de votre projet**

```sh
npx bmad-plus update-check [-d <path>] [--refresh] [--offline] [--json]
```

**Options de update-check**

| Option | Ce qu’elle fait |
| --- | --- |
| `-d, --directory <path>` | Projet à contrôler (par défaut : dossier courant). |
| `--refresh` | Ignorer le cache de 24 heures et la pause d’une heure après un échec, et interroger npm tout de suite. |
| `--offline` | Ne faire aucune requête réseau ; rapporter seulement l’état local (statut `unknown`, raison `offline`, ou la cible périmée du cache). |
| `--json` | Afficher une ligne de JSON au lieu de deux lignes de texte. |

<a id="reads-writes"></a>
## Ce qu’elle lit et écrit

- Lit `_bmad/.bmad-plus-install.json` (version installée), `_bmad/update-policy.json` (mode, canal, plage) et, pour le verdict de disponibilité, l’inventaire de propriété.
- Ne contacte npm que si le mode de la politique n’est pas `off`, que vous n’êtes pas en `--offline` et qu’il n’y a pas de cache frais. La recherche lance `npm view bmad-plus@<channel> version engines --json` sur le registre officiel `https://registry.npmjs.org/`, avec 4 secondes de délai, sans nouvel essai et un plafond de 6 secondes.
- Écrit `.bmad/update-check.json` : la version vue et quand (valable 24 heures), ou l’heure du dernier échec (elle attend alors une heure avant de redemander, sauf `--refresh`).
- C’est la seule commande BMAD+ qui existe pour interroger npm (`update --latest` interroge aussi npm, puis télécharge la cible via `npm exec`). Pour couper complètement ces recherches : `update-policy --mode off`.

<a id="statuses"></a>
## Statuts et raisons

La sortie texte tient en deux lignes. La première est `Installed: <v>; running: <v>; channel <name>: <target>`, avec `unknown` pour une valeur absente. La seconde est `<status>: <reason>`, suivie de `(cached result is stale)` quand la cible vient d’un cache expiré.

**Statuts**

| Statut | Signification |
| --- | --- |
| `update-available` | Le canal porte une version plus récente que l’installée. La raison dit si elle peut s’appliquer (voir plus bas). |
| `current` | La version installée égale celle du canal (raison `installed-matches-channel`). |
| `ahead` | La version installée est plus récente que le canal (raison `installed-ahead-of-channel`). |
| `off` | Le mode de la politique est `off` (raison `updates-disabled`). npm n’a pas été contacté. |
| `unknown` | Pas de réponse : `offline`, `registry-retry-backoff` (échec récent) ou `registry-unavailable`. |
| `invalid-runtime`, `invalid-installation`, `invalid-policy` | La version lancée ou l’horloge est inutilisable ; il n’y a pas de manifeste valide ; le fichier de politique est invalide. Code de sortie 1. |

Quand le statut est `update-available`, la raison explique ce qui sépare de la mise à jour. `ready-for-authorized-update` signifie que la politique l’autorise et que les fichiers sont inchangés : `canAutoApply` est vrai. Autres raisons : `approval-required` (le mode est `notify`, donc un humain doit approuver), `outside-allowed-range`, `prerelease-not-allowed`, `incompatible-node-version`, `Complete file ownership inventory is required.` (installation ancienne), `Local changes or an active update require manual review.`, `ownership-readiness-failed`.

La ligne JSON porte : `schemaVersion`, `installedVersion`, `runningVersion`, `latestVersion` (seulement sur le canal `latest`), `targetVersion`, `channel`, `status`, `checkedAt`, `source` (`registry`, `cache`, `stale-cache` ou `none`), `stale`, `updateAvailable`, `releaseEligible`, `versionEligible`, `canAutoApply`, `engineCompatible`, `engines` et `reason`.

<a id="exit-codes"></a>
## Codes de sortie

**Codes de sortie de update-check**

| Code | Signification |
| --- | --- |
| 0 | Tout autre statut, y compris `unknown` et `off` : ne pas pouvoir joindre npm n’est pas un échec. |
| 1 | Le statut commence par `invalid-`. |

<a id="real-output"></a>
## Sortie

Les recettes d’acceptation n’ont pas exercé cette commande ; ces transcriptions sont donc composées à partir des modèles de sortie du code (les versions sont des marqueurs) et signalées comme simulées.

**Une version plus récente que la politique n’applique pas seule** (Simulé)

```text
$ npx bmad-plus update-check
Installed: <old>; running: <old>; channel latest: <new>
update-available: approval-required
```

Transcription illustrative, non capturée lors d’une exécution réelle. Source: tools/cli/commands/update-check.js lignes 32-37 ; tools/cli/lib/update-check.js lignes 209-231

**Hors ligne** (Simulé)

```text
$ npx bmad-plus update-check --offline --json
{"schemaVersion":1,"installedVersion":"<old>","runningVersion":"<old>","latestVersion":null,"targetVersion":null,"channel":"latest","status":"unknown","checkedAt":null,"source":"none","stale":false,"updateAvailable":null,"releaseEligible":false,"versionEligible":false,"canAutoApply":false,"engineCompatible":null,"engines":{},"reason":"offline"}
# Code de sortie 0. Un assistant y voit « poursuivre la tâche » et ne prétend jamais que la version est à jour.
```

Transcription illustrative, non capturée lors d’une exécution réelle. Source: tools/cli/lib/update-check.js lignes 161-163

<a id="errors"></a>
## Erreurs et que faire

**Messages de update-check**

| Message ou raison | Cause | Que faire |
| --- | --- | --- |
| `No BMAD+ installation found in <dir> (missing _bmad/.bmad-plus-install.json).` (sur le flux d’erreur) | Mauvais dossier ou non installé ; le statut est `invalid-installation`. | Lancez depuis le projet ou passez `--directory`. |
| `unknown: registry-unavailable` | npm n’a pas pu être joint dans le délai. | Réessayez plus tard, ou `--refresh`. Une machine hors ligne peut l’ignorer. |
| `unknown: registry-retry-backoff` | Un échec a été noté il y a moins d’une heure. | Utilisez `--refresh` pour redemander maintenant. |
| `invalid-policy: unreadable-or-invalid-update-policy` | `_bmad/update-policy.json` n’est pas valide. | Corrigez ou supprimez le fichier, ou réécrivez-le avec `update-policy`. |
| `update-available: incompatible-node-version` | La nouvelle version exige un Node.js plus récent que le vôtre. | Mettez Node.js à jour, puis revérifiez. |

<a id="examples"></a>
## Exemples

**Pour un script : n’agir que si une mise à jour automatique est permise**

```sh
npx bmad-plus update-check --json --refresh
```

**Voir aussi**

- [update-policy](https://bmad-plus.rochetta.fr/fr/docs/reference/cli-update-policy/)
- [update](https://bmad-plus.rochetta.fr/fr/docs/reference/cli-update/)
- [doctor](https://bmad-plus.rochetta.fr/fr/docs/reference/cli-doctor/)
- [Tout le cycle de vie](https://bmad-plus.rochetta.fr/fr/docs/guides/install-lifecycle/)

[Documentation BMAD+](https://bmad-plus.rochetta.fr/fr/docs/) · [Référence](https://bmad-plus.rochetta.fr/fr/docs/reference/)

[Code sur GitHub](https://github.com/lrochetta/BMAD-PLUS)
