GitHub CLI Süresi Dolan OAuth Token’larını Yeniliyor
GitHub CLI, artık süresi dolan ve arka planda kendiliğinden yenilenen OAuth kimlik bilgileriyle çalışabiliyor. Public preview kapsamında sunulan bu seçeneği etkinleştirdiğinizde gh, kısa ömürlü bir access token ile dönüşümlü (rotating) bir refresh token’ı birlikte saklıyor, access token’ı da ihtiyaç duyuldukça sizin yerinize yeniliyor. Pratikte oturumunuz düşmüyor, tekrar tekrar giriş yapmak zorunda kalmıyorsunuz; sızdırılan bir access token ise süresiz geçerli kalmak yerine saatler içinde kullanılamaz hale geliyor.
Özelliği açmanın iki yolu
Özellik v2.103.0 sürümüyle birlikte kullanılabiliyor. Tek seferlik denemek isterseniz giriş yaparken yeni --expiring bayrağını geçmeniz yeterli:
gh auth login --expiring
Her oturum açışta bayrağı tekrar yazmak istemiyorsanız davranışı yapılandırma üzerinden kalıcı hale getirebilirsiniz:
gh config set expiring_credentials enabled
Bu ayardan sonra günlük kullanımda ek bir komut çalıştırmanız gerekmiyor, gh kimlik bilgisini arka planda yeniliyor. Mevcut durumu, özellikle de geçerli access token’ın ne zaman süreceğini görmek isterseniz:
gh auth status
Git ile HTTPS üzerinden çalışıyorsanız
Git’e HTTPS üzerinden kimlik doğrulaması yapıyor ve süresi dolan token’ları kullanmak istiyorsanız GitHub, gh‘ı git credential helper olarak yapılandırmanızı özellikle öneriyor:
gh auth setup-git
Böylece kimlik bilgisini git’e sunan ve gerektiğinde yenileyen taraf gh oluyor, kısa ömürlü token da doğru biçimde ele alınıyor.
İkinci öneri git tarafında: git 2.46 veya daha yeni bir sürüme geçmek. Bu sürümlerde gh, süresi dolacak kimlik bilgilerini işaretleyebiliyor, token da ömrünü aşacak şekilde önbellekte tutulmuyor. Daha eski git sürümlerinde de çalışmaya devam ediyor ama gh bir kereliğine yükseltme önerisi mesajı yazdırıyor.
Bilinmesi gereken üç nokta
Özellik tamamen isteğe bağlı ve geriye dönük uyumlu. Bayrak ya da yapılandırma ayarı üzerinden açıkça etkinleştirmediyseniz hiçbir şey değişmiyor; var olan oturumlar ve elle sağladığınız token’lar aynı şekilde çalışıyor.
--expiring bayrağı yenilenebilir kimlik bilgisi talep eder. Sunucu bunu desteklemiyorsa gh sorunsuz biçimde normal, yani süresi dolmayan token davranışına geri düşüyor. Kısacası sunucu ne veriyorsa onu alıyorsunuz.
GitHub, şu an opt-in olan bu yapıyı ileriki bir sürümde yeni oturum açmalarda varsayılan hale getirmeyi planladığını belirtiyor.
Nelere dikkat etmek gerekiyor?
Süresi dolan access token’lar kısa ömürlü olduğu için, token’ı bir kez alıp saklayan ve sonradan tekrar kullanan her yapı kırılabilir. gh auth token çıktısını bir değişkene ya da dosyaya yazıp daha sonra kullanan betikler, eklentiler, token’ı kopyalayıp başka bir araca gömen akışlar… Hepsinde er ya da geç elinizde süresi dolmuş bir token kalır.
Token’ı gh dışında tüketiyorsanız önerilen yaklaşım, değeri önbelleğe almak yerine her seferinde taze okumak:
gh auth token
Bu komut gerektiğinde token’ı yeniliyor. Uzun süre geçerli kalması gereken bir token’a bağımlı bir iş akışınız varsa, o akış için şimdilik bu özelliği açmamak daha güvenli. gh git credential helper olarak yapılandırıldığında ise kimlik bilgisini sizin yerinize yenilediği için HTTPS üzerinden yapılan git işlemleri çalışmaya devam ediyor.
Hangi ortamlarda kullanılabiliyor?
Süresi dolan token’lar bugün github.com ve ghe.com üzerinde kullanılabiliyor. GitHub Enterprise Server tarafında bu kimlik bilgilerini veren ilk sürüm GHES 3.23. Daha eski GHES sürümlerinde özelliği açtığınızda sistem bugünkü süresi dolmayan token davranışına geri düşüyor; yani açmanız bir hataya yol açmıyor, yalnızca beklediğiniz kısa ömürlü davranışı elde edemiyorsunuz.
Başlarken ve geri bildirim
Denemek için GitHub CLI’ı v2.103.0 sürümüne kurmanız ya da yükseltmeniz yeterli. Kurumsal bir ortamda yaygınlaştırmayı düşünüyorsanız sıralama şöyle olabilir: önce CLI’ı güncelleyip tek bir oturumda --expiring bayrağıyla denersiniz, git kullanıyorsanız gh auth setup-git ile credential helper’ı ayarlarsınız, git sürümünü kontrol edersiniz, son olarak token’ı dışarı taşıyan betikleri gh auth token‘ı her çağrıda taze okuyacak biçimde gözden geçirirsiniz. Bunlar bittikten sonra gh config set expiring_credentials enabled ile ayarı kalıcı hale getirmek daha az sürpriz üretir.
Süresi dolan kimlik bilgileri dahil olmak üzere GitHub CLI ile kimlik doğrulama konusunun tamamı resmi dokümantasyonda anlatılıyor. Bir sorunla karşılaşırsanız ya da geri bildirim vermek isterseniz cli/cli deposunda issue açabilirsiniz.
Kaynaklar ve İleri Okuma
- GitHub CLI: Opt in to expiring, auto-refreshing OAuth tokens (The GitHub Blog)
- Authenticating with GitHub CLI — GitHub Docs
- GitHub CLI v2.103.0 sürüm notları
- cli/cli deposu ve kurulum talimatları
- cli/cli issue listesi (geri bildirim için)
- GitHub Apps’te Least Privilege İçin Yeni İzinler







4 comments