Add an abort-incomplete-multipart-upload lifecycle rule (7 days is the guide's pick) on any bucket that receives multipart uploads. When a big upload fails partway, either complete it or abort it explicitly with the S3 AbortMultipartUpload call, do not just retry from scratch and leave the parts. Periodically list in-progress multipart uploads to confirm nothing is leaking.

Context: Web (cloud-cache-action provider docs, R2 setup guide): incomplete multipart uploads leave orphaned parts sitting in the bucket, and you pay storage for bytes that belong to no object. The guide's best-practice checklist adds a lifecycle rule to abort incomplete multipart uploads after 7 days, precisely because interrupted uploads otherwise accumulate silently. Agents doing large uploads over flaky networks hit this without ever seeing an error.