diegosouzapw/OmniRoute · error · Error
Tunnel download failed (${response.status})
Error message
Tunnel download failed (${response.status}) What it means
Error "Tunnel download failed (${response.status})" thrown in diegosouzapw/OmniRoute.
Source
Thrown at open-sse/executors/chatgpt-web-codex/tunnelClient.ts:88
}
return `tunnel-client-v${CHATGPT_WEB_CODEX_TUNNEL_VERSION}-${os}-${cpu}.zip`;
}
export function parseTunnelChecksum(text: string, asset: string): string {
const entry = text
.split(/\r?\n/)
.map((line) => line.trim())
.find((line) => line.endsWith(asset));
const checksum = entry?.split(/\s+/)[0]?.toLowerCase();
if (!checksum || !/^[a-f0-9]{64}$/.test(checksum)) {
throw new Error(`SHA256SUMS.txt has no valid entry for ${asset}`);
}
return checksum;
}
async function download(url: string): Promise<Uint8Array> {
const response = await fetch(url, { redirect: "follow" });
if (!response.ok) throw new Error(`Tunnel download failed (${response.status})`);
const declared = Number(response.headers.get("content-length") || "0");
if (Number.isFinite(declared) && declared > MAX_DOWNLOAD_BYTES) {
throw new Error("Tunnel download exceeds the size limit");
}
const bytes = new Uint8Array(await response.arrayBuffer());
if (bytes.byteLength > MAX_DOWNLOAD_BYTES) {
throw new Error("Tunnel download exceeds the size limit");
}
return bytes;
}
export function tunnelClientPaths() {
const root = join(getConfigDir(), "tunnel-client");
return {
root,
binary: join(root, process.platform === "win32" ? "tunnel-client.exe" : "tunnel-client"),
manifest: join(root, "manifest.json"),
profileDir: join(root, "profiles"),View on GitHub (pinned to a179ffed5b)
When it happens
Trigger: Thrown at open-sse/executors/chatgpt-web-codex/tunnelClient.ts:88 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/fc473523eef4ec21.
Report an issue: GitHub.