1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
---
title: "Docker Image Shows False 'Update Available' Banner Due to Version Mismatch"
date: 2026-03-10
description: "Docker images for 2026.3.1 and 2026.3.1-beta.1 share identical digest but the binary reports beta.1, causing the Control UI to incorrectly display an update notification."
tags: ["docker", "update", "version", "control-ui", "false-positive"]
sources:
  - platform: "GitHub Issue"
    id: "openclaw#32488"
    url: "https://github.com/openclaw/openclaw/issues/32488"
openclaw_version: "2026.3.1"
---

## Symptom

After pulling and running the Docker image `ghcr.io/openclaw/openclaw:2026.3.1`, the Control UI displays a persistent "Update available" banner showing:

Update available: v2026.3.1 (running v2026.2.26)


This banner:
- Persists after hard refresh (Cmd+Shift+R)
- Cannot be dismissed
- Persists even after patching `lastTouchedVersion` or `lastRunVersion` in `openclaw.json`

**Additional observations:**
- Running `openclaw --version` inside the container reports `2026.3.1-beta.1`
- Running `openclaw update --channel stable` shows the target as `2026.3.1` but exits with "SKIPPED: not-git-install" (expected for Docker installations)
- Both Docker tags `2026.3.1` and `2026.3.1-beta.1` resolve to the same image digest:

sha256:dcf11a3a97a9b0e42dd41fcd4891533e77ff72e7b0380c743177bfbfd6f38b2d


## Root Cause Analysis

The root cause is a **version string mismatch** between the Docker tag and the embedded binary:

1. **Identical Images**: The Docker images for tags `2026.3.1` and `2026.3.1-beta.1` are byte-for-byte identical (same digest).

2. **Stale Binary Version**: The binary embedded in both images still self-reports as version `2026.3.1-beta.1` via `openclaw --version`, even though the images are tagged as the stable release.

3. **Semver Comparison Logic**: The Control UI compares the self-reported version (`2026.3.1-beta.1`) against the GitHub latest release tag (`v2026.3.1`). In semantic versioning, prerelease versions (`beta.1`) are considered lower than their stable counterparts, so `2026.3.1-beta.1 < 2026.3.1`.

4. **False Positive Update Detection**: The UI correctly identifies that `beta.1 < stable` and triggers the update banner, not realizing that the actual running image is already the latest stable release.

5. **No Resolution Path**: Docker installations cannot use npm-based self-update (the `not-git-install` skip reason), so there is no mechanism to "fix" the perceived version mismatch.

**Root Cause Hypothesis**: The `2026.3.1-beta.1` tag was promoted to stable release without updating the embedded binary version string to reflect the stable version number.

## Solution

There is **no user-side workaround** currently available for Docker installations. The issue requires a fix in one of two areas:

### Option A: Fix the Docker Image (Preferred)
Update the embedded binary version string to match the Docker tag on promotion:
- When `2026.3.1-beta.1` is promoted to stable, the binary's version string should be updated to `2026.3.1`
- This ensures `openclaw --version` inside the `2026.3.1` image reports the correct stable version

### Option B: Fix the Control UI
Modify the update banner logic for Docker installations:
- Detect when OpenClaw is running inside a Docker container
- Suppress the update banner for Docker installs where npm-based self-update is not applicable
- Alternatively, check if the running image digest matches the target release digest before showing the banner

## Prevention

To prevent this issue in future releases:

1. **Automated Version Validation**: Implement CI/CD checks that verify the embedded binary version matches the Docker image tag before promotion from beta to stable.

2. **Digest Comparison**: Add logic to the Control UI to compare the running image digest against the digest of the target release, bypassing semver comparison when digests match.

3. **Docker-Specific Update Logic**: Distinguish between Docker and non-Docker installations in the update detection system, acknowledging that Docker images have immutable version bindings.

4. **Release Promotion Checklist**: Include version string verification as a mandatory step when promoting pre-release tags to stable.

## Additional Information

- **Impact**: Cosmetic (no functional impact), but persistent false alarm creates user confusion and erodes trust in the update notification system.
- **Affected Version**: 2026.3.1 (Docker images)
- **Severity**: Low (annoying UI issue, no functional degradation)
- **Frequency**: 100% reproducible on Docker installations for this version
- **Workaround**: None available for Docker users

If you are experiencing this issue, monitor the official [OpenClaw GitHub repository](https://github.com/openclaw/openclaw) for updates addressing this version mismatch in future Docker image releases.