{"record":{"id":"2e24ba9ccf7040b2","repo":"warpdotdev/warp","slug":"github-authorization-failed-please-try-again","errorCode":null,"errorMessage":"GitHub authorization failed. Please try again.","messagePattern":"GitHub authorization failed\\. Please try again\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app/src/ai/agent_sdk/agent_config.rs","lineNumber":159,"sourceCode":"\n                            let integrations_client = ServerApiProvider::handle(ctx)\n                                .as_ref(ctx)\n                                .get_integrations_client();\n                            let tx_id = tx_id.into_inner();\n                            let poll_future = poll_oauth_until_terminal(integrations_client, tx_id);\n\n                            let next_attempt = attempt + 1;\n\n                            ctx.spawn(poll_future, move |runner, poll_result, ctx| {\n                                match poll_result {\n                                    Ok(OauthConnectTxStatus::Completed) => {\n                                        // OAuth completed, retry\n                                        runner.auth_then_list(repos, next_attempt, repo_spec, ctx);\n                                    }\n                                    Ok(OauthConnectTxStatus::Failed) => {\n                                        ctx.terminate_app(\n                                            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                                            TerminationMode::ForceTerminate,\n                                            Some(Err(anyhow::anyhow!(\n                                                \"GitHub authorization expired. Please try again.\"\n                                            ))),\n                                        );\n                                    }\n                                    Ok(_) => {\n                                        ctx.terminate_app(\n                                            TerminationMode::ForceTerminate,\n                                            Some(Err(anyhow::anyhow!(\n                                                \"Unexpected OAuth status\"\n                                            ))),","sourceCodeStart":141,"sourceCodeEnd":177,"githubUrl":"https://github.com/warpdotdev/warp/blob/e72fd7aacbbb2236d9b3be2aad7e7178fe94b4bc/app/src/ai/agent_sdk/agent_config.rs#L141-L177","documentation":"After printing a GitHub auth URL, the runner polls the OAuth connect transaction; OauthConnectTxStatus::Failed (app/src/ai/agent_sdk/agent_config.rs:159) means the transaction transitioned to an explicit failure, and the app force-terminates with this message. Note this path does not retry — only Completed continues the loop.","triggerScenarios":"The user denies or cancels the GitHub OAuth consent, or the connect transaction transitions to Failed server-side (deleted transaction, grant error).","commonSituations":"Clicking 'Deny' or closing the consent page mid-flow; GitHub org policy rejecting the app; the transaction invalidated by a second concurrent auth attempt.","solutions":["Re-run the command and click Approve on the consent screen, accepting the requested permissions","Confirm the GitHub account has access to the target organization/repositories","If it keeps failing, disconnect and reconnect the GitHub integration from settings"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Approve the OAuth consent on the first attempt; Failed does not auto-retry","Pre-authorize the integration for the org (admin consent) before scripting list commands"],"tags":["github","oauth","cli"],"backgroundTag":null,"analyzedSha":"e72fd7aacbbb2236d9b3be2aad7e7178fe94b4bc","analyzedAt":"2026-08-16T08:27:25.381Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}