깃허브 CLI, 자동 갱신되는 만료형 로그인 토큰 공개 시험

깃허브가 명령줄 도구 `gh`에 만료·자동 갱신형 OAuth 로그인을 선택 기능으로 도입했다. 토큰을 복사해 보관하는 자동화는 만료 시 끊길 수 있어 기존 사용 방식 점검이 필요하다.

창가 책상 위 노트북 화면에 코드가 보이고 옆에 작은 시계와 수첩이 놓여 있다
창가 책상 위 노트북 화면에 코드가 보이고 옆에 작은 시계와 수첩이 놓여 있다. 사진은 기사 이해를 돕기 위한 자료 이미지입니다.

깃허브가 21일 명령줄 도구 GitHub CLI의 만료형 OAuth 토큰 기능을 공개 시험으로 도입했다고 밝혔다. `gh` 2.103.0부터 로그인할 때 `--expiring` 옵션을 주면 서버에 갱신 가능한 자격증명을 요청한다. 기존 로그인은 이 옵션을 선택하지 않으면 바뀌지 않는다.

토큰 만료되면 CLI가 갱신

이 방식은 짧은 수명의 접근 토큰과 교체되는 갱신 토큰을 함께 저장한다. 깃허브에 따르면 CLI는 접근 토큰이 필요할 때 자동으로 갱신한다. 매번 만료 시 사용자가 다시 로그인하는 구조는 아니다. 다만 정확한 수명은 서버가 발급하는 값에 따르며, `--expiring` 옵션만으로 만료형 토큰 발급이 보장되지는 않는다.

한 번 로그인할 때 선택하거나 `gh config set expiring_credentials enabled`로 이후 로그인의 기본 선호를 정할 수 있다. `gh auth status`는 현재 자격증명의 갱신 가능 여부와 접근 토큰 만료 시각을 보여준다. 깃허브가 공개한 2.103.0 배포 기록과 CLI 설명서에도 해당 옵션이 실려 있다.

토큰 복사해 쓰는 자동화는 점검 필요

차이는 토큰을 CLI 밖으로 꺼내 쓰는 작업에서 드러난다. 스크립트나 확장 프로그램이 `gh auth token`의 결과를 한 번 받아 오래 보관하면 토큰이 만료된 뒤 요청이 실패할 수 있다. 깃허브는 외부 도구에서 사용할 때마다 토큰을 새로 읽도록 안내했다. 환경변수 `GH_TOKEN` 또는 `GITHUB_TOKEN`으로 직접 넣은 토큰은 CLI가 자동 갱신하지 않는다.

HTTPS 방식의 Git 인증에 만료형 토큰을 쓰려면 깃허브는 `gh auth setup-git`으로 CLI를 자격증명 도우미로 설정할 것을 권장한다. Git 2.46 이상도 권장하지만, 이전 버전에서 CLI 자체가 작동하지 않는다는 뜻은 아니다. 오래된 자격증명 캐시가 만료된 토큰을 다시 내줄 위험을 줄이려는 조치다.

현재 깃허브닷컴과 GHE.com에서 만료형 토큰을 사용할 수 있다. GitHub Enterprise Server는 3.23부터 발급을 지원하며 이전 버전에서는 일반 토큰으로 돌아간다. 공개 시험 단계인 만큼 깃허브가 향후 기본값으로 바꾸겠다는 계획은 아직 시행된 정책이 아니다.

대표 이미지: AI 생성 이미지 / 데이마크

출처: https://github.blog/changelog/2026-10-21-github-cli-opt-in-to-expiring-auto-refreshing-oauth-tokens/ ; https://github.com/cli/cli/releases/tag/v2.103.0 ; https://cli.github.com/manual/gh_auth_login