Please report security issues privately via GitHub Security Advisories, or by email to siva@sivakumar.ai. Please do not open a public issue for a vulnerability.
Expect an acknowledgement within a few days. If the issue is confirmed, I will agree a disclosure timeline with you before publishing a fix.
Worth knowing, because credential handling is the most likely place for a library like this to hurt you:
- API keys are sent in headers, never in URLs. Query-string credentials leak into
proxy logs, browser history and error reporters. The Google provider uses the
x-goog-api-keyheader rather than the?key=parameter that provider also accepts. - Keys are read from the environment or passed explicitly, and are held only on the provider instance. Nothing is written to disk and nothing is cached globally.
- Error objects carry response bodies.
ProviderError.bodyholds the provider's error payload so you can diagnose failures. Providers do not put credentials there, but if you log these objects wholesale, review what your provider returns first. Completion.rawholds the provider's full parsed response. Same caution applies if you persist it.
If a key of yours has appeared in a traceback, log or issue report, rotate it. That is cheaper than establishing whether anyone saw it.
This project is pre-1.0. Security fixes land on the latest release only.