b21e0bd8c9
Per-provider ssl_ca_cert / ssl_verify reached the httpx chat client and the auxiliary clients (#56681), but the endpoint discovery and pricing probes did not. Both probe families resolved TLS from process-wide env vars only: - the requests-based metadata/pricing probe (agent/model_metadata.py::_resolve_requests_verify) - the urllib-based /models catalog probe (hermes_cli/models.py::probe_api_models) A custom endpoint whose chain verifies against the provider's configured bundle, but not the process SSL_CERT_FILE, then logged a spurious CERTIFICATE_VERIFY_FAILED on every probe even though the chat path worked. Pointing a global CA env var at the bundle fixes it but changes verification for every provider, defeating the point of a per-provider setting. This threads the selected provider's TLS settings into both probe paths, reusing get_custom_provider_tls_settings so there is no second precedence chain: - _resolve_requests_verify(base_url) looks up the provider's ssl_verify / ssl_ca_cert before falling back to the env vars. Callers with no base_url keep the exact env-only behavior. - probe_api_models builds an ssl.SSLContext from the provider settings and passes it through open_credentialed_url, which gains an ssl_context seam on the cloned secure opener. Unmatched or public endpoints pass None and keep urllib's default policy. Tests: tests/agent/test_custom_provider_ca_probes.py covers both probe families (provider CA, ssl_verify:false, unmatched, missing file, config lookup failure) plus end-to-end assertions that the resolved verify value and SSLContext actually reach the request seam. Verified against the neighboring metadata, pricing, TLS, and urllib-security suites (266 tests) with no regressions.