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.
Solutions
- 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@3f1d897a7c (2026-08-18).
Data as JSON: /api/errors/a2a7941457813b64.
Report an issue: GitHub.
Appendix: source
Thrown at server/src/services/tool-gateway.ts:5713
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,View on GitHub (pinned to 3f1d897a7c)