router-for-me/CLIProxyAPI · error
invalid plugin id %q
Error message
invalid plugin id %q
What it means
Error "invalid plugin id %q" thrown in router-for-me/CLIProxyAPI.
Source
Thrown at internal/homeplugins/sync.go:436
status.InstallStatus = pluginInstallStatusDeleted
default:
status.InstallStatus = pluginInstallStatusMissing
}
report.Plugins = append(report.Plugins, status)
finishReport(&report, errDelete)
return report
}
func deletePluginArtifact(ctx context.Context, root string, id string, pluginRuntime PluginRuntime) (string, bool, error) {
if ctx == nil {
ctx = context.Background()
}
if errContext := ctx.Err(); errContext != nil {
return "", false, errContext
}
id = strings.TrimSpace(id)
if !validPluginFileID(id) {
return "", false, fmt.Errorf("invalid plugin id %q", id)
}
paths, errPaths := pluginFilePaths(root, id)
if errPaths != nil {
return "", false, errPaths
}
if errContext := ctx.Err(); errContext != nil {
return "", false, errContext
}
if len(paths) == 0 {
return "", false, nil
}
if pluginRuntime != nil && pluginRuntime.PluginBusy(id) {
if errContext := ctx.Err(); errContext != nil {
return paths[0], false, errContext
}
unloaded := false
if contextual, ok := pluginRuntime.(contextualPluginUnloader); ok {
unloaded = contextual.UnloadPluginContext(ctx, id)View on GitHub (pinned to 78f0c4079e)
Solutions
- Use a plugin id matching the allowed format (letters, digits, dash/underscore).
- Correct the plugin id in the manifest or request.
When it happens
Trigger: Thrown at internal/homeplugins/sync.go:436 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/cbfbf6b492b6a6a6.
Report an issue: GitHub.