{"record":{"id":"e915b8b2481a5934","repo":"paperclipai/paperclip","slug":"plugin-manifest-id-manifest-id-does-not-match","errorCode":null,"errorMessage":"Plugin manifest ID '${manifest.id}' does not match installed plugin '${plugin.pluginKey}'","messagePattern":"Plugin manifest ID '(.+?)' does not match installed plugin '(.+?)'","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/src/services/plugin-loader.ts","lineNumber":1377,"sourceCode":"    const pkgJson = await readPackageJson(packageRoot);\n    if (!pkgJson) return null;\n\n    const manifestPath = resolveManifestPath(packageRoot, pkgJson);\n    if (!manifestPath || !existsSync(manifestPath)) return null;\n\n    return loadManifestFromPath(manifestPath);\n  }\n\n  async function refreshPluginManifestFromPackage(\n    plugin: PluginRecord,\n    packageRoot: string,\n  ): Promise<PluginRecord> {\n    const manifest = await loadManifestFromPackageRoot(packageRoot);\n    if (!manifest) {\n      throw new Error(`Plugin package ${plugin.packageName} no longer exposes a Paperclip manifest`);\n    }\n    if (manifest.id !== plugin.pluginKey) {\n      throw new Error(\n        `Plugin manifest ID '${manifest.id}' does not match installed plugin '${plugin.pluginKey}'`,\n      );\n    }\n\n    if (JSON.stringify(manifest) === JSON.stringify(plugin.manifestJson)) {\n      return plugin;\n    }\n\n    await registry.update(plugin.id, {\n      packageName: plugin.packageName,\n      version: manifest.version,\n      manifest,\n    });\n\n    return {\n      ...plugin,\n      version: manifest.version,\n      apiVersion: manifest.apiVersion,","sourceCodeStart":1359,"sourceCodeEnd":1395,"githubUrl":"https://github.com/paperclipai/paperclip/blob/120ae5428fa29bee300bcf806491cd4d965fbb7c/server/src/services/plugin-loader.ts#L1359-L1395","documentation":"Identity guard in refreshPluginManifestFromPackage: the freshly loaded manifest's id differs from the installed plugin's pluginKey. A package swap changed the plugin's identity, which would orphan registrations and namespaces; the mismatched package is at fault.","triggerScenarios":"Thrown at server/src/services/plugin-loader.ts:1377 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Align the manifest id with the installed plugin key; a mismatched package was published/installed. Reinstall the correct package."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"120ae5428fa29bee300bcf806491cd4d965fbb7c","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}