paperclipai/paperclip · error · Error

Plugin may only use originKind values under ${defaultPluginO

Error message

Plugin may only use originKind values under ${defaultPluginOriginKind}

What it means

The plugin supplied an originKind outside its own plugin:<pluginKey> namespace. Plugins may only attribute issues to their own origin kind prefix, preventing impersonation of other plugins or system origins.

Source

Thrown at server/src/services/plugin-host-services.ts:1045

      initiatingActorId,
      initiatingAgentId: actor?.actorAgentId ?? null,
      initiatingUserId: actor?.actorUserId ?? null,
      initiatingRunId: actor?.actorRunId ?? null,
      pluginId,
      pluginKey,
    };
  };

  const defaultPluginOriginKind = `plugin:${pluginKey}`;
  const normalizePluginOriginKind = (originKind: unknown = defaultPluginOriginKind) => {
    if (originKind == null || originKind === "") return defaultPluginOriginKind;
    if (typeof originKind !== "string") {
      throw new Error("Plugin issue originKind must be a string");
    }
    if (originKind === defaultPluginOriginKind || originKind.startsWith(`${defaultPluginOriginKind}:`)) {
      return originKind;
    }
    throw new Error(`Plugin may only use originKind values under ${defaultPluginOriginKind}`);
  };

  const assertReadableOriginFilter = (originKind: unknown) => {
    if (typeof originKind !== "string" || !originKind.startsWith("plugin:")) return;
    normalizePluginOriginKind(originKind);
  };

  const logPluginActivity = async (input: {
    companyId: string;
    action: string;
    entityType: string;
    entityId: string;
    details?: Record<string, unknown> | null;
    actor?: { actorAgentId?: string | null; actorUserId?: string | null; actorRunId?: string | null };
  }) => {
    await logActivity(db, {
      companyId: input.companyId,
      actorType: "plugin",

View on GitHub (pinned to a7e689b3c3)

Solutions

  1. Restrict the plugin's originKind values to names prefixed under the plugin's default origin kind shown in the error, e.g. '<defaultPluginOriginKind>:<sub-kind>'. Rename or drop origins outside that namespace.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at server/src/services/plugin-host-services.ts:1036 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/2cab163df4000732. Report an issue: GitHub.