mirror of
https://github.com/openai/codex.git
synced 2026-09-16 12:13:30 +00:00
## Why An OAuth-backed Streamable HTTP MCP server can fail startup when its stored credentials are rejected. If a client then completes OAuth sign-in and replaces those credentials, the failed server needs to become available without restarting the Codex session. ## What changed - Track the credential store and OAuth tokens used for each MCP connection, and detect replacements after authentication failures. - Refresh affected MCP servers before the next turn and include their recovered tools in the model request. - Classify HTTP authentication challenges and rejected refresh tokens as requiring reauthentication, with sign-in guidance appropriate to local and client-managed environments. ## Testing - Cover recovery from expired credentials through an externally written replacement token. - Cover authentication-error classification, startup messaging, and `Auto` store migration from file credentials to the keyring. GitOrigin-RevId: 9b090089d4e7a44ffc182f4e25da20a18e97b70f
53 lines
2.0 KiB
Rust
53 lines
2.0 KiB
Rust
mod auth_status;
|
|
mod elicitation_client_service;
|
|
mod executor_process_transport;
|
|
mod http_client_adapter;
|
|
mod in_process_transport;
|
|
mod incoming_jsonrpc;
|
|
mod local_stdio_transport;
|
|
mod logging_client_handler;
|
|
mod oauth;
|
|
mod oauth_http_client;
|
|
mod perform_oauth_login;
|
|
mod program_resolver;
|
|
mod protocol_mode;
|
|
mod rmcp_client;
|
|
mod startup_error;
|
|
mod stdio_server_launcher;
|
|
mod utils;
|
|
|
|
pub use auth_status::McpAuthState;
|
|
pub use auth_status::McpLoginRequirement;
|
|
pub use auth_status::OAuthDiscoveryTimeout;
|
|
pub use auth_status::StreamableHttpOAuthDiscovery;
|
|
pub use auth_status::determine_streamable_http_auth_status;
|
|
pub use auth_status::determine_streamable_http_auth_status_from_credentials;
|
|
pub use auth_status::discover_streamable_http_oauth;
|
|
pub use codex_protocol::protocol::McpAuthStatus;
|
|
pub use http_client_adapter::StreamableHttpRedirectMode;
|
|
pub use in_process_transport::InProcessTransportFactory;
|
|
pub use oauth::StoredOAuthCredentialSnapshot;
|
|
pub use oauth::StoredOAuthTokens;
|
|
pub use oauth::WrappedOAuthTokenResponse;
|
|
pub use oauth::delete_oauth_tokens;
|
|
pub use oauth::save_oauth_tokens;
|
|
pub use oauth::stored_oauth_credential_snapshot;
|
|
pub use oauth::stored_oauth_credentials;
|
|
pub use perform_oauth_login::OAuthProviderError;
|
|
pub use perform_oauth_login::OauthLoginHandle;
|
|
pub use perform_oauth_login::perform_oauth_login;
|
|
pub use perform_oauth_login::perform_oauth_login_return_url;
|
|
pub use perform_oauth_login::perform_oauth_login_silent;
|
|
pub use protocol_mode::McpProtocolMode;
|
|
pub use rmcp::model::ElicitationAction;
|
|
pub use rmcp_client::Elicitation;
|
|
pub use rmcp_client::ElicitationResponse;
|
|
pub use rmcp_client::ListToolsWithConnectorIdResult;
|
|
pub use rmcp_client::RmcpClient;
|
|
pub use rmcp_client::SendElicitation;
|
|
pub use rmcp_client::ToolWithConnectorId;
|
|
pub use startup_error::is_authentication_required_error;
|
|
pub use stdio_server_launcher::ExecutorStdioServerLauncher;
|
|
pub use stdio_server_launcher::LocalStdioServerLauncher;
|
|
pub use stdio_server_launcher::StdioServerLauncher;
|