paperclipai/paperclip · error · ToolGatewayHttpError

plugin_tools_disabled

plugin_tools_disabled

Error message

Plugin tool dispatch is not enabled

What it means

executePluginTool guard: the service was constructed without a pluginToolDispatcher, so the plugin tool subsystem is not wired into this deployment. The 501 plugin_tools_disabled signals the capability is intentionally absent (feature flag/build config), not a transient failure; do not retry, enable plugin dispatch instead.

Solutions

  1. Enable plugin tool dispatch (plugins feature) for this instance/session before calling plugin-provided tools.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at server/src/services/tool-gateway.ts:6025 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of paperclipai/paperclip@3f1d897a7c (2026-09-18). Data as JSON: /api/errors/45aebabd87225fe9. Report an issue: GitHub.

Appendix: source

Thrown at server/src/services/tool-gateway.ts:10517

            durationMs: Date.now() - startedAt,
            error: message,
            ...(executionAuditFromError(normalizedError)
              ? { execution: executionAuditFromError(normalizedError) }
              : {}),
          },
        });
        if (normalizedError instanceof ToolContentValidationError) {
          throw new ToolGatewayHttpError(422, message, reasonCode, {
            findings: normalizedError.findings,
          });
        }
        throw normalizedError;
      }
    },

    async executePluginTool(input: ExecutePluginToolInput) {
      if (!pluginToolDispatcher) {
        throw new ToolGatewayHttpError(
          501,
          "Plugin tool dispatch is not enabled",
          "plugin_tools_disabled",
        );
      }
      if (input.actor.type === "agent") {
        if (input.actor.companyId !== input.runContext.companyId) {
          throw new ToolGatewayHttpError(
            403,
            "Agent key cannot access another company",
            "actor_company_mismatch",
          );
        }
        if (input.actor.agentId !== input.runContext.agentId) {
          throw new ToolGatewayHttpError(
            403,
            "Agent cannot execute tools as another agent",
            "actor_agent_mismatch",

View on GitHub (pinned to 3f1d897a7c)