Owner: sre-agent Last updated: 2026-05-04 UTC Consumed by: raxx-console rotation UI (#300) — UI links to vendor-specific SOP for any manual step
CF token rename (#754): New
CF_<FUNCTION>_<SCOPE>names are the canonical names as of 2026-05-01. Legacy names continue to work until the cleanup card removes them. Rows show both names during the migration window.
This index is the canonical map from credential name → vendor → rotation mode → SOP path → cadence. The console rotation UI renders directly from this matrix (or its YAML/JSON-rendered equivalent under console/data/rotation-matrix.{yaml,json} once feature-developer wires it up).
Modes: - programmatic — fully automated; UI can trigger end-to-end without operator console interaction (still requires TOTP re-elevation per ADR 0021) - operator-assisted — UI prepares the rotation but the operator must complete one or more steps in the vendor's portal/CLI; UI deeplinks to the SOP - auto-rotated — vendor handles rotation transparently; SOP is informational only
| Credential name | Vendor | Mode | SOP link | Auto-prompt cadence | Last rotated | Next due |
|---|---|---|---|---|---|---|
CF_WAF_EDIT_RAXX_APP |
Cloudflare (User API Tokens) | operator-assisted | cloudflare-user-api-token.md | 90 days | 2026-05-04 | 2026-08-02 |
CF_DNS_EDIT_GETRAXX_COM |
Cloudflare (User API Tokens) | operator-assisted | cloudflare-user-api-token.md | 90 days | 2026-05-04 | 2026-08-02 |
CF_PAGES_DEPLOY (was CLOUDFLARE_RAXX_AUTOMATION_API_TOKEN) |
Cloudflare (User API Tokens) | programmatic | cloudflare-user-api-token.md | 90 days | TBD (operator to populate) | TBD |
CF_ACCESS_MGMT (was CLOUDFLARE_ACCESS_MGMT_TOKEN) |
Cloudflare (User API Tokens) | programmatic | cloudflare-user-api-token.md | 90 days | TBD | TBD |
CF_PAGES_READ (was CLOUDFLARE_PAGES_READ_TOKEN) |
Cloudflare (User API Tokens) | programmatic | cloudflare-user-api-token.md | 90 days | TBD | TBD |
CF_ACCESS_SVC_CONSOLE (was CF_ACCESS_SERVICE_TOKEN_CONSOLE) |
Cloudflare Access (Service Tokens) | programmatic | cloudflare-access-service-token.md | 90 days | TBD | TBD |
CF_ACCESS_SVC_VAULT (was CF_ACCESS_SERVICE_TOKEN_VAULT_PROBE) |
Cloudflare Access (Service Tokens) | programmatic | cloudflare-access-service-token.md | 90 days | TBD | TBD |
CLOUDFLARE_RAXX_AUTOMATION_API_TOKEN |
Cloudflare (User API Tokens) | programmatic | cloudflare-user-api-token.md | 90 days | TBD | TBD (legacy name — see CF_PAGES_DEPLOY) |
CLOUDFLARE_ACCESS_MGMT_TOKEN |
Cloudflare (User API Tokens) | programmatic | cloudflare-user-api-token.md | 90 days | TBD | TBD (legacy name — see CF_ACCESS_MGMT) |
CLOUDFLARE_PAGES_READ_TOKEN |
Cloudflare (User API Tokens) | programmatic | cloudflare-user-api-token.md | 90 days | TBD | TBD (legacy name — see CF_PAGES_READ) |
CF_ACCESS_SERVICE_TOKEN_CONSOLE |
Cloudflare Access (Service Tokens) | programmatic | cloudflare-access-service-token.md | 90 days | TBD | TBD (legacy name — see CF_ACCESS_SVC_CONSOLE) |
CF_ACCESS_SERVICE_TOKEN_VAULT_PROBE |
Cloudflare Access (Service Tokens) | programmatic | cloudflare-access-service-token.md | 90 days | TBD | TBD (legacy name — see CF_ACCESS_SVC_VAULT) |
HEROKU_API_KEY |
Heroku Platform | operator-assisted | heroku-platform-token.md | 90 days | TBD | TBD |
HEROKU_PLATFORM_API_TOKEN |
Heroku Platform | operator-assisted | heroku-platform-token.md | 90 days | TBD | TBD |
ALPACA_PAPER_API_KEY_ID |
Alpaca Paper Trading | operator-assisted | alpaca-paper-keys.md | 180 days | TBD | TBD |
ALPACA_PAPER_API_SECRET_KEY |
Alpaca Paper Trading | operator-assisted | alpaca-paper-keys.md | 180 days | TBD | TBD |
ALPACA_LIVE_API_KEY_ID |
Alpaca Live Trading | operator-assisted | alpaca-live-keys.md | 60 days | TBD | TBD |
ALPACA_LIVE_API_SECRET_KEY |
Alpaca Live Trading | operator-assisted | alpaca-live-keys.md | 60 days | TBD | TBD |
STRIPE_RESTRICTED_KEY |
Stripe | operator-assisted | stripe-restricted-key.md | 90 days | TBD | TBD |
POSTMARK_SERVER_TOKEN |
Postmark | operator-assisted | postmark-server-token.md | 180 days | TBD | TBD |
ANTHROPIC_API_KEY |
Anthropic | operator-assisted | anthropic-api-key.md | 90 days | TBD | TBD |
DREAMHOST_API_KEY |
DreamHost | operator-assisted | dreamhost-api-key.md | 90 days | TBD | TBD |
DYN_PASSWORD |
Oracle Dyn | operator-assisted | dyn-api-key.md | 180 days | TBD | TBD |
AWS_ACCESS_KEY_ID (per IAM user) |
AWS IAM | programmatic | aws-iam-access-key.md | 30 days | TBD | TBD |
AWS_SECRET_ACCESS_KEY (per IAM user) |
AWS IAM | programmatic | aws-iam-access-key.md | 30 days | TBD | TBD |
GITHUB_API_READONLY_TOKEN |
GitHub PAT | operator-assisted | github-pat.md | 90 days | TBD | TBD |
GITHUB_APP_PRIVATE_KEY |
GitHub App | operator-assisted | github-app-installation-token.md | 365 days | N/A (no App provisioned yet) | N/A |
GITHUB_INSTALLATION_ACCESS_TOKEN (transient) |
GitHub App | auto-rotated | github-app-installation-token.md | 1 hour (auto) | continuous | continuous |
GOOGLE_WORKSPACE_SA_KEY_JSON |
Google Workspace (Service Account) | programmatic | google-workspace-service-account-key.md | 90 days | TBD | TBD |
INFISICAL_SERVICE_TOKEN |
Infisical | operator-assisted | infisical-service-token.md | 90 days | TBD | TBD |
The rotation UI reads the matrix at render time and: 1. For each row, displays the credential name, vendor, status badge (healthy/stale/expiring/expired/unknown), days-since-last-rotation, and cadence. 2. Mode = programmatic → the "Rotate now" button triggers the UI's automated pipeline (#253). On any operator-required clarification (e.g., a vendor doc deeplink), the UI reveals the SOP link. 3. Mode = operator-assisted → the "Rotate now" button opens the SOP in a side panel and pre-fills as much of the rotation as possible (e.g., generates rotation IDs, opens vendor URL in a new tab). The operator works through the SOP, then returns to the UI to confirm completion. The UI captures the audit log entry on completion. 4. Mode = auto-rotated → no button; the UI shows the rotation status as informational.
The "Last rotated" and "Next due" columns are TBD because:
- This SOP set is being authored before the rotation pipeline (#253) and console UI (#300) ship.
- Once the console UI is live, the Infisical metadata (updatedAt) becomes the source of truth and these columns can be auto-populated.
- For credentials that have not been rotated since onboarding, the operator should populate the "Last rotated" date based on their records and trigger a rotation if the value is older than the cadence.
Last validated date, and add a row to the SOP's "Vendor doc references" section.[archived] rather than deleting it — preserves rotation history.Last validated is within 6 months, refreshes any stale ones.No — Raxx GitHub App is not provisioned as of 2026-04-25. Plan: stay on PATs for v1; revisit GitHub App provisioning once we have ≥2 automated systems writing to the GitHub API. The github-app-installation-token.md SOP is informational/aspirational until then.
Yes — still on Dyn for some records as of 2026-04-25. Vendor docs are degrading post-Oracle acquisition; not yet planned for migration. Keep the SOP active. Follow-up to file: migrate off Dyn before vendor support degrades further.
claude-infisical-bootstrap only. Created by Kristerpher; sole IAM identity at present.docs/ops/runbooks/break-glass.md (to be written) will document the recovery path.