No GCP key file ever exists in this flow.
An external workload exchanges its own platform's identity for a short-lived GCP token.
1
Present native tokenGitHub's own OIDC token — no GCP credential yet
2
Verify against pool providerSecurity Token Service checks it against a configured trust
3
Exchange for impersonationFederated token impersonates the target service account
The
--attribute-condition scoping to one specific repository is not optional polish — it's the actual security boundary. Without it, ANY repo under the org could impersonate the same service account.