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
- 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.