# update-check

> npm fragen, ob es ein neueres BMAD+-Release gibt und ob deine Richtlinie es zuließe, ohne etwas zu ändern: Optionen, Status, Gründe, JSON-Felder, Cache und Offline-Verhalten.

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

BMAD+ Dokumentation › [Referenz](https://bmad-plus.rochetta.fr/de/docs/reference/) › update-check

`update-check` sagt dir, wo dein Projekt gegenüber dem neuesten veröffentlichten Release steht. Es vergleicht drei Dinge: die im Projekt installierte Version, die Version des laufenden Pakets und die neueste auf deinem Update-Kanal. Es berichtet nur. Nichts wird heruntergeladen, installiert oder geschrieben, außer einer kleinen Cache-Datei. Assistenten führen es einmal pro Sitzung aus, weil die erzeugten Anweisungsdateien es verlangen.

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

**Im Terminal deines Projekts**

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

**Optionen von update-check**

| Option | Was sie tut |
| --- | --- |
| `-d, --directory <path>` | Zu prüfendes Projekt (Standard: aktueller Ordner). |
| `--refresh` | Den 24-Stunden-Cache und die einstündige Wartezeit nach einem Fehler ignorieren und npm jetzt fragen. |
| `--offline` | Keine Netzwerkanfrage stellen; nur den lokalen Stand melden (Status `unknown`, Grund `offline`, oder das veraltete Cache-Ziel). |
| `--json` | Eine JSON-Zeile statt zwei Textzeilen ausgeben. |

<a id="reads-writes"></a>
## Was gelesen und geschrieben wird

- Liest `_bmad/.bmad-plus-install.json` (installierte Version), `_bmad/update-policy.json` (Modus, Kanal, Bereich) und für das Bereitschaftsurteil das Besitzinventar.
- Kontaktiert npm nur, wenn der Richtlinienmodus nicht `off` ist, du nicht `--offline` bist und kein frischer Cache vorliegt. Die Abfrage führt `npm view bmad-plus@<channel> version engines --json` gegen die offizielle Registry `https://registry.npmjs.org/` aus, mit 4 Sekunden Timeout, ohne Wiederholungen und einer Obergrenze von 6 Sekunden.
- Schreibt `.bmad/update-check.json`: das gesehene Release samt Zeit (24 Stunden gültig) oder die Zeit des letzten Fehlers (danach wartet es eine Stunde, außer bei `--refresh`).
- Es ist der einzige BMAD+-Befehl, der dafür da ist, npm zu fragen (`update --latest` fragt ebenfalls npm und lädt das Ziel dann über `npm exec`). Um die Abfragen ganz abzustellen: `update-policy --mode off`.

<a id="statuses"></a>
## Status und Gründe

Die Textausgabe besteht aus zwei Zeilen. Die erste lautet `Installed: <v>; running: <v>; channel <name>: <target>`, mit `unknown` für einen fehlenden Wert. Die zweite ist `<status>: <reason>`, gefolgt von `(cached result is stale)`, wenn das Ziel aus einem abgelaufenen Cache stammt.

**Status**

| Status | Bedeutung |
| --- | --- |
| `update-available` | Der Kanal führt eine neuere Version als die installierte. Der Grund sagt, ob sie angewandt werden darf (siehe unten). |
| `current` | Installierte Version entspricht der Kanalversion (Grund `installed-matches-channel`). |
| `ahead` | Die installierte Version ist neuer als der Kanal (Grund `installed-ahead-of-channel`). |
| `off` | Der Richtlinienmodus ist `off` (Grund `updates-disabled`). npm wurde nicht kontaktiert. |
| `unknown` | Keine Antwort: `offline`, `registry-retry-backoff` (jüngster Fehler) oder `registry-unavailable`. |
| `invalid-runtime`, `invalid-installation`, `invalid-policy` | Laufende Version oder Uhr unbrauchbar; kein gültiges Manifest; die Richtliniendatei ist ungültig. Exit-Code 1. |

Bei `update-available` erklärt der Grund, was zwischen dir und dem Update steht. `ready-for-authorized-update` heißt: Die Richtlinie erlaubt es und die Dateien sind unverändert, `canAutoApply` ist wahr. Weitere Gründe: `approval-required` (Modus `notify`, ein Mensch muss freigeben), `outside-allowed-range`, `prerelease-not-allowed`, `incompatible-node-version`, `Complete file ownership inventory is required.` (Altinstallation), `Local changes or an active update require manual review.`, `ownership-readiness-failed`.

Die JSON-Zeile enthält: `schemaVersion`, `installedVersion`, `runningVersion`, `latestVersion` (nur auf dem Kanal `latest`), `targetVersion`, `channel`, `status`, `checkedAt`, `source` (`registry`, `cache`, `stale-cache` oder `none`), `stale`, `updateAvailable`, `releaseEligible`, `versionEligible`, `canAutoApply`, `engineCompatible`, `engines` und `reason`.

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

**Exit-Codes von update-check**

| Code | Bedeutung |
| --- | --- |
| 0 | Jeder andere Status, auch `unknown` und `off`: npm nicht erreichen zu können ist kein Fehler. |
| 1 | Der Status beginnt mit `invalid-`. |

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

Die Abnahmeläufe haben diesen Befehl nicht ausgeführt; diese Mitschriften sind daher aus den Ausgabevorlagen des Codes zusammengesetzt (Versionen sind Platzhalter) und als simuliert gekennzeichnet.

**Ein neueres Release, das die Richtlinie nicht selbst anwendet** (Simuliert)

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

Beispielhafter Ablauf, nicht bei einem echten Lauf aufgezeichnet. Quelle: tools/cli/commands/update-check.js Zeilen 32-37; tools/cli/lib/update-check.js Zeilen 209-231

**Offline** (Simuliert)

```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"}
# Exit-Code 0. Ein Assistent versteht das als „Aufgabe fortsetzen“ und behauptet nie, die Version sei aktuell.
```

Beispielhafter Ablauf, nicht bei einem echten Lauf aufgezeichnet. Quelle: tools/cli/lib/update-check.js Zeilen 161-163

<a id="errors"></a>
## Fehler und was zu tun ist

**Meldungen von update-check**

| Meldung oder Grund | Ursache | Was tun |
| --- | --- | --- |
| `No BMAD+ installation found in <dir> (missing _bmad/.bmad-plus-install.json).` (auf dem Fehlerstrom) | Falscher Ordner oder nicht installiert; der Status ist `invalid-installation`. | Aus dem Projekt starten oder `--directory` angeben. |
| `unknown: registry-unavailable` | npm war innerhalb der Frist nicht erreichbar. | Später erneut versuchen oder `--refresh`. Offline-Rechner können es ignorieren. |
| `unknown: registry-retry-backoff` | Vor weniger als einer Stunde wurde ein Fehler vermerkt. | Mit `--refresh` jetzt erneut fragen. |
| `invalid-policy: unreadable-or-invalid-update-policy` | `_bmad/update-policy.json` ist ungültig. | Datei korrigieren oder löschen oder mit `update-policy` neu schreiben. |
| `update-available: incompatible-node-version` | Das neue Release braucht ein neueres Node.js als deins. | Node.js aktualisieren, dann erneut prüfen. |

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

**Für ein Skript: nur handeln, wenn ein automatisches Update erlaubt ist**

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

**Siehe auch**

- [update-policy](https://bmad-plus.rochetta.fr/de/docs/reference/cli-update-policy/)
- [update](https://bmad-plus.rochetta.fr/de/docs/reference/cli-update/)
- [doctor](https://bmad-plus.rochetta.fr/de/docs/reference/cli-doctor/)
- [Der ganze Lebenszyklus](https://bmad-plus.rochetta.fr/de/docs/guides/install-lifecycle/)

[BMAD+ Dokumentation](https://bmad-plus.rochetta.fr/de/docs/) · [Referenz](https://bmad-plus.rochetta.fr/de/docs/reference/)

[Quellcode auf GitHub](https://github.com/lrochetta/BMAD-PLUS)
