Describe the bug
When an MCP OAuth flow is started with forced re-authentication, Copilot CLI unconditionally appends prompt=select_account to the authorization URL, including for non-Microsoft authorization servers that do not advertise support for this prompt value.
A non-Microsoft OpenID Connect provider rejects this unsupported value with invalid_request. The same authorization request succeeds after removing only &prompt=select_account from the URL.
Affected version
GitHub Copilot CLI 1.0.80
Steps to reproduce the behavior
- Configure a remote Streamable HTTP MCP server that uses OAuth with a non-Microsoft OpenID Connect authorization server.
- Complete Dynamic Client Registration and PKCE setup normally.
- Trigger forced re-authentication through
/mcp auth, the MCP server Authenticate action, or the r re-auth shortcut.
- Inspect the generated authorization URL.
- Observe that Copilot CLI appends
prompt=select_account.
- Open the URL and observe that the authorization server rejects it with HTTP 400
invalid_request.
- Remove only
&prompt=select_account and reload the URL while the Copilot CLI callback server remains running.
- Observe that the OAuth request proceeds successfully.
Control result:
forceReauth=false: no prompt parameter; authorization proceeds.
forceReauth=true: prompt=select_account; authorization is rejected.
Expected behavior
Copilot CLI should not add prompt=select_account unconditionally for every authorization server.
Possible solutions include:
- Add the parameter only when the authorization server advertises
select_account through prompt_values_supported.
- Make the forced re-authentication prompt configurable.
- Use a provider-neutral re-authentication mechanism such as
prompt=login when account-selection support is unknown.
Additional context
Environment:
- Windows 11 x64
- PowerShell
- Remote Streamable HTTP MCP server
- OAuth Authorization Code flow with PKCE
- Dynamic Client Registration
- Non-Microsoft OpenID Connect provider
Temporary workaround: copy the generated authorization URL, remove &prompt=select_account, and open the modified URL while the Copilot CLI OAuth callback server is still running.
No credentials, tokens, or private authorization-server URLs are included in this report.
Describe the bug
When an MCP OAuth flow is started with forced re-authentication, Copilot CLI unconditionally appends
prompt=select_accountto the authorization URL, including for non-Microsoft authorization servers that do not advertise support for this prompt value.A non-Microsoft OpenID Connect provider rejects this unsupported value with
invalid_request. The same authorization request succeeds after removing only&prompt=select_accountfrom the URL.Affected version
GitHub Copilot CLI 1.0.80
Steps to reproduce the behavior
/mcp auth, the MCP server Authenticate action, or therre-auth shortcut.prompt=select_account.invalid_request.&prompt=select_accountand reload the URL while the Copilot CLI callback server remains running.Control result:
forceReauth=false: nopromptparameter; authorization proceeds.forceReauth=true:prompt=select_account; authorization is rejected.Expected behavior
Copilot CLI should not add
prompt=select_accountunconditionally for every authorization server.Possible solutions include:
select_accountthroughprompt_values_supported.prompt=loginwhen account-selection support is unknown.Additional context
Environment:
Temporary workaround: copy the generated authorization URL, remove
&prompt=select_account, and open the modified URL while the Copilot CLI OAuth callback server is still running.No credentials, tokens, or private authorization-server URLs are included in this report.