# PyPI, 릴리스 14일 후 새 파일 업로드 거부

> Clean Markdown view of GeekNews topic #31732. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=31732](https://news.hada.io/topic?id=31732)
- GeekNews Markdown: [https://news.hada.io/topic/31732.md](https://news.hada.io/topic/31732.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-07-23T22:01:00+09:00
- Updated: 2026-07-23T22:01:00+09:00
- Original source: [blog.pypi.org](https://blog.pypi.org/posts/2026-07-22-releases-now-reject-new-files-after-14-days/)
- Points: 1
- Comments: 1

## Topic Body

- PyPI는 토큰이나 배포 워크플로가 탈취돼도 안정된 기존 릴리스가 오염되지 않도록, 게시 후 **14일이 지난 릴리스**의 새 파일 업로드를 차단함
- 현재까지 실제 악용 사례는 확인되지 않았지만, 공격자가 가능성을 몰랐다는 점 외에는 공격을 막을 **기술적 장벽이 없었음**
- 상위 15,000개 패키지를 조사한 결과, 릴리스 14일 후 Python 3.14용 `cp314` 휠을 추가한 프로젝트는 **56개**에 그쳤음
- 기존 릴리스에 새 Python 버전 지원을 추가하던 프로젝트는 이제 **다음 버전을 배포해야 하며**, PyCon US 2026 Packaging Summit에서도 이를 수용 가능한 방안으로 판단함
- 아직 릴리스의 개방·폐쇄 상태를 정의하거나 확인할 API가 없으므로 이 동작에 의존하면 안 되며, 향후 **PEP 694**의 Upload 2.0 API와 Staged Previews가 관련 의미 체계를 정립할 예정임

---

### 오래된 릴리스를 닫는 이유
- [PyPI의 변경](https://github.com/pypi/warehouse/pull/19727)은 오래되고 안정된 릴리스에 새 파일을 올리는 경로를 차단함
  - 프로젝트의 게시 토큰이나 워크플로가 침해되더라도 기존 릴리스 일부만 악성 파일로 교체되는 상황을 방지함
  - 릴리스 안에 침해된 파일과 그렇지 않은 파일이 섞이는 불명확한 상태를 막고, PyPI 관리자의 정리 작업도 줄임
- 논의는 **PEP 740 Digital Attestations** 작업 중이던 [2024년 1월 시작](https://discuss.python.org/t/restricting-open-ended-releases-on-pypi/43566)됐고, [2026년 3월 재개](https://discuss.python.org/t/restricting-open-ended-releases-on-pypi/43566/34)됨
  - 계기는 [LiteLLM과 Telnyx 공급망 침해](https://blog.pypi.org/posts/2026-04-02-incident-report-litellm-telnyx-supply-chain-attack/)였으며, 두 프로젝트가 사용한 Trivy GitHub Action의 [변경 가능한 참조(mutable reference)](https://mikael.barbero.tech/blog/post/2026-03-24-stop-trusting-mutable-references/)가 원인이었음
- 일부 프로젝트가 이미 게시된 릴리스에 새 Python 버전 지원 파일을 추가하고 있어 초기 논의가 중단됨
  - 변경의 영향을 파악하기 위해 PyPI 데이터베이스에서 [오래된 릴리스에 파일을 추가한 프로젝트](https://discuss.python.org/t/restricting-open-ended-releases-on-pypi/43566/48)를 경과 일수별로 조사함
  - 상위 15,000개 패키지의 `cp314` 휠을 별도로 확인한 결과, [14일 이후 Python 3.14 호환 휠을 게시한 프로젝트는 56개](https://discuss.python.org/t/restricting-open-ended-releases-on-pypi/43566/63)였음

### 적용 결정과 향후 API
- [PyCon US 2026 Packaging Summit](https://hackmd.io/k0C-RAIVRnu-YXoDFgABvA)에서는 새 Python 버전을 지원할 때 **다음 버전으로 올리도록 요구해도 수용 가능하다**는 대략적인 합의가 형성됨
- 조사 데이터와 합의를 바탕으로 [Warehouse 패치](https://github.com/pypi/warehouse/pull/19727)가 추진됐으며, **2026년 7월 8일 병합**됨
- 현재 제한은 아직 안정적인 인터페이스로 간주할 수 없음
  - “더 이상 새 파일을 받지 않는 릴리스”의 정의가 확정되지 않았고, 상태를 확인할 API도 없음
  - [PEP 694](https://peps.python.org/pep-0694/)가 **Upload 2.0 API**와 **Staged Previews**를 표준화한 뒤 릴리스를 `open` 또는 `closed`로 다루는 의미 체계가 마련될 예정임

## Comments



### Comment 62276

- Author: neo
- Created: 2026-07-23T22:01:02+09:00
- Points: 1

###### [Lobste.rs 의견들](https://lobste.rs/s/53g8f7/pypi_releases_now_reject_new_files_after) 
- 좋은 변화지만, 이런 **정책**이 수년 전부터 없었다는 게 놀라움
  - 애초에 **PyPI 릴리스**를 변경할 수 있었다는 사실부터 놀라움
