[Bug] clawhub update: fingerprint match always fails (false 'local changes' warning) #95

Open
opened 2026-02-15 17:15:39 -05:00 by yindo · 0 comments
Owner

Originally created by @jackchen75 on GitHub (Feb 8, 2026).

Bug Description

clawhub update --all always reports "local changes (no match)" for all installed skills, even immediately after a fresh --force update.

Steps to Reproduce

  1. Install any skill: clawhub install bird
  2. Run update check: clawhub update --all
  3. Observe: all skills report "local changes (no match)"
  4. Force update: clawhub update --all --force
  5. Immediately run: clawhub update --all
  6. Same warning appears again

Investigation

I traced the issue to the fingerprint matching logic:

  1. Local fingerprint calculation (from skills.js):

    • listTextFiles() scans local files
    • hashSkillFiles() computes SHA256 for each file
    • buildSkillFingerprint() generates final fingerprint
  2. Server query:

    • Client sends fingerprint to /api/v1/resolve?slug=<skill>&hash=<fingerprint>
    • Server returns match: null (no matching version found)
  3. Verification:

    • Downloaded the official zip from /api/v1/download?slug=bird&version=1.0.0
    • Computed fingerprint from zip: 3bb8610496eeb5f23efb0a8e848e21a02fd523bb20a1fc4f07cbb7e5cc88967d
    • Computed fingerprint from local files: identical
    • Server API response for this fingerprint: {"match": null}

Root Cause

The server's /api/v1/resolve endpoint does not have the correct fingerprints indexed. The fingerprint computed by the client matches exactly what the server distributes, but the server's database lookup fails.

Possible causes:

  • Fingerprints not being stored correctly during skill publish
  • Fingerprint index not being updated
  • Algorithm mismatch between publish-time and query-time

Environment

  • clawhub CLI: v0.5.0
  • OS: Linux (arm64)
  • Node: v24.13.0

Expected Behavior

Skills downloaded from ClawHub should have their fingerprints recognized by the resolve API, and clawhub update should report "up to date" instead of "local changes".

Impact

  • Users see false warnings on every update check
  • No way to verify if skills are actually modified or up-to-date
  • Forces users to always use --force flag
Originally created by @jackchen75 on GitHub (Feb 8, 2026). ## Bug Description `clawhub update --all` always reports "local changes (no match)" for all installed skills, even immediately after a fresh `--force` update. ## Steps to Reproduce 1. Install any skill: `clawhub install bird` 2. Run update check: `clawhub update --all` 3. Observe: all skills report "local changes (no match)" 4. Force update: `clawhub update --all --force` 5. Immediately run: `clawhub update --all` 6. Same warning appears again ## Investigation I traced the issue to the fingerprint matching logic: 1. **Local fingerprint calculation** (from `skills.js`): - `listTextFiles()` scans local files - `hashSkillFiles()` computes SHA256 for each file - `buildSkillFingerprint()` generates final fingerprint 2. **Server query**: - Client sends fingerprint to `/api/v1/resolve?slug=<skill>&hash=<fingerprint>` - Server returns `match: null` (no matching version found) 3. **Verification**: - Downloaded the official zip from `/api/v1/download?slug=bird&version=1.0.0` - Computed fingerprint from zip: `3bb8610496eeb5f23efb0a8e848e21a02fd523bb20a1fc4f07cbb7e5cc88967d` - Computed fingerprint from local files: identical ✅ - Server API response for this fingerprint: `{"match": null}` ❌ ## Root Cause The server's `/api/v1/resolve` endpoint does not have the correct fingerprints indexed. The fingerprint computed by the client matches exactly what the server distributes, but the server's database lookup fails. Possible causes: - Fingerprints not being stored correctly during skill publish - Fingerprint index not being updated - Algorithm mismatch between publish-time and query-time ## Environment - clawhub CLI: v0.5.0 - OS: Linux (arm64) - Node: v24.13.0 ## Expected Behavior Skills downloaded from ClawHub should have their fingerprints recognized by the resolve API, and `clawhub update` should report "up to date" instead of "local changes". ## Impact - Users see false warnings on every update check - No way to verify if skills are actually modified or up-to-date - Forces users to always use `--force` flag
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: openclaw/clawhub#95