Skip to main content
Compare versions recorded in ~/.observal/lockfile.json with the latest versions available from the active Observal registry. The command never installs an update.

Synopsis

Checked items

The command checks:
  • Pulled agents
  • Separately installed MCP servers
  • Separately installed skills
  • Separately installed hooks
Components bundled inside a pulled agent are not checked independently. Agent versions pin exact component versions, so update the agent when a newer agent version is reported. The exception is an agent version released before pinning: a component it never locked installs at its latest approved release, with a warning, and --strict refuses it. Agent authors use observal agent outdated to see which pinned components have newer releases and which are unlocked. A plain observal agent pull keeps an installed agent on its locked version, so the upgrade command for an agent includes --upgrade. The command reads only the active registry section of the lockfile. It requires authenticated registry access to retrieve current versions.

Options

Valid harnesses are cursor, kiro, claude-code, codex, copilot, copilot-cli, opencode, antigravity, goose, and pi.

Table output

Table output includes every installed item that was checked. Each row has one of these statuses: Outdated and unknown rows are followed by a type-specific command using the canonical namespace/slug identity. Agents use observal agent pull --upgrade; standalone components use their matching registry install command. A missing item is an item-level result, not a command failure, so a completed comparison containing missing rows exits successfully.

JSON output

JSON output has a stable top-level object:
An empty lockfile returns the same shape with an empty items array and zero summary counts. Missing rows include a categorized item-level error with any available request ID. Command-level JSON errors are written to stderr and leave stdout empty.

Inbox reporting

With reporting enabled, outdated findings are sent to the signed-in user’s Inbox after the comparison. Duplicate findings are deduplicated by item and latest version. Inbox reporting is best-effort. If the comparison succeeds but reporting fails, the comparison still exits successfully and the report object contains the categorized reporting error. Human output prints a warning. Unexpected reporting failures are not suppressed. Use --no-report when no Inbox mutation is wanted. This does not make the command offline because registry reads are still required.

Exit codes