diff --git a/codex-rs/core/src/config/service.rs b/codex-rs/core/src/config/service.rs index b13c2fa53b..62787b56e1 100644 --- a/codex-rs/core/src/config/service.rs +++ b/codex-rs/core/src/config/service.rs @@ -156,7 +156,7 @@ impl ConfigService { ) -> Result { let layers = match params.cwd.as_deref() { Some(cwd) => { - let cwd = AbsolutePathBuf::try_from(PathBuf::from(cwd)).map_err(|err| { + let cwd = AbsolutePathBuf::relative_to_current_dir(cwd).map_err(|err| { ConfigServiceError::io("failed to resolve config cwd to an absolute path", err) })?; crate::config::ConfigBuilder::default() diff --git a/codex-rs/core/src/config/service_tests.rs b/codex-rs/core/src/config/service_tests.rs index ae62326605..d3fe651a7e 100644 --- a/codex-rs/core/src/config/service_tests.rs +++ b/codex-rs/core/src/config/service_tests.rs @@ -232,6 +232,20 @@ async fn read_includes_origins_and_layers() { )); } +#[tokio::test] +async fn read_accepts_relative_cwd() { + let tmp = tempdir().expect("tempdir"); + let service = ConfigService::without_managed_config_for_tests(tmp.path().to_path_buf()); + + service + .read(ConfigReadParams { + include_layers: false, + cwd: Some(".".to_string()), + }) + .await + .expect("relative cwd should resolve"); +} + #[cfg(target_os = "macos")] #[tokio::test] async fn write_value_succeeds_when_managed_preferences_expand_home_directory_paths() -> Result<()> {