{"record":{"id":"e1575bbeb7fcf0f0","repo":"openai/codex","slug":"invalidformat","errorCode":"InvalidFormat","errorMessage":"invalid ID token format","messagePattern":"invalid ID token format","errorType":"exception","errorClass":"IdTokenInfoError","httpStatus":null,"severity":"error","filePath":"codex-rs/login/src/token_data.rs","lineNumber":109,"sourceCode":"    #[serde(default)]\n    chatgpt_user_id: Option<String>,\n    #[serde(default)]\n    user_id: Option<String>,\n    #[serde(default)]\n    chatgpt_account_id: Option<String>,\n    #[serde(default)]\n    chatgpt_account_is_fedramp: bool,\n}\n\n#[derive(Deserialize)]\nstruct StandardJwtClaims {\n    #[serde(default)]\n    exp: Option<i64>,\n}\n\n#[derive(Debug, Error)]\npub enum IdTokenInfoError {\n    #[error(\"invalid ID token format\")]\n    InvalidFormat,\n    #[error(transparent)]\n    Base64(#[from] base64::DecodeError),\n    #[error(transparent)]\n    Json(#[from] serde_json::Error),\n}\n\nfn decode_jwt_payload<T: DeserializeOwned>(jwt: &str) -> Result<T, IdTokenInfoError> {\n    // JWT format: header.payload.signature\n    let mut parts = jwt.split('.');\n    let (_header_b64, payload_b64, _sig_b64) = match (parts.next(), parts.next(), parts.next()) {\n        (Some(h), Some(p), Some(s)) if !h.is_empty() && !p.is_empty() && !s.is_empty() => (h, p, s),\n        _ => return Err(IdTokenInfoError::InvalidFormat),\n    };\n\n    let payload_bytes = base64::engine::general_purpose::URL_SAFE_NO_PAD.decode(payload_b64)?;\n    let claims = serde_json::from_slice(&payload_bytes)?;\n    Ok(claims)","sourceCodeStart":91,"sourceCodeEnd":127,"githubUrl":"https://github.com/openai/codex/blob/339751715c64496cb86246bfb3935f40e309dd3d/codex-rs/login/src/token_data.rs#L91-L127","documentation":"Error \"invalid ID token format\" thrown in openai/codex.","triggerScenarios":"Thrown at codex-rs/login/src/token_data.rs:109 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":"339751715c64496cb86246bfb3935f40e309dd3d","analyzedAt":"2026-08-25T05:35:09.876Z","schemaVersion":2},"datasetVersion":"2026-08-25T06:17:31.827Z"}