paperclipai/paperclip · error · ToolGatewayHttpError
signed_arguments_invalid
signed_arguments_invalid
Error message
Approved tool action arguments signature is invalid
What it means
Integrity failure replaying an approved action: readSignedToolArgumentsPayload could not verify the signed arguments against the stored invocation (bad signature, wrong secret, or corrupt payload). The 409 blocks execution because the reviewed arguments cannot be proven authentic since the approval was signed.
Solutions
- The signed arguments blob is invalid or tampered. Do not modify approved payloads; request a new signed approval.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at server/src/services/tool-gateway.ts:5671 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of paperclipai/paperclip@3f1d897a7c (2026-09-18).
Data as JSON: /api/errors/f003c0fe432b379b.
Report an issue: GitHub.
Appendix: source
Thrown at server/src/services/tool-gateway.ts:9975
)
.limit(1);
if (!formalApproval || formalApproval.status !== "approved") {
throw new ToolGatewayHttpError(
409,
"Tool action request requires formal board approval before execution",
"formal_approval_required",
{ approvalId: actionRequest.approvalId },
);
}
}
const signedPayload = readSignedToolArgumentsPayload({
signedArguments: actionRequest.signedArguments,
invocationId: storedInvocation.id,
toolName: storedInvocation.toolName,
signingSecret: options.toolActionSigningSecret,
});
if (!signedPayload) {
throw new ToolGatewayHttpError(
409,
"Approved tool action arguments signature is invalid",
"signed_arguments_invalid",
);
}
if (signedPayload.executionOnApprove !== true) {
const error = new ToolGatewayHttpError(
409,
"This approval predates execute-on-approve and must remain inert",
"legacy_approved_action_inert",
);
await options.beforeLegacyApprovedActionClaim?.();
const claimedAt = new Date();
const [claimed] = await db
.update(toolActionRequests)
.set({
status: "executing",
resolvedByAgentId: session.agentId,View on GitHub (pinned to 3f1d897a7c)