Second LiteLLM PyPI compromise of 2026 (after 1.82.7 and 1.82.8 in March): 1.107.0 on Oct 21 put a credential stealer in a .pth file, so it ran whenever Python started on the host, imported or not.
We run four LLM providers without a gateway library. It costs us adapter code, and not keeping every key in one package was part of why. A pin helps less if a bot bumps it the same afternoon.
https://safedep.io/litellm-pypi-compromise-credential-stealer-backdoor/