diff --git a/crates/goose/src/providers/ollama.rs b/crates/goose/src/providers/ollama.rs index eb255ed4cedd..169c7c64d655 100644 --- a/crates/goose/src/providers/ollama.rs +++ b/crates/goose/src/providers/ollama.rs @@ -65,8 +65,13 @@ impl OllamaProvider { .map_err(|e| ProviderError::RequestFailed(format!("Invalid base URL: {e}")))?; // Set the default port if missing + // Don't add default port if: + // 1. URL explicitly ends with standard ports (:80 or :443) + // 2. URL uses HTTPS (which implicitly uses port 443) let explicit_default_port = self.host.ends_with(":80") || self.host.ends_with(":443"); - if base_url.port().is_none() && !explicit_default_port { + let is_https = base_url.scheme() == "https"; + + if base_url.port().is_none() && !explicit_default_port && !is_https { base_url.set_port(Some(OLLAMA_DEFAULT_PORT)).map_err(|_| { ProviderError::RequestFailed("Failed to set default port".to_string()) })?; diff --git a/crates/goose/src/providers/toolshim.rs b/crates/goose/src/providers/toolshim.rs index c3b6306dc983..eea5bd6e4c6d 100644 --- a/crates/goose/src/providers/toolshim.rs +++ b/crates/goose/src/providers/toolshim.rs @@ -96,8 +96,13 @@ impl OllamaInterpreter { .map_err(|e| ProviderError::RequestFailed(format!("Invalid base URL: {e}")))?; // Set the default port if missing + // Don't add default port if: + // 1. URL explicitly ends with standard ports (:80 or :443) + // 2. URL uses HTTPS (which implicitly uses port 443) let explicit_default_port = host.ends_with(":80") || host.ends_with(":443"); - if base_url.port().is_none() && !explicit_default_port { + let is_https = base_url.scheme() == "https"; + + if base_url.port().is_none() && !explicit_default_port && !is_https { base_url.set_port(Some(OLLAMA_DEFAULT_PORT)).map_err(|_| { ProviderError::RequestFailed("Failed to set default port".to_string()) })?;