Change:
Windows 11 Latest Insiders WSL with Ubuntu 20.04.5 LTS I am trying to get and run the insiders code cli on a WSL Ubuntu 20.04 instance. the linux x64 insiders cli from here: and save the file to someplace in your WSL Ubuntu 20.04 folder : the file is the same name as the stable x64 version, so i'm not sure if am really getting insiders. , note the time stamp in the future error disc i see a executable, why is there a code-insiders`? see 2 above the GitHub login dance Result - it hangs in the terminal, no URL is displayed, here's the output from (which repeats):
can you try again with today's Insiders build of the CLI? It should print more detailed information about the error, if any, that's happening.
works great today! i was able to log in, get the URL, and hit it from another machine. still, why is the executable and not ? I see I can use the option but that breaks my flow (always use from the terminal)
That's a to fix, tracked in I'll go ahead and close this issue for now. I have a feeling it was something on GH's end, but at least next time we see this, we should be able to get more info.

Discussion:
state::{LauncherPaths, PersistedState}, trace, util::{ <del> errors::{wrap, AnyError, RefreshTokenNotAvailableError, StatusError, WrappedError}, </del> <ins> errors::{ wrap, AnyError, OAuthError, RefreshTokenNotAvailableError, StatusError, WrappedError, }, </ins> input::prompt_options, }, warning,

expires_in: Option<i64>, } <ins> #[derive(Deserialize)] struct AuthenticationError { error: String, error_description: Option<String>, } </ins> #[derive(clap::ArgEnum, Serialize, Deserialize, Debug, Clone, Copy)] pub enum AuthProvider { Microsoft,

.send() .await?; <del> if !response.status().is_success() { return Err(StatusError::from_res(response).await?.into()); </del> <ins> let status_code = response.status().as_u16(); let body = response.bytes().await?; if let Ok(body) = serde_json::from_slice::<AuthenticationResponse>(&body) { return Ok(StoredCredential::from_response(body, provider)); </ins> } <del> let body = response.json::<AuthenticationResponse>().await?; Ok(StoredCredential::from_response(body, provider)) </del> <ins> if let Ok(res) = serde_json::from_slice::<AuthenticationError>(&body) { return Err(OAuthError { error: res.error, error_description: res.error_description, } .into()); } return Err(StatusError { body: String::from_utf8_lossy(&body).to_string(), status_code, url: provider.grant_uri().to_string(), } .into()); </ins> } /// Implements the device code flow, returning the credentials upon success.

}; let body = format!( <del> "client_id={}&grant_type=urn:ietf:params:oauth:grant-type:device_code&device_code={}", provider.client_id(), init_code_json.device_code ); </del> <ins> "client_id={}&grant_type=urn:ietf:params:oauth:grant-type:device_code&device_code={}", provider.client_id(), init_code_json.device_code ); let mut interval_s = 5; </ins> while Utc::now() < expires_at { <del> sleep(std::time::Duration::from_secs(5)).await; </del> <ins> sleep(std::time::Duration::from_secs(interval_s)).await; </ins> match self.do_grant(provider, body.clone()).await { Ok(creds) => return Ok(creds), <ins> Err(AnyError::OAuthError(e)) if e.error == "slow_down" => { interval_s += 5; // https://www.rfc-editor.org/rfc/rfc8628#section-3.5 trace!(self.log, "refresh poll failed, slowing down"); } </ins> Err(e) => { trace!(self.log, "refresh poll failed, retrying: {}", e); }

} #[derive(Debug)] <ins> pub struct OAuthError { pub error: String, pub error_description: Option<String>, } impl std::fmt::Display for OAuthError { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { write!( f, "Error getting authorization: {} {}", self.error, self.error_description.as_deref().unwrap_or("") ) } } #[derive(Debug)] </ins> pub struct CommandFailed { pub output: std::process::Output, pub command: String,

UpdatesNotConfigured, CorruptDownload, MissingHomeDirectory, <del> CommandFailed </del> <ins> CommandFailed, OAuthError </ins> ); impl From<reqwest::Error> for AnyError {