paperclipai/paperclip · error · ToolGatewayHttpError
session_revoked
session_revoked
Error message
Tool gateway session is expired or invalid
What it means
getActiveSession could not load a session row for the presented token. If the token embeds a session id, a lookup of that candidate is attempted purely to record a session_invalid auth failure for auditing before the 401 is thrown; the input at fault is the bearer/session token, which is unknown, malformed, or already deleted.
Solutions
- Re-establish the tool gateway session (re-authenticate); the session token expired or is invalid.
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at server/src/services/tool-gateway.ts:1300 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/31f34c5fa1bd0570.
Report an issue: GitHub.
Appendix: source
Thrown at server/src/services/tool-gateway.ts:1820
const [candidate] = await db
.select()
.from(toolGatewaySessions)
.where(eq(toolGatewaySessions.id, sessionId))
.limit(1);
if (candidate) {
await writeSessionAuthFailure(candidate, "session_invalid");
}
}
throw new ToolGatewayHttpError(
401,
"Tool gateway session is expired or invalid",
"session_invalid",
);
}
if (row.revokedAt) {
await writeSessionAuthFailure(row, "session_revoked");
throw new ToolGatewayHttpError(
401,
"Tool gateway session is expired or invalid",
"session_revoked",
);
}
if (row.expiresAt.getTime() <= Date.now()) {
await writeSessionAuthFailure(row, "session_expired");
throw new ToolGatewayHttpError(
401,
"Tool gateway session is expired or invalid",
"session_expired",
);
}
await assertSessionRunIsActive(row);
const now = new Date();View on GitHub (pinned to 3f1d897a7c)