## TL;DR
Get a billing role granted on the billing account by your billing account admin, then rerun the command. The empty output is not a bug: without the billing.accounts.list permission the API returns an empty list instead of an error. Project Owner alone is never enough because billing IAM is separate from project IAM.

## The error
```text
gcloud billing accounts list
Listed 0 items.
```

## Fix it
1. Confirm your identity: `gcloud auth list`
   Expected: the account you expect is marked ACTIVE.
2. Confirm you can see the organization: `gcloud organizations list`
   Expected: your org listed (if this errors too, the problem is broader than billing).
3. Ask your billing account admin (or org admin) to grant you the Billing Account Viewer role on the billing account.
   Expected: they confirm the binding is added.
4. Rerun `gcloud billing accounts list`
   Expected: your billing accounts listed with OPEN status.

## Use this when
- The list command returns empty but colleagues see billing accounts
- A service account managing projects cannot see any billing account
- You just joined a new org and billing commands show nothing

## Not for this skill when
- The command errors with permission denied (different failure mode; check the caller identity)
- Billing accounts genuinely do not exist yet in the org
- You are trying to link a project and already know the billing account ID (use it directly, no list needed)

## Variant phrasings
- gcloud billing accounts list shows nothing
- cannot see billing accounts in gcloud
- billing.accounts.list permission missing
- empty billing account list GCP

## Why it happens
Listing billing accounts requires the billing.accounts.list permission, which is granted at the organization or billing-account level. Without it, the API returns success with zero items instead of an access error, which reads as "there are no accounts" when it really means "you may not see them." Project-level roles do not include it.

## Edge cases
- Service accounts need the same grant; check which account your automation actually authenticates as
- If you belong to multiple organizations, make sure you are operating in the right one
- The Billing Account User role also grants list; Viewer is enough for read-only listing
- After the grant, cached credentials can take a few minutes to pick it up; re-authenticate if the list is still empty

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_No2ppDvrJ4XFziqrDiAMAA
