NEWThe field notebook is live: limits, limits and links for 8 browser capabilities.Read the notes →
useful tomorrow®
Field notesStatus

GitHub CLI Adds Opt-In Expiring OAuth Tokens After Credential-Theft Reports

GitHub's October 21 changelog entry lands weeks after security write-ups on the LiteLLM breach pointed to stolen CLI OAuth tokens as an attack vector.

GitHub published a changelog entry at 16:43 UTC on October 21 announcing that its command-line tool now lets users opt in to OAuth tokens that expire and refresh automatically, instead of the long-lived tokens the CLI has issued by default. The entry is posted directly on github.blog under GitHub's own changelog feed, and it describes the mechanism as opt-in rather than a forced migration. GitHub has not disclosed a timeline for making expiring tokens the default, nor has it stated how many existing long-lived tokens remain active across its user base.

The timing follows public incident write-ups on the LiteLLM breach, which reported that an attacker appeared to have used stolen GitHub CLI OAuth tokens to gain access. Those write-ups are external accounts of the LiteLLM incident, not GitHub's own statements, and GitHub's changelog entry does not reference LiteLLM, the breach, or any specific incident by name. The adjacency between the reported token theft and this CLI change is a reasonable thing for operators to notice, but GitHub has not confirmed a causal link between the two, and nothing in the changelog entry says the feature was built in direct response to that reporting.

Long-lived OAuth tokens are a known liability in CI pipelines, local developer machines, and any system where a CLI session gets cached or scripted into automation. A token that never expires is a token that, once stolen, keeps working until someone notices and manually revokes it. Expiring, auto-refreshing tokens shrink that window by design, trading a small amount of added complexity, refresh handshakes, possible re-authentication prompts, for a shorter blast radius if a credential leaks. That tradeoff is standard practice elsewhere in OAuth implementations, and GitHub's move brings its CLI into line with that pattern rather than introducing a novel mechanism.

For on-call engineers, the immediate task is inventory. Check which build systems, deploy scripts, and developer workstations authenticate to GitHub using CLI-issued OAuth tokens, and determine whether those tokens were generated before this opt-in existed. Because the feature is opt-in, any token issued under old defaults keeps behaving the old way until someone explicitly re-authenticates under the new flow. Audit logs for GitHub CLI token usage, especially from unfamiliar IP ranges or unusual times, deserve a look given the LiteLLM reporting. What remains unresolved is whether GitHub will publish guidance on bulk-rotating older tokens or whether that burden falls entirely on individual teams.

GitHub's disclosure is narrow by design: a changelog entry, a feature flag, a company announcement. It does not confirm the LiteLLM attacker's methods, does not quantify affected users, and does not commit to a forced deprecation date for long-lived tokens. Platform operators reading the entry should treat the opt-in as available tooling rather than a completed fix, and should separate what GitHub has stated from what incident researchers have reported elsewhere. The two threads point in a plausible direction together, but only one of them comes with a timestamp and a byline from the company itself.

An opt-in fix for a problem nobody has formally named is still a fix worth taking.

Primary references

Useful Tomorrow · StatusUpdated November 2, 2026