July 25, 2026
Package drama gets sealed shut
PyPI Blog: Releases now reject new files after 14 days
PyPI slams the upload door after 14 days, and commenters are asking why it was ever open
TLDR: PyPI will now block new files from being added to software releases after 14 days to reduce the risk of hackers poisoning old trusted versions. Commenters mostly reacted with disbelief that releases were ever editable at all, while others argued two weeks is still way too long.
Python’s package hub, PyPI, just announced a late-upload lockdown: after 14 days, old releases can no longer get new files. The goal is simple even for non-coders: stop hackers from sneaking malware into software versions people already trust. The move comes after recent supply-chain scares involving popular packages, and PyPI says this should make compromised projects less confusing and less dangerous.
But the real fireworks were in the comments, where the mood swung between “finally, duh” and “wait, this was allowed the whole time?!” One of the loudest reactions was pure disbelief. Several users said they had always assumed a published release was basically frozen forever, so learning that files could be added later felt like discovering your “sealed” snack bag had a secret zipper. Others called the new rule “configuration management 101,” saying a release should be a release, not a living, editable blob.
Still, not everyone was fully satisfied. One hot take: 14 days is still too generous. Another commenter argued the data might undercount how many projects already work around the problem in other ways, so the whole discussion may be messier than it looks. And then there was the old-school security crowd, wagging a finger at the wider software world for not locking things down with strict hash checks years ago. In short: PyPI tried to tidy up a security hole, and the community responded with a mix of relief, outrage, and a giant chorus of “how was this not already the rule?”
Key Points
- •PyPI now rejects new file uploads to releases older than 14 days as a security measure against poisoning older releases after credential compromise.
- •PyPI says users should not yet rely on this as a formally defined release state because there are not yet semantics or APIs to confirm whether a release is closed.
- •The discussion began during PEP 740 in 2024 and resumed in 2026 after compromises involving LiteLLM and Telnyx linked to a mutable reference in the Trivy GitHub Action.
- •PyPI's analysis found limited dependence on late file uploads, including only 56 of the top 15,000 packages uploading a Python 3.14 wheel more than 14 days after release.
- •After discussion at the Packaging Summit at PyCon US 2026, Seth Larson's patch was merged on July 8, 2026, with the goal of improving user safety and reducing cleanup work after compromises.