paperclipai/paperclip · error · ToolGatewayHttpError

action_not_approved

action_not_approved

Error message

Tool action request is not approved or was already consumed

What it means

Claim guard in the replay path: the approved action request could not be claimed for execution — it is not in approved state anymore or was already consumed by another replay. The 409 prevents double execution of a single approval across concurrent sessions or retries.

Source

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

        reasonCode: "approved_action_executed",
        argumentsSummary,
        resultSummary: resultValidation.summary,
        metadata: { durationMs: Date.now() - startedAt, timeoutMs: executionTimeoutMs },
        tool,
      });
      return resultValidation.value;
    } catch (error) {
      const { reasonCode } = await markApprovedActionFailed({
        actionRequestId: claimed.id,
        invocationId: invocation.id,
        claimUpdatedAt: claimed.updatedAt,
        expectedInvocationStatus: "executing",
        error,
      });
      await writeToolCallEvent({
        invocationId: invocation.id,
        actionRequestId: claimed.id,
        session,
        eventType: "call_failed",
        outcome: "failure",
        toolName: tool.name,
        policyDecision: "deny",
        reasonCode,
        argumentsSummary,
        metadata: { durationMs: Date.now() - startedAt },
        tool,
      });
      throw error;
    }
  }

  async function matchingAgentActionRequest(input: {
    session: ToolGatewaySession;
    toolName: string;
    argumentsHash: string;
  }) {

View on GitHub (pinned to 01ad858492)

Solutions

  1. The request is not in an approved, unconsumed state. Re-check status and request a new approval if needed.
Defensive patterns

Strategy: validation

When it happens

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