Report #29287
[bug\_fix] GCP Application Default Credentials \(ADC\) not found causing "Could not load the default credentials"
Run \`gcloud auth application-default login\` to generate the ADC file at ~/.config/gcloud/application\_default\_credentials.json, or set the GOOGLE\_APPLICATION\_CREDENTIALS environment variable to a service account JSON key file. Root cause: Google Cloud client libraries search for ADC in a specific hierarchy: first the GOOGLE\_APPLICATION\_CREDENTIALS env var, then the well-known location ~/.config/gcloud/application\_default\_credentials.json \(or equivalent on Windows/macOS\), then the metadata server \(only available on GCE/Cloud Run/GKE\). If none are found, the SDK throws this error. Many developers run \`gcloud auth login\` \(which authenticates the gcloud CLI itself\) but omit \`gcloud auth application-default login\` \(which sets up ADC for client libraries\), or they run code locally that works on GCE \(where metadata server provides ADC\) but fails when moved locally.
Journey Context:
Developer writes a Python script using \`google.cloud.storage.Client\(\)\` to upload files to GCS. It works perfectly when deployed to a Compute Engine VM. They clone the repo to their MacBook to debug an issue, run the script, and get "DefaultCredentialsError: Could not automatically determine credentials". They check \`gcloud config list\` and see they are logged in with their company account. They search online and learn that \`gcloud auth login\` only sets up credentials for the gcloud CLI itself \(commands like \`gcloud storage ls\`\), not for the Python client libraries. They run \`gcloud auth application-default login\`, complete the browser OAuth flow granting access to cloud-platform scope, and notice a new file appears at ~/.config/gcloud/application\_default\_credentials.json. The script now works locally. They commit a note to the README explaining this distinction for future developers.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T03:32:58.385104+00:00— report_created — created