diegosouzapw/OmniRoute · error
Token exchange failed: ${error}
Error message
Token exchange failed: ${error} What it means
Error "Token exchange failed: ${error}" thrown in diegosouzapw/OmniRoute.
Source
Thrown at src/lib/oauth/providers/claude.ts:130
const response = await fetch(config.tokenUrl, {
method: "POST",
headers: {
"Content-Type": "application/json",
Accept: "application/json",
},
body: JSON.stringify({
code: authCode,
state: codeState || state,
grant_type: "authorization_code",
client_id: config.clientId,
redirect_uri: config.redirectUri,
code_verifier: codeVerifier,
}),
});
if (!response.ok) {
const error = await response.text();
throw new Error(`Token exchange failed: ${error}`);
}
return await response.json();
},
// Runs after exchangeToken; result is passed as `extra` to mapTokens.
postExchange: async (tokens) => {
if (!tokens?.access_token) return null;
return await fetchClaudeBootstrap(tokens.access_token);
},
mapTokens: (tokens, extra) => {
const plan = extractClaudePlan(tokens, extra);
const bs = extra || {};
const providerSpecificData: any = {
// Generated once at provisioning; preserved across token refresh.
cliUserID: crypto.randomBytes(32).toString("hex"),
};
if (bs.account_uuid) providerSpecificData.accountUUID = bs.account_uuid;
if (bs.organization_uuid) providerSpecificData.organizationUUID = bs.organization_uuid;View on GitHub (pinned to a179ffed5b)
When it happens
Trigger: Thrown at src/lib/oauth/providers/claude.ts:130 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of diegosouzapw/OmniRoute@a179ffed5b (2026-08-25).
Data as JSON: /api/errors/7d2490d5a78e14f1.
Report an issue: GitHub.