The plugin cache is keyed by version (cache/mroberts/guards/<version>), so 'claude plugin update' reports 'already at the latest version' and skips the reinstall whenever content changes without a version bump. The marketplace clone had fetched the new commit; the cache never saw it.