在 GitHub CLI 中,启用过期且可自动刷新的令牌(expiring, refreshable tokens)是降低长期令牌泄露风险的有效手段。该功能要求使用 GitHub CLI v2.103.0 或更高版本,并仅支持 GitHub.com 和 GitHub Enterprise Cloud。
用户可通过在交互式登录时添加 --expiring 标志来请求过期凭证:gh auth login --expiring。若希望每次登录默认启用此功能,可运行 gh config set expiring_credentials enabled。一旦启用,GitHub CLI 会存储一个即将过期的访问令牌和一个轮转的刷新令牌。访问令牌会在数小时内过期,而 GitHub CLI 会在需要时自动用刷新令牌换取新令牌,无需用户再次登录。
若服务器不支持该功能(例如某些 GitHub Enterprise Server 实例),即使添加了 --expiring 标志,GitHub CLI 也会回退到使用普通非过期令牌,并显示一条信息提示。此外,Git 操作需确保 GitHub CLI 被配置为 Git 凭证助手(通过 gh auth setup-git),且建议使用 Git 2.46 或更新版本,以便正确管理过期凭证的缓存。
要查看当前认证状态及令牌过期时间,可运行 gh auth status;如需读取有效令牌,使用 gh auth token(系统会自动刷新)。若需调整权限范围,应显式传递 --expiring 标志或使用 gh auth refresh --scopes SCOPES,否则可能意外替换为长期令牌。