TechBroz · techbroz.com41 incidents on record · updated as they happen
← Hall of Shame

Rank #11 of 41·Security·21 Oct 2026·LiteLLM Agent Platform (self-hosted cloud agents that open pull requests)

A forgotten key to LiteLLM's AI agent platform coughed up the GitHub owner's token. Eleven days later, a poisoned LiteLLM release hit PyPI

Container cranes at the Port of Oakland, for illustration of a software supply chain; not related to the incident (edited).
Container cranes at the Port of Oakland, for illustration of a software supply chain; not related to the incident (edited). Photo: Frank Schulenburg, CC BY-SA 4.0, via Wikimedia Commons; cropped, text overlaid.

“They force-pushed the evidence away. The key never got the memo.”

Incident reportSecurityPyPI, Docker Hub and GitHub's container registry
Agent / toolLiteLLM Agent Platform (self-hosted cloud agents that open pull requests)
CompanyLiteLLM (BerriAI)
DamageAbout 49,000 downloads of the poisoned release before PyPI pulled it
Time to detectFlagged on GitHub about 26 minutes after the wheels went up; the attacker had held the owner's token for 11 days
StatusPoisoned 1.107.0 pulled from PyPI and Docker on 21 Oct; LiteLLM is revoking every token and says it will share process changes
Chaos8.0 / 10
  • The master key leaked to a public repo on 27 May and was force-pushed away but never revoked
  • The agent platform's API handed back the GitHub org owner's unscoped token
  • Poisoned litellm 1.107.0 got about 49,000 downloads before PyPI pulled it

An AI agent platform needs a GitHub token to open pull requests. LiteLLM gave its one the owner's keys to everything, then left the platform's own master key in a public repo.

What happened

On 27 May a config file holding the master key to LiteLLM's internal Agent Platform, an experimental tool that lets self-hosted cloud agents file PRs, landed in a public repository. The team spotted it and force-pushed the commit away, but the key was never revoked. The platform's GitHub credential wasn't a service account. It was the GitHub CLI token of the organisation's owner, not scoped down. On 10 October an attacker used the old master key, asked the API for its list of managed agents, and got that owner token back in the reply.

The damage

That same night, throwaway branches ran CI workflows that posted repository secrets to an outside webhook, handing over tokens for two more maintainers, and the runs were deleted. On 21 October the attacker overrode branch protection, pointed the release workflow at a lookalike fork and approved the production gate with a stolen maintainer token. Seven poisoned litellm 1.107.0 wheels went up on PyPI, plus Docker images, carrying a credential stealer that could fire just by starting Python. Wiz counts about 49,000 downloads.

How it was caught, and what happened next

A community member flagged it on GitHub within half an hour. PyPI quarantined it 103 minutes after the first wheel went up, and LiteLLM says it is revoking every token it has.

Lesson for builders

A force-push hides a leaked key. Only revoking it kills it. And never hand an agent the owner's token.

Fail card: A forgotten key to LiteLLM's AI agent platform coughed up the GitHub owner's token. Eleven days later, a poisoned LiteLLM release hit PyPI
The fail card

This story in one shareable card. Tap to open it full size.

Share on X All fail cards →

More fails

Get TechBroz Weekly free → All 41 fails