diff --git a/crates/goose/src/providers/anthropic.rs b/crates/goose/src/providers/anthropic.rs index 9de2060b3ebb..82e204a66213 100644 --- a/crates/goose/src/providers/anthropic.rs +++ b/crates/goose/src/providers/anthropic.rs @@ -91,9 +91,19 @@ impl AnthropicProvider { key: api_key, }; - let api_client = ApiClient::new(config.base_url, auth)? + let mut api_client = ApiClient::new(config.base_url, auth)? .with_header("anthropic-version", ANTHROPIC_API_VERSION)?; + if let Some(headers) = &config.headers { + let mut header_map = reqwest::header::HeaderMap::new(); + for (key, value) in headers { + let header_name = reqwest::header::HeaderName::from_bytes(key.as_bytes())?; + let header_value = reqwest::header::HeaderValue::from_str(value)?; + header_map.insert(header_name, header_value); + } + api_client = api_client.with_headers(header_map)?; + } + Ok(Self { api_client, model, diff --git a/crates/goose/src/providers/ollama.rs b/crates/goose/src/providers/ollama.rs index 422b16051eb7..02f091e5a63e 100644 --- a/crates/goose/src/providers/ollama.rs +++ b/crates/goose/src/providers/ollama.rs @@ -108,9 +108,19 @@ impl OllamaProvider { .map_err(|_| anyhow::anyhow!("Failed to set default port"))?; } - let api_client = + let mut api_client = ApiClient::with_timeout(base_url.to_string(), AuthMethod::NoAuth, timeout)?; + if let Some(headers) = &config.headers { + let mut header_map = reqwest::header::HeaderMap::new(); + for (key, value) in headers { + let header_name = reqwest::header::HeaderName::from_bytes(key.as_bytes())?; + let header_value = reqwest::header::HeaderValue::from_str(value)?; + header_map.insert(header_name, header_value); + } + api_client = api_client.with_headers(header_map)?; + } + Ok(Self { api_client, model,