Subscribe free
Morning Merge · Monday, October 26, 20264 min read

Gheist turns stolen GitHub tokens into secret leaks

Check private repos for ci-sync branches. Also: LLM price cuts, Python CA fixes and ML Drift.

The main thing

An isometric filing cabinet has an orange extraction chute fitted into its drawer, spilling sealed envelopes into a portable collection bin while a spring-loaded flap closes behind them.

If your org runs GitHub Actions in private repos, someone else's stolen token could be printing your production secrets into a log. Spend ten minutes on this before standup.

Wiz Research has tracked a campaign called Gheist since September 15, 2026. It takes compromised GitHub tokens and pushes a branch to every repo each token can reach. The branch adds a workflow that dumps the repo's secrets into its own run log. The tool downloads that log through the GitHub API and deletes the run seconds later.

The tricks are small and they work. The tool base32-encodes the secrets, and GitHub's log masking only catches values that appear verbatim. Repos with deployment environments get a job matrix that pulls environment-scoped secrets too, and those are often production credentials. The data leaves through GitHub's own API, so there is no attacker domain to block.

Public repos are mostly covered. Since July 28, 2026, GitHub has held suspicious runs in public repos until a collaborator approves them, and every public Gheist run Wiz checked is stuck at action_required. Private repos and GitHub Enterprise Server have no such hold. In enterprise orgs, Wiz saw the tool cycle through several users' tokens within minutes. Hours later, cloud credentials from the same org were used to enumerate AWS Secrets Manager. A newer variant also targets self-hosted runners and sweeps the host for tokens, keys and cloud metadata.

What to do today: In private repos and GHES, search your audit logs for ci-sync-* branches and for runs deleted by the gheist user agent. Wiz notes that CloudTrail can show it even without GitHub logs: look for your own workflows running on ci-sync branches and assuming AWS roles. If you get a hit, treat every secret that repo and its environments can reach as leaked, and treat the token owner's account as compromised.

Quick bits

Also happening

Today's homework: grep for ci-sync. The coffee can wait five minutes.

← All issues

Get this in your inbox every morning.

Free. Five minutes. Unsubscribe in one click.

Subscribe free →