paperclipai/paperclip · error · HttpError
oauth_refresh_missing
oauth_refresh_missing
Error message
OAuth credentials have expired and no refresh token is available
What it means
Terminal credential guard in the OAuth refresh path: the stored token is expired (or the expired marker applies) and the connection has no refresh token, so renewal is impossible without user action. The user must reconnect the app; the connection's absent refresh token is at fault.
Source
Thrown at server/src/services/tool-access.ts:4792
},
};
}
async function ensureRuntimeSlot(connection: typeof toolConnections.$inferSelect): Promise<ToolRuntimeSlot | null> {
if (connection.transport !== "local_stdio") return null;
const slotKey = `mcp:${connection.companyId}:${connection.id}`;
const [existing] = await db
.select()
.from(toolRuntimeSlots)
.where(and(eq(toolRuntimeSlots.companyId, connection.companyId), eq(toolRuntimeSlots.slotKey, slotKey)));
if (existing) return toRuntimeSlot(existing);
const [created] = await db.insert(toolRuntimeSlots).values({
companyId: connection.companyId,
applicationId: connection.applicationId,
connectionId: connection.id,
slotKey,
ownerScopeType: "connection",
ownerScopeId: connection.id,
runtimeKind: "local_stdio",
status: "stopped",
provider: "paperclip",
providerRef: `template:${String(connection.config.templateId)}`,
commandTemplateKey: String(connection.config.templateId),
healthStatus: "unchecked",
metadata: { templateId: connection.config.templateId },
}).returning();
return toRuntimeSlot(created);
}
async function vaultGrantForConnection(
connection: typeof toolConnections.$inferSelect,
actor?: ActorInfo,
): Promise<typeof connectionGrants.$inferSelect | null> {
const actorUserId = actor?.actorType === "user" ? actor.actorId ?? null : null;
if (actorUserId) {
const [personal] = await db.select().from(connectionGrants).where(and(View on GitHub (pinned to 01ad858492)
Solutions
- No refresh token is stored, so expired credentials cannot be renewed. Reconnect the app to obtain fresh credentials.
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at server/src/services/tool-access.ts:4634 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/d18c985fc4b155e8.
Report an issue: GitHub.