GitHub CLI: истекающие OAuth-токены с автообновлением в фоне

В GitHub CLI 2.103.0 можно включить истекающие OAuth-учётные данные: gh сохраняет короткоживущий access token и ротационный refresh token и подтягивает новую пару в фоне, без повторного входа. Если токен утёк из лога или конфига, он перестаёт работать через часы, а не висит бессрочно.
Режим в public preview и только по opt-in — без флага или настройки ничего не меняется. Запрос refreshable credentials через --expiring на сервере без поддержки тихо откатывается к обычному несгораемому токену. В будущем релизе такой вход планируют сделать поведением по умолчанию для новых сессий.
Как включить
- при логине:
gh auth login --expiring; - на все следующие входы:
gh config set expiring_credentials enabled; - срок текущего access token:
gh auth status.
Git и скрипты
Для git по HTTPS GitHub рекомендует gh auth setup-git, чтобы credential helper сам выдавал и обновлял учётку. На git 2.46 и новее gh может пометить истекающие креды, чтобы их не кэшировали дольше срока; на более старых версиях всё работает, но один раз появится совет обновиться.
Короткий access token ломает сценарии, где один раз вызвали gh auth token и дальше крутят сохранённую строку — расширения, CI, обвязки вокруг агента. Вне gh токен лучше читать заново при каждом запуске: команда обновит его при необходимости. Пока пайплайн завязан на долгоживущий секрет, для него opt-in лучше отложить. Доступно на github.com и ghe.com; на GitHub Enterprise Server — с GHES 3.23, на более ранних версиях остаётся прежнее поведение.
Источник: GitHub CLI: Opt in to expiring, auto-refreshing OAuth tokens.