paperclipai/paperclip · error
Plugin installed but not found in registry
Error message
Plugin installed but not found in registry
What it means
500 from POST /plugins/install. Fires when the installed plugin cannot be fetched back from the registry after installation/transition to ready — the plugin is installed but not registered, indicating an inconsistent install pipeline.
Source
Thrown at server/src/routes/plugins.ts:1233
}
// Transition to ready state
const existingPlugin = await registry.getByKey(discovered.manifest.id);
if (existingPlugin) {
await lifecycle.load(existingPlugin.id);
const updated = await registry.getById(existingPlugin.id);
await logPluginMutationActivity(req, "plugin.installed", existingPlugin.id, {
pluginId: existingPlugin.id,
pluginKey: existingPlugin.pluginKey,
packageName: updated?.packageName ?? existingPlugin.packageName,
version: updated?.version ?? existingPlugin.version,
source: isLocalPath ? "local_path" : "npm",
});
publishGlobalLiveEvent({ type: "plugin.ui.updated", payload: { pluginId: existingPlugin.id, action: "installed" } });
res.json(updated);
} else {
// This shouldn't happen since installPlugin already registers in the DB
res.status(500).json({ error: "Plugin installed but not found in registry" });
}
} catch (err) {
const message = err instanceof Error ? err.message : String(err);
res.status(400).json({ error: message });
}
});
// ===========================================================================
// UI Bridge proxy routes (getData / performAction)
// ===========================================================================
/** Request body for POST /api/plugins/:pluginId/bridge/data */
interface PluginBridgeDataRequest {
/** Plugin-defined data key (e.g. `"sync-health"`). */
key: string;
/** Optional company scope for authorizing company-context bridge calls. */
companyId?: string;
/** Optional context and query parameters from the UI. */View on GitHub (pinned to a7e689b3c3)
Solutions
- Verify the id in the request path or body refers to an existing record in this company; re-list the parent collection to get a valid id.
- Check that the record was not deleted or archived, and that the request is scoped to the correct companyId.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at server/src/routes/plugins.ts:1217 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of paperclipai/paperclip@a7e689b3c3 (2026-08-18).
Data as JSON: /api/errors/5384e0548f7f4a8b.
Report an issue: GitHub.