Add debug escape hatch for managed config

codex-rs/core/src/config/mod.rs: honor a debug-only CODEX_DISABLE_MANAGED_CONFIG env var in the main config loader so local interactive testing can ignore managed config and managed preferences outside app-server flows.
This commit is contained in:
rreichel3-oai
2026-05-11 19:07:37 -04:00
parent 765b6aca04
commit dc38fe22f1
+41 -1
View File
@@ -168,6 +168,8 @@ impl Default for GhostSnapshotConfig {
}
}
const DISABLE_MANAGED_CONFIG_ENV_VAR: &str = "CODEX_DISABLE_MANAGED_CONFIG";
/// Maximum number of bytes of the documentation that will be embedded. Larger
/// files are *silently truncated* to this size so we do not take up too much of
/// the context window.
@@ -951,7 +953,9 @@ impl ConfigBuilder {
};
let cli_overrides = cli_overrides.unwrap_or_default();
let mut harness_overrides = harness_overrides.unwrap_or_default();
let loader_overrides = loader_overrides.unwrap_or_default();
let loader_overrides = loader_overrides
.map(apply_debug_loader_overrides)
.unwrap_or_else(|| apply_debug_loader_overrides(LoaderOverrides::default()));
let cwd_override = harness_overrides.cwd.as_deref().or(fallback_cwd.as_deref());
let cwd = match cwd_override {
Some(path) => AbsolutePathBuf::relative_to_current_dir(path)?,
@@ -1046,6 +1050,42 @@ impl ConfigBuilder {
}
}
fn apply_debug_loader_overrides(mut loader_overrides: LoaderOverrides) -> LoaderOverrides {
#[cfg(debug_assertions)]
if disable_managed_config_from_debug_env() {
if loader_overrides.managed_config_path.is_none() {
loader_overrides.managed_config_path = Some(
std::env::temp_dir()
.join("codex-config-tests")
.join("managed_config.toml"),
);
}
#[cfg(target_os = "macos")]
if loader_overrides.managed_preferences_base64.is_none() {
loader_overrides.managed_preferences_base64 = Some(String::new());
}
if loader_overrides
.macos_managed_config_requirements_base64
.is_none()
{
loader_overrides.macos_managed_config_requirements_base64 = Some(String::new());
}
}
loader_overrides
}
fn disable_managed_config_from_debug_env() -> bool {
#[cfg(debug_assertions)]
{
if let Ok(value) = std::env::var(DISABLE_MANAGED_CONFIG_ENV_VAR) {
return matches!(value.as_str(), "1" | "true" | "TRUE" | "yes" | "YES");
}
}
false
}
impl Config {
pub fn legacy_sandbox_policy(&self) -> SandboxPolicy {
self.permissions.legacy_sandbox_policy(self.cwd.as_path())