diegosouzapw/OmniRoute · error
decodeCredentialBlob: unsupported blob version ${String(pars
Error message
decodeCredentialBlob: unsupported blob version ${String(parsed.v)} (expected ${CREDENTIAL_BLOB_VERSION}) What it means
Error "decodeCredentialBlob: unsupported blob version ${String(parsed.v)} (expected ${CREDENTIAL_BLOB_VERSION})" thrown in diegosouzapw/OmniRoute.
Source
Thrown at src/lib/oauth/credentialBlob.ts:89
throw new Error(
`decodeCredentialBlob: invalid format — must start with "${CREDENTIAL_BLOB_PREFIX}"`
);
}
const b64 = blob.slice(CREDENTIAL_BLOB_PREFIX.length).trim();
if (!/^[A-Za-z0-9_-]+$/.test(b64)) {
throw new Error("decodeCredentialBlob: invalid payload — not base64url");
}
let parsed: { v?: unknown; provider?: unknown; tokens?: unknown };
try {
const json = Buffer.from(b64, "base64url").toString("utf8");
parsed = JSON.parse(json);
} catch {
throw new Error("decodeCredentialBlob: invalid payload — could not parse JSON");
}
if (parsed.v !== CREDENTIAL_BLOB_VERSION) {
throw new Error(
`decodeCredentialBlob: unsupported blob version ${String(parsed.v)} (expected ${CREDENTIAL_BLOB_VERSION})`
);
}
if (typeof parsed.provider !== "string" || !parsed.provider.trim()) {
throw new Error("decodeCredentialBlob: invalid payload — missing provider");
}
const tokens = parsed.tokens as CredentialBlobTokens | undefined;
if (!tokens || typeof tokens !== "object") {
throw new Error("decodeCredentialBlob: invalid payload — missing tokens");
}
if (typeof tokens.access_token !== "string" || !tokens.access_token) {
throw new Error("decodeCredentialBlob: invalid payload — missing access_token");
}
return { provider: parsed.provider.trim(), tokens };
}
View on GitHub (pinned to a179ffed5b)
When it happens
Trigger: Thrown at src/lib/oauth/credentialBlob.ts:89 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/23516b6a4af176a7.
Report an issue: GitHub.