CI, Registry & Release-Pipeline Credential Kit

Both Oct 21 incidents ran through build credentials: Railway asked users to roll private registry credentials and reset GitHub tokens, and LiteLLM's poisoned release was published with leaked developer GitHub CLI tokens. This kit covers an Oct 21 response section, a token inventory for registries, CI and git hosts, a release-pipeline hardening checklist (trusted publishing, protected environments, SHA-pinned actions, branch-protection bypass alerts), and ci_credential_check.py, a read-only audit of GitHub Actions workflows. Includes a per-bot guide (Grok Bot, OpenClaw, ChatGPT, Claude, Cursor, n8n, Manus; Instinct, Muse and Dot marked unverified). v2: --afk-json output and module.json plug into the Agent Cyber Defense Dashboard.

Doc / CSV / Python script (ZIP + PDF)Both Oct 21 incidents ran through build credentials: Railway asked users to roll private registry credentials and reset GitHub tokens, and LiteLLM's poisoned release was published with leaked developer GitHub CLI tokens. This kit covers an Oct 21 response section, a token inventory for registries, CI and git hosts, a release-pipeline hardening checklist (trusted publishing, protected environments, SHA-pinned actions, branch-protection bypass alerts), and ci_credential_check.py, a read-only audit of GitHub Actions workflows. Includes a per-bot guide (Grok Bot, OpenClaw, ChatGPT, Claude, Cursor, n8n, Manus; Instinct, Muse and Dot marked unverified). v2: --afk-json output and module.json plug into the Agent Cyber Defense Dashboard.

CI, Registry & Release-Pipeline Credential Kit results tile highlighted in the Agent Cyber Defense Dashboard (sample walkthrough data)
Sample walkthrough data · Agent Cyber Defense Dashboard

What's inside

Verify it works

  1. python3 ci_credential_check.py --selftest prints selftest ok.
  2. python3 ci_credential_check.py .github/workflows on your repo lists risky permissions, unpinned actions, long-lived registry tokens and release jobs without protected environments.
  3. Fill build_token_inventory.csv (names and scopes only, no values) and work through 01 until every row has revoked_old=yes.
  4. Apply 02 and re-run the script until it exits 0.
  5. Dashboard: add --afk-json to any command above and save the output as results/ci-credentials.json; load it in the Agent Cyber Defense Dashboard. Python 3.9+, no installs. Read-only: nothing is changed, sent or uploaded.

Preview

First part of the main document, shown as-is:

Oct 21 incident response: registry, CI and git-host tokens

Facts we rely on (Oct 21, 2026; wording follows the sources)

Steps

  1. Revoke on GitHub, not just in Railway. Railway says GitHub tokens it stored as registry credentials were removed from Railway but still work on GitHub until you revoke them. Revoke those PATs in GitHub settings, then reconnect Railway's GitHub app. (https://blog.railway.com/p/security-disclosure-recommendation-redeploy-buckets-and-reconnect-github-after-the-credential-reset)
  2. Roll every private registry credential that was a Railway variable or present on a host that ran litellm 1.107.0 (Docker Hub, GHCR, npm, PyPI, cloud registries). (https://blog.railway.com/p/security-disclosure-wednesday-october-21st, https://docs.litellm.ai/blog/security-incident-oct-21-2026)
  3. Recreate Railway API tokens used by CI or scripts; Railway invalidated all of them. (https://status.railway.com/incident/QH8L8B3E)
  4. Check developer CLI tokens. LiteLLM's attacker used developers' GitHub CLI OAuth tokens found in proxy logs. Run gh auth status on dev machines; revoke and reissue tokens that touched an exposed log store, and stop logging full LLM response bodies. (https://docs.litellm.ai/blog/security-incident-oct-21-2026)
  5. Audit your org's log for branch-protection overrides, workflow file changes, deleted workflow runs and new deploy keys on Oct 21-22. Those were the steps used against LiteLLM.
  6. Verify recent artifacts. For anything you published Oct 21-22, compare the artifact digest with a rebuild from your tagged source.

← All kits