diff --git a/crates/goose/src/providers/api_client.rs b/crates/goose/src/providers/api_client.rs index 3e6ced8cee92..0ce3b05ba4c9 100644 --- a/crates/goose/src/providers/api_client.rs +++ b/crates/goose/src/providers/api_client.rs @@ -297,8 +297,14 @@ impl ApiClient { fn build_url(&self, path: &str) -> Result { use url::Url; - let base_url = + let mut base_url = Url::parse(&self.host).map_err(|e| anyhow::anyhow!("Invalid base URL: {}", e))?; + + let base_path = base_url.path(); + if !base_path.is_empty() && base_path != "/" && !base_path.ends_with('/') { + base_url.set_path(&format!("{}/", base_path)); + } + base_url .join(path) .map_err(|e| anyhow::anyhow!("Failed to construct URL: {}", e))