Artifact Registry "denied: Permission artifactregistry.repositories.uploadArtifacts" in CI
docker push authenticated to Artifact Registry but the identity is not allowed to write to that repository. The push is rejected with uploadArtifacts denied; authentication succeeded, authorization did not.
What this error means
docker push to *-docker.pkg.dev fails with "denied: Permission 'artifactregistry.repositories.uploadArtifacts' denied on resource ...".
docker
denied: Permission "artifactregistry.repositories.uploadArtifacts" denied on resource
"projects/my-project/locations/us-central1/repositories/app" (or it may not exist)Common causes
The identity lacks the Artifact Registry Writer role
Pushing needs roles/artifactregistry.writer on the repository or project. A reader-only or unrelated role cannot upload artifacts.
Docker is not configured to auth to the registry host
Without gcloud auth configure-docker for the host, the push uses no valid credentials and is denied.
How to fix it
Grant the Writer role on the repository
- Bind roles/artifactregistry.writer to the CI service account on the repo or project.
- Configure Docker auth for the registry host.
- Retry the push.
Terminal
gcloud artifacts repositories add-iam-policy-binding app \
--location us-central1 \
--member="serviceAccount:ci@my-project.iam.gserviceaccount.com" \
--role="roles/artifactregistry.writer"Configure Docker for the registry host
Register the Artifact Registry host as a Docker credential helper before pushing.
Terminal
gcloud auth configure-docker us-central1-docker.pkg.devHow to prevent it
- Grant artifactregistry.writer to the push identity, reader to the pull identity.
- Run
gcloud auth configure-docker <host>before any push step. - Use Workload Identity Federation instead of long-lived keys for pushes.
Related guides
Artifact Registry "unauthenticated" docker push in CIFix Artifact Registry "unauthenticated" docker push in CI - Docker sent no valid credentials for the registry…
Cloud Run "Container image ... not found" in CIFix Cloud Run "Container image ... not found" in CI - gcloud run deploy referenced an image tag that was neve…
AKS "ImagePullBackOff ... ACR not authorized" in CIFix AKS "ImagePullBackOff" / "401 Unauthorized" pulling from ACR in CI - the cluster is not attached to or au…