paperclipai/paperclip · error · ToolGatewayHttpError

action_execution_in_progress

action_execution_in_progress

Error message

Approved tool action is still executing

What it means

waitForActionRequestExecution polled the executing action request for ~500x25ms without it leaving the executing state (or the row disappeared). The thrown gateway error signals that an approved tool action is stuck executing — the worker may have died mid-execution; investigate the invocation/execution rather than blindly re-approving.

Source

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

    });
  }

  function normalizeMcpContent(content: unknown): string {
    if (!Array.isArray(content)) throw malformedRemoteMcpResponse();
    return content.map((item) => {
      const record = asRecord(item);
      if (!record || typeof record.type !== "string") throw malformedRemoteMcpResponse();
      if (record.type === "text") {
        if (typeof record.text !== "string") throw malformedRemoteMcpResponse();
        return record.text;
      }
      return JSON.stringify(record);
    }).join("\n");
  }

  function normalizeMcpToolResult(
    result: unknown,
    transport: "mcp_http" | "local_stdio" = "mcp_http",
    spawnedLocalProcess = false,
    sourceTemplateKey?: string | null,
  ) {
    const record = asRecord(result);
    if (!record) throw malformedRemoteMcpResponse();
    const providerContent = normalizeMcpContent(record.content);
    const googleWorkspacePermissionDenied = record.isError === true
      && (sourceTemplateKey === "gmail" || sourceTemplateKey?.startsWith("google-") === true)
      && /caller does not have permission/i.test(providerContent);
    const content = googleWorkspacePermissionDenied
      ? "Google rejected this call. Google Workspace MCP is a Developer Preview: enroll the signed-in Workspace account and this OAuth client's Google Cloud project in Google's Developer Preview Program, wait for Google's registration confirmation, then reconnect and try again."
      : providerContent;
    return {
      content,
      data: {
        content: record.content,
        structuredContent: record.structuredContent ?? null,
        isError: record.isError === true,

View on GitHub (pinned to 01ad858492)

Solutions

  1. The approved action is already executing; wait for its completion instead of re-triggering.
Defensive patterns

Strategy: retry

When it happens

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