Every Google Cloud project is isolated from every other project by default, including its Cloud Storage buckets. Having access to a bucket in your own project does not give you access to a bucket sitting in someone else’s project, even if you personally own both. Moving a file directly between two buckets in different projects means explicitly granting permission on the destination side first.
This walks through hitting that access denied error, understanding exactly why it happens, and granting the one IAM role that actually resolves it.
gsutil cp gs://SOURCE_BUCKET_NAME/* gs://DESTINATION_BUCKET_NAME/

The destination project has no reason to trust a request coming from outside it. Your account may have every permission it needs on the source bucket, but the destination bucket does not know who you are until you are explicitly added to its IAM policy. This is working as intended, not a bug, it is exactly the isolation that keeps one project’s data from being reachable by anyone with access to a different project.
Switch the console to the destination project, then open the menu, then IAM and Admin, then IAM.
Open Menu > IAM & Admin > IAM

Click Add.

Enter the account that is actually running the copy command, your own account if you are running it yourself. Assign it the Storage Object Creator role, which allows writing new objects into the bucket without granting the ability to read, overwrite, or delete anything already there. Click Save.

gsutil cp gs://SOURCE_BUCKET_NAME/* gs://DESTINATION_BUCKET_NAME/
With the role in place, the same command now succeeds.

Object level ACLs still exist as a legacy access system, but any bucket created with uniform bucket level access enabled, the default for new buckets since 2020, has ACLs disabled entirely. Any attempt to set one on a bucket like that fails outright. IAM is not just the cleaner option today, for most current buckets it is the only option, which is exactly why granting a role is the fix rather than adjusting an ACL.
That covers copying files between Cloud Storage buckets in different projects, and the exact role that fixes the access denied error. To go further, explore Prwatech’s Google Cloud training program, which includes placement assistance.