GCP Service-Account Key Rotation — supervisor-sa
This runbook covers rotating the supervisor-sa@factory-495015.iam.gserviceaccount.com key
that powers the supervisor planner’s Gemini 2.5 Pro fallback via Vertex AI.
Who owns this? Adrian (GCP console) or Sauna (if proxy auth is fixed). How often? Quarterly, or immediately on suspected compromise.
Context
The supervisor planner usesVERTEX_ACCESS_TOKEN at runtime to call
https://us-central1-aiplatform.googleapis.com/…/gemini-2.5-pro:generateContent.
That short-lived bearer token is minted from the supervisor-sa JSON key
(SUPERVISOR_VERTEX_SA_KEY org secret) in two places:
Rotation procedure
1. Mint a new key (do NOT delete the old one yet)
2. Update the org secret
3. Verify the new key works
4. Delete the old key
5. Shred the local copy
6. Document the rotation
Add an entry to this file’s Rotation log section below.If the factory-supervisor Worker is deployed
When the Worker reads VERTEX_ACCESS_TOKEN at request time, it exchanges the SA key
for a short-lived token using the
JWT Bearer Token flow.
After updating the org secret, also rotate the Worker secret:
VERTEX_ACCESS_TOKEN by implementing the
JWT Bearer Token flow
using the Web Crypto API at startup. Until that is implemented (post-SUP-3), a
scheduled GitHub Actions workflow can re-run step 2 above to keep the secret fresh.
See docs/supervisor/ARCHITECTURE.md §6 for the long-term design.