paperclipai/paperclip · error · Error

Worker already registered for plugin "${pluginId}" (status:

Error message

Worker already registered for plugin "${pluginId}" (status: ${existing.status})

What it means

The worker registry already has a handle registered for this pluginId when registering a new one. Indicates a spawn/registration race; the existing worker's status is reported so the duplicate can be reconciled.

Source

Thrown at server/src/services/plugin-worker-manager.ts:3016

    // Unexpected exit — crash recovery
    totalCrashes++;
    const now = Date.now();

    // Reset consecutive crash counter if enough time passed
    if (lastCrashAt !== null && now - lastCrashAt > CRASH_WINDOW_MS) {
      consecutiveCrashes = 0;
    }
    consecutiveCrashes++;
    lastCrashAt = now;

    log.error(
      { code, signal, consecutiveCrashes, totalCrashes },
      "worker process crashed",
    );

    const willRestart =
      autoRestart && consecutiveCrashes <= MAX_CONSECUTIVE_CRASHES;

    setStatus("crashed");
    emitter.emit("crash", { pluginId, code, signal, willRestart });

    if (willRestart) {
      scheduleRestart();
    } else {
      log.error(
        { consecutiveCrashes, maxCrashes: MAX_CONSECUTIVE_CRASHES },
        "max consecutive crashes reached, not restarting",
      );
    }
  }

  function rejectAllPending(error: Error): void {
    for (const [id, pending] of pendingRequests) {
      clearTimeout(pending.timer);
      pending.resolve(
        createErrorResponse(

View on GitHub (pinned to 01ad858492)

Solutions

  1. A worker is already registered for this plugin. Stop or deregister the existing worker before registering a new one.
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at server/src/services/plugin-worker-manager.ts:2198 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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