paperclipai/paperclip · error · ToolGatewayHttpError

legacy_approved_action_inert

legacy_approved_action_inert

Error message

This approval predates execute-on-approve and must remain inert

What it means

Migration-era guard: an approved action request predates the execute-on-approve mechanism (it carries no signed arguments payload / required metadata), so executing it automatically is intentionally refused. The approval stays inert; the action must be re-requested through the current flow so it can be signed and executed on approval.

Source

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

            updatedAt: new Date(options.now?.() ?? Date.now()),
          }).where(and(
            eq(connectionGrants.id, grant.id),
            eq(connectionGrants.companyId, connection.companyId),
          ));
        }
      }
      if (
        response.status === 401
        && connection.authKind === "oauth"
        && connection.credentialSource === "paperclip_vault"
        && !isPaperclipCloudConnectorStrategy(oauth?.strategy)
        && options.oauthGrantRefresher
      ) {
        credentialHeaders = {
          ...projectedConnectionHeaders(connection),
          ...await resolveCredentialHeaders(session, connection, grant, { forceRefresh: true }),
        };
        builtHeaders = buildRemoteHeaders({ session, connection, credentialHeaders, callerHeaders });
        headers = builtHeaders.headers;
        headerSummary = builtHeaders.summary;
        response = await dispatchRemote(endpoint, {
          ...requestInit,
          headers: mcpHttpRequestHeaders(headers),
        });
      }
      if (response.status === 401 && connection.credentialSource === "vercel_connect") {
        if (!connection.externalCredential || !vercelConnect) {
          throw new ToolGatewayHttpError(503, "Vercel Connect is not configured", "vercel_connect_unavailable", {
            connectionId: connection.id,
          });
        }
        const tokenRequest = vercelTokenRequest({
          credential: connection.externalCredential,
          grant,
          connectionId: connection.id,
          companyId: connection.companyId,

View on GitHub (pinned to 01ad858492)

Solutions

  1. Legacy approvals from before execute-on-approve cannot execute. Create a new approval for the action.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at server/src/services/tool-gateway.ts:4198 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/1670ee12480798b1. Report an issue: GitHub.