auto fail oauth loading in debug

This commit is contained in:
pakrym-oai
2026-01-08 11:40:08 -08:00
parent 018de994b0
commit 069dc2895f
2 changed files with 18 additions and 0 deletions
+16
View File
@@ -50,6 +50,7 @@ use tokio::sync::Mutex;
use crate::find_codex_home::find_codex_home;
const KEYRING_SERVICE: &str = "Codex MCP Credentials";
const MCP_OAUTH_KEYRING_DEBUG_ALLOW_ENV_VAR: &str = "CODEX_MCP_OAUTH_KEYRING_DEBUG_ALLOW";
const REFRESH_SKEW_MILLIS: u64 = 30_000;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
@@ -95,6 +96,15 @@ pub(crate) fn load_oauth_tokens(
url: &str,
store_mode: OAuthCredentialsStoreMode,
) -> Result<Option<StoredOAuthTokens>> {
if keyring_load_disabled_in_debug() {
if store_mode == OAuthCredentialsStoreMode::Keyring {
return Err(anyhow::anyhow!(
"MCP OAuth keyring access is disabled in debug builds on macOS; set {MCP_OAUTH_KEYRING_DEBUG_ALLOW_ENV_VAR}=1 to enable."
));
}
return load_oauth_tokens_from_file(server_name, url);
}
let keyring_store = DefaultKeyringStore;
match store_mode {
OAuthCredentialsStoreMode::Auto => {
@@ -116,6 +126,12 @@ pub(crate) fn has_oauth_tokens(
Ok(load_oauth_tokens(server_name, url, store_mode)?.is_some())
}
fn keyring_load_disabled_in_debug() -> bool {
cfg!(debug_assertions)
&& cfg!(target_os = "macos")
&& std::env::var_os(MCP_OAUTH_KEYRING_DEBUG_ALLOW_ENV_VAR).is_none()
}
fn refresh_expires_in_from_timestamp(tokens: &mut StoredOAuthTokens) {
let Some(expires_at) = tokens.expires_at else {
return;
+2
View File
@@ -12,6 +12,8 @@ Codex can connect to MCP servers configured in `~/.codex/config.toml`. See the c
- https://developers.openai.com/codex/config-reference
On macOS debug builds, Codex skips reading MCP OAuth tokens from the system keychain to avoid repeated access prompts. Set `CODEX_MCP_OAUTH_KEYRING_DEBUG_ALLOW=1` to allow keychain reads when debugging.
## Notify
Codex can run a notification hook when the agent finishes a turn. See the configuration reference for the latest notification settings: