paperclipai/paperclip · error

Plugin install did not return a registry row: ${manifest.id}

Error message

Plugin install did not return a registry row: ${manifest.id}

What it means

Transactional invariant check in plugin install: the registry install call inside the transaction did not return the expected row, so persistence silently failed. Rare defensive check ensuring the plugin record exists before migrations proceed; the registry install path is at fault.

Source

Thrown at server/src/services/plugin-loader.ts:1731

      const manifest = discovered.manifest!;

      // Step 6: Persist install record and apply plugin-owned schema migrations
      // in one database transaction. If migration validation fails, the plugin
      // row, namespace record, migration ledger, and created schema all roll back.
      const installDb = manifest.database ? migrationDb : db;
      await installDb.transaction(async (tx) => {
        const txDb = tx as unknown as Db;
        const txRegistry = pluginRegistryService(txDb);
        const installed = await txRegistry.install(
          {
            packageName: discovered.packageName,
            packagePath: discovered.source === "local-filesystem" ? discovered.packagePath : undefined,
          },
          manifest,
        );

        if (!installed) {
          throw new Error(`Plugin install did not return a registry row: ${manifest.id}`);
        }

        if (manifest.database) {
          await pluginDatabaseService(txDb).applyMigrations(
            installed.id,
            manifest,
            discovered.packagePath,
            { persistFailure: false },
          );
        }
      });

      log.info(
        {
          pluginId: manifest.id,
          packageName: discovered.packageName,
          version: discovered.version,
          capabilities: manifest.capabilities,

View on GitHub (pinned to 120ae5428f)

Solutions

  1. Internal install inconsistency: the registry row was not created. Retry the install; if it persists, check DB constraints and server logs for the install transaction.
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at server/src/services/plugin-loader.ts:1731 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of paperclipai/paperclip@120ae5428f (2026-08-18). Data as JSON: /api/errors/ef93148675556658. Report an issue: GitHub.