tinyhumansai/openhuman · error

Proxy is enabled but no proxy URL is configured. Set at leas

Error message

Proxy is enabled but no proxy URL is configured. Set at least one of http_proxy, https_proxy, or all_proxy

What it means

`ProxyConfig` validation requires at least one proxy URL — `http_proxy`, `https_proxy`, or `all_proxy` — whenever `proxy.enabled = true`. An enabled proxy with nothing to route through is rejected at load/update time (`has_any_proxy_url()` returns false) rather than silently not proxying anything. The adjacent rule enforces that `scope = "services"` additionally has a non-empty `services` list.

Source

Thrown at src/openhuman/config/schema/proxy.rs:129

            ("http_proxy", self.http_proxy.as_deref()),
            ("https_proxy", self.https_proxy.as_deref()),
            ("all_proxy", self.all_proxy.as_deref()),
        ] {
            if let Some(url) = normalize_proxy_url_option(value) {
                validate_proxy_url(field, &url)?;
            }
        }

        for selector in self.normalized_services() {
            if !is_supported_proxy_service_selector(&selector) {
                anyhow::bail!(
                    "Unsupported proxy service selector '{selector}'. Use tool `proxy_config` action `list_services` for valid values"
                );
            }
        }

        if self.enabled && !self.has_any_proxy_url() {
            anyhow::bail!(
                "Proxy is enabled but no proxy URL is configured. Set at least one of http_proxy, https_proxy, or all_proxy"
            );
        }

        if self.enabled
            && self.scope == ProxyScope::Services
            && self.normalized_services().is_empty()
        {
            anyhow::bail!(
                "proxy.scope='services' requires a non-empty proxy.services list when proxy is enabled"
            );
        }

        Ok(())
    }

    pub fn should_apply_to_service(&self, service_key: &str) -> bool {
        if !self.enabled {

View on GitHub (pinned to 7491200858)

Solutions

  1. Set at least one of `http_proxy`, `https_proxy`, or `all_proxy` to a valid URL (e.g. `http://127.0.0.1:7890`) while `enabled = true`.
  2. Or keep/set `enabled = false` until a proxy URL is actually configured.
  3. Remember the sibling rule: `scope = "services"` also requires a non-empty `services` list when enabled.

Example fix

# before
[proxy]
enabled = true

# after
[proxy]
enabled = true
http_proxy = "http://127.0.0.1:7890"
Defensive patterns

Strategy: validation

Validate before calling

if proxy.enabled && [proxy.http_proxy.as_ref(), proxy.https_proxy.as_ref(), proxy.all_proxy.as_ref()]
    .iter()
    .all(|u| u.is_none())
{
    // set at least one proxy URL, or keep enabled=false — do not save this state
}

Type guard

fn proxy_config_is_coherent(p: &ProxyConfig) -> bool {
    !p.enabled || p.has_any_proxy_url()
}

Prevention

When it happens

Trigger: Setting `proxy.enabled = true` in config.toml or via the proxy_config tool/UI while none of the three proxy URL fields is set — including cases where the URLs were assumed to come from environment variables but the config fields were never populated.

Common situations: Toggling the proxy on before filling in the URL; expecting HTTP_PROXY/HTTPS_PROXY env vars to satisfy the config fields; copy-pasted config snippets that omit the URL lines.

Related errors


AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17). Data as JSON: /api/errors/56d10b6e0e62d5df. Report an issue: GitHub.