{"record":{"id":"2cab163df4000732","repo":"paperclipai/paperclip","slug":"plugin-may-only-use-originkind-values-under-defa","errorCode":null,"errorMessage":"Plugin may only use originKind values under ${defaultPluginOriginKind}","messagePattern":"Plugin may only use originKind values under (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"server/src/services/plugin-host-services.ts","lineNumber":1045,"sourceCode":"      initiatingActorId,\n      initiatingAgentId: actor?.actorAgentId ?? null,\n      initiatingUserId: actor?.actorUserId ?? null,\n      initiatingRunId: actor?.actorRunId ?? null,\n      pluginId,\n      pluginKey,\n    };\n  };\n\n  const defaultPluginOriginKind = `plugin:${pluginKey}`;\n  const normalizePluginOriginKind = (originKind: unknown = defaultPluginOriginKind) => {\n    if (originKind == null || originKind === \"\") return defaultPluginOriginKind;\n    if (typeof originKind !== \"string\") {\n      throw new Error(\"Plugin issue originKind must be a string\");\n    }\n    if (originKind === defaultPluginOriginKind || originKind.startsWith(`${defaultPluginOriginKind}:`)) {\n      return originKind;\n    }\n    throw new Error(`Plugin may only use originKind values under ${defaultPluginOriginKind}`);\n  };\n\n  const assertReadableOriginFilter = (originKind: unknown) => {\n    if (typeof originKind !== \"string\" || !originKind.startsWith(\"plugin:\")) return;\n    normalizePluginOriginKind(originKind);\n  };\n\n  const logPluginActivity = async (input: {\n    companyId: string;\n    action: string;\n    entityType: string;\n    entityId: string;\n    details?: Record<string, unknown> | null;\n    actor?: { actorAgentId?: string | null; actorUserId?: string | null; actorRunId?: string | null };\n  }) => {\n    await logActivity(db, {\n      companyId: input.companyId,\n      actorType: \"plugin\",","sourceCodeStart":1027,"sourceCodeEnd":1063,"githubUrl":"https://github.com/paperclipai/paperclip/blob/a7e689b3c35347b529cb9f54c9b9a8575a3dcab6/server/src/services/plugin-host-services.ts#L1027-L1063","documentation":"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.","triggerScenarios":"Thrown at server/src/services/plugin-host-services.ts:1036 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["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."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a7e689b3c35347b529cb9f54c9b9a8575a3dcab6","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}