router-for-me/CLIProxyAPI · error
home plugins: plugin sync response expired
Error message
home plugins: plugin sync response expired
What it means
Error "home plugins: plugin sync response expired" thrown in router-for-me/CLIProxyAPI.
Source
Thrown at internal/homeplugins/sync.go:221
}
}()
platform := NormalizePlatform(CurrentPlatform())
report := newSyncReport(platform)
if cfg == nil || !cfg.Home.Enabled || !cfg.Plugins.Enabled {
finishReport(&report, nil)
return report, nil
}
root, errResolvePluginsDir := config.ResolvePluginsDir(cfg.Plugins.Dir)
if errResolvePluginsDir != nil {
errPluginsDir := fmt.Errorf("home plugins: %w", errResolvePluginsDir)
finishReport(&report, errPluginsDir)
return report, errPluginsDir
}
addInstalledVersionStatuses(&report, cfg, root, installedVersions)
var syncErrors []error
for index := range items {
if !time.Now().UTC().Before(expiresAt) {
errExpired := fmt.Errorf("home plugins: plugin sync response expired")
syncErrors = append(syncErrors, errExpired)
break
}
item := &items[index]
manifest := item.Manifest
status := pluginStatusFromManifest(manifest)
result, errInstall := installResolvedManifest(ctx, cfg, manifest, item.Auth, expiresAt, root, platform, pluginRuntime)
item.Clear()
if errInstall != nil {
status.InstallStatus = pluginInstallStatusFailed
status.Error = errInstall.Error()
upsertPluginInstallStatus(&report, status)
syncErrors = append(syncErrors, errInstall)
continue
}
status.Path = strings.TrimSpace(result.Path)
status.Skipped = result.Skipped
status.Overwritten = result.OverwrittenView on GitHub (pinned to 78f0c4079e)
Solutions
- Request a fresh plugin sync response from the home cluster.
- Check clock skew between the node and the home cluster if expiry recurs.
When it happens
Trigger: Thrown at internal/homeplugins/sync.go:221 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of router-for-me/CLIProxyAPI@78f0c4079e (2026-08-15).
Data as JSON: /api/errors/dda6cee0d19eba78.
Report an issue: GitHub.