{"record":{"id":"8620716b564d271c","repo":"warpdotdev/warp","slug":"github-authorization-expired-please-try-again-862071","errorCode":null,"errorMessage":"GitHub authorization expired. Please try again.","messagePattern":"GitHub authorization expired\\. Please try again\\.","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"app/src/ai/agent_sdk/environment.rs","lineNumber":657,"sourceCode":"                                poll_future,\n                                move |_, poll_result, ctx| {\n                                    match poll_result {\n                                        Ok(OauthConnectTxStatus::Completed) => {\n                                            // OAuth completed, retry auth check and operation.\n                                            Self::auth_repos_then_execute(repos, next_attempt, operation_name, on_success, ctx);\n                                        }\n                                        Ok(OauthConnectTxStatus::Failed) => {\n                                            ctx.terminate_app(\n                                                warpui::platform::TerminationMode::ForceTerminate,\n                                                Some(Err(anyhow::anyhow!(\n                                                    \"GitHub authorization failed. Please try again.\"\n                                                ))),\n                                            );\n                                        }\n                                        Ok(OauthConnectTxStatus::Expired) => {\n                                            ctx.terminate_app(\n                                                warpui::platform::TerminationMode::ForceTerminate,\n                                                Some(Err(anyhow::anyhow!(\n                                                    \"GitHub authorization expired. Please try again.\"\n                                                ))),\n                                            );\n                                        }\n                                        Ok(OauthConnectTxStatus::Pending)\n                                        | Ok(OauthConnectTxStatus::InProgress) => {\n                                            // Should not be returned by poll_oauth_until_terminal.\n                                            ctx.terminate_app(\n                                                warpui::platform::TerminationMode::ForceTerminate,\n                                                Some(Err(anyhow::anyhow!(\n                                                    \"Unexpected non-terminal OAuth status returned\"\n                                                ))),\n                                            );\n                                        }\n                                        Err(err) => {\n                                            ctx.terminate_app(\n                                                warpui::platform::TerminationMode::ForceTerminate,\n                                                Some(Err(anyhow::anyhow!(","sourceCodeStart":639,"sourceCodeEnd":675,"githubUrl":"https://github.com/warpdotdev/warp/blob/e72fd7aacbbb2236d9b3be2aad7e7178fe94b4bc/app/src/ai/agent_sdk/environment.rs#L639-L675","documentation":"Terminal error from the OAuth polling branch: the authorization transaction expired (OauthConnectTxStatus::Expired) before reaching a terminal Completed/Failed state. The browser auth URL was opened and polling started, but the transaction's server-side lifetime elapsed without the user finishing authorization, so the create/update is aborted with a retry hint.","triggerScenarios":"Opening the auth URL but not completing GitHub consent before the transaction TTL expires — user walks away, the browser tab is left idle, or the flow is started and interrupted; also slow hand-offs between CLI and browser.","commonSituations":"Stepping away mid-authorization; only noticing the browser tab minutes later; slow GitHub SSO approval chains; small screens/notifications hiding the consent page.","solutions":["Re-run the command and complete the GitHub authorization promptly after the browser opens","Authorize immediately when the URL appears — the transaction window is limited","Pre-authorize by installing/granting the GitHub App access before running create, so the check passes without the interactive flow","Keep the session alive (no sleep/suspend) between CLI start and browser consent"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// Reduce reliance on the timed flow: pre-install and pre-grant the GitHub App\n// so check_user_repo_auth_status passes without an interactive transaction.","typeGuard":null,"tryCatchPattern":"Ok(OauthConnectTxStatus::Expired) => {\n    // transaction TTL elapsed: re-run the command and finish consent promptly\n}","preventionTips":["Complete the browser authorization immediately after the URL opens","Avoid sleep/suspend and network drops mid-authorization","Pre-grant App access to the repos so the interactive flow is skipped","Re-running is always safe — completed authorizations persist across attempts"],"tags":["rust","oauth","github","expiry","auth"],"backgroundTag":null,"analyzedSha":"e72fd7aacbbb2236d9b3be2aad7e7178fe94b4bc","analyzedAt":"2026-08-16T08:27:25.381Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}