{"record":{"id":"4016b961e8b80de8","repo":"zeroclaw-labs/zeroclaw","slug":"email-oauth2-token-request-failed-status-bod","errorCode":null,"errorMessage":"Email OAuth2 token request failed ({status}): {body}","messagePattern":"Email OAuth2 token request failed \\((.+?)\\): (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/zeroclaw-providers/src/auth/email_oauth2.rs","lineNumber":179,"sourceCode":"                }\n                \"access_denied\" => anyhow::bail!(\"Email OAuth2 authorization was denied\"),\n                \"expired_token\" => anyhow::bail!(\"Email OAuth2 device-code expired\"),\n                _ => anyhow::bail!(\n                    \"Email OAuth2 device-code polling failed ({status}): {}\",\n                    err.error_description.unwrap_or(err.error)\n                ),\n            }\n        }\n\n        anyhow::bail!(\"Email OAuth2 device-code polling failed ({status}): {text}\");\n    }\n}\n\nasync fn parse_token_response(response: reqwest::Response) -> Result<TokenSet> {\n    if !response.status().is_success() {\n        let status = response.status();\n        let body = response.text().await.unwrap_or_default();\n        anyhow::bail!(\"Email OAuth2 token request failed ({status}): {body}\");\n    }\n\n    let token: TokenResponse = response\n        .json()\n        .await\n        .context(\"Failed to parse email OAuth2 token response\")?;\n\n    let expires_at = token.expires_in.and_then(|seconds| {\n        if seconds <= 0 {\n            None\n        } else {\n            Some(Utc::now() + chrono::Duration::seconds(seconds))\n        }\n    });\n\n    Ok(TokenSet {\n        access_token: token.access_token,\n        refresh_token: token.refresh_token,","sourceCodeStart":161,"sourceCodeEnd":197,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-providers/src/auth/email_oauth2.rs#L161-L197","documentation":"Error \"Email OAuth2 token request failed ({status}): {body}\" thrown in zeroclaw-labs/zeroclaw.","triggerScenarios":"Thrown at crates/zeroclaw-providers/src/auth/email_oauth2.rs:179 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the token endpoint status/body; verify client credentials and the device code are still valid."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc","analyzedAt":"2026-08-23T01:07:41.857Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}