{"record":{"id":"905ca68391d04a69","repo":"diegosouzapw/OmniRoute","slug":"tunnel-id-must-be-tunnel-followed-by-32-lowercase","errorCode":null,"errorMessage":"Tunnel ID must be tunnel_ followed by 32 lowercase hexadecimal characters","messagePattern":"Tunnel ID must be tunnel_ followed by 32 lowercase hexadecimal characters","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"open-sse/executors/chatgpt-web-codex/tunnelClient.ts","lineNumber":252,"sourceCode":"    asset,\n    archiveSha256,\n    binarySha256: sha256(entry[1]),\n  };\n  atomicWriteFile(paths.manifest, `${JSON.stringify(manifest, null, 2)}\\n`);\n\n  const version = spawnSync(paths.binary, [\"--version\"], { encoding: \"utf8\" });\n  if (\n    version.status !== 0 ||\n    !`${version.stdout}\\n${version.stderr}`.includes(CHATGPT_WEB_CODEX_TUNNEL_VERSION)\n  ) {\n    throw new Error(\"Installed tunnel-client did not report the pinned version\");\n  }\n  return paths.binary;\n}\n\nfunction validateRuntimeConfig(config: TunnelRuntimeConfig) {\n  if (!/^tunnel_[a-f0-9]{32}$/.test(config.tunnelId)) {\n    throw new Error(\"Tunnel ID must be tunnel_ followed by 32 lowercase hexadecimal characters\");\n  }\n  if (!config.runtimeKey.trim() || config.runtimeKey.length > 64 * 1024) {\n    throw new Error(\"Tunnel Runtime-Key is missing or too large\");\n  }\n  for (const value of [\n    config.alias ?? \"omniroute-chatgpt-web-codex\",\n    config.profile ?? \"omniroute\",\n  ]) {\n    if (!/^[A-Za-z0-9._-]+$/.test(value)) throw new Error(\"Tunnel alias/profile is invalid\");\n  }\n}\n\nexport async function startTunnelRuntime(config: TunnelRuntimeConfig): Promise<ChildProcess> {\n  validateRuntimeConfig(config);\n  acquireTunnelSupervisorLease();\n  const binary = await ensureTunnelClientInstalled();\n  const paths = tunnelClientPaths();\n  const runtimeKeyFile = join(","sourceCodeStart":234,"sourceCodeEnd":270,"githubUrl":"https://github.com/diegosouzapw/OmniRoute/blob/a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d/open-sse/executors/chatgpt-web-codex/tunnelClient.ts#L234-L270","documentation":"Error \"Tunnel ID must be tunnel_ followed by 32 lowercase hexadecimal characters\" thrown in diegosouzapw/OmniRoute.","triggerScenarios":"Thrown at open-sse/executors/chatgpt-web-codex/tunnelClient.ts:252 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d","analyzedAt":"2026-08-25T18:35:09.898Z","schemaVersion":2},"datasetVersion":"2026-08-25T21:54:21.419Z"}