warpdotdev/warp · error

Timed out waiting for OAuth authorization

Error message

Timed out waiting for OAuth authorization

What it means

poll_oauth_until_terminal polls the OAuth connect transaction every 5 seconds for up to 120 attempts (10 minutes total). If the status never leaves Pending/InProgress within that window, it gives up with this error. Terminal statuses (Completed/Failed/Expired) return normally — only a permanently pending transaction times out.

Source

Thrown at app/src/ai/agent_sdk/oauth_flow.rs:46

        let status = integrations_client
            .poll_oauth_connect_status(tx_id.clone())
            .await?;

        match status {
            OauthConnectTxStatus::Completed
            | OauthConnectTxStatus::Failed
            | OauthConnectTxStatus::Expired => {
                return Ok(status);
            }
            OauthConnectTxStatus::Pending | OauthConnectTxStatus::InProgress => {
                if attempt % 5 == 0 {
                    log::debug!("Still waiting for authorization... ({attempt}/{MAX_ATTEMPTS})",);
                }
            }
        }
    }

    Err(anyhow!("Timed out waiting for OAuth authorization"))
}

View on GitHub (pinned to e72fd7aacb)

Solutions

  1. Re-run the setup command — each run generates a fresh transaction and URL
  2. Complete the browser authorization promptly after the URL is printed
  3. Make sure you authorize with the intended account (team vs personal context)
  4. Verify the CLI can reach the server for status polling (network/proxy)

Example fix

# before
warp provider setup github --team   # user never finishes browser consent -> timeout

# after (re-run and complete promptly)
warp provider setup github --team   # fresh URL; authorize within 10 minutes
Defensive patterns

Strategy: retry

Try / catch

for i in 1 2; do
  out=$(warp provider setup "$slug" --team 2>&1) && { echo "$out"; exit 0; }
  case "$out" in *'Timed out waiting for OAuth authorization'*) echo 'retrying with a fresh URL' >&2;; *) echo "$out" >&2; exit 1;; esac
done
exit 1

Prevention

When it happens

Trigger: Provider or integration setup where the user opens the connect URL but never completes authorization within 10 minutes, authorizes in a different browser/identity so the transaction stays pending, or closes the tab and walks away.

Common situations: User steps away mid-flow; SSO/email login friction during consent; the transaction expiring server-side while the client keeps seeing Pending; user authorizing with a different account than intended.

Understand the failure class

Related errors


AI-assisted analysis of warpdotdev/warp@e72fd7aacb (2026-08-16). Data as JSON: /api/errors/6add01871021f924. Report an issue: GitHub.