מפתחים שונאים להתחבר מחדש בטרמינל. במשך שנים, הפתרון של כלי הפקודה של GitHub היה פשוט וקצת מפחיד: אסימון OAuth קבוע שיושב בדיסק ונשאר תקף לנצח, או לפחות עד שמישהו נזכר לבטל אותו ידנית. אתמול, ב־21 באוקטובר 2026, GitHub שחררה תצוגה מקדימה ציבורית שמנסה לתקן את חור האבטחה הזה בלי להפריע לשגרת העבודה שלכם.
השינוי מתבקש.
הטוקן כבר לא נצחי
החל מגרסה GitHub CLI v2.103.0, אתם יכולים להפעיל מנגנון של אסימונים מתפוגגים באמצעות הדגל gh auth login --expiring בעת הכניסה לחשבון. אם נמאס לכם להקליד את הדגל בכל פעם מחדש, אפשר להגדיר אותו כברירת מחדל קבועה בטרמינל עם הפקודה gh config set expiring_credentials enabled. לאחר מכן אין שום צורך לבצע פעולות תחזוקה יומיומיות, משום שהכלי מטפל ברענון השוטף של האסימונים ברקע בצורה שקטה לחלוטין. אם תרצו לבדוק את מצב ההרשאות הנוכחי ומתי בדיוק אסימון הגישה הפעיל שלכם עומד לפוג, תוכלו להריץ gh auth status ולקבל את כל הנתונים ישירות למסך.
המבנה החדש נשען על פיצול לשני מפתחות נפרדים. ה־CLI שומר אסימון גישה קצר טווח שמאבד תוקף בתוך שעות ספורות, לצד אסימון רענון (Refresh Token) מתחלף שפונה לשרתי GitHub ומביא מפתח גישה חדש בכל פעם שמתעורר צורך בכך.
אסימון גישה שדלף מאבד את תוקפו בתוך שעות ולא נותר שמיש ללא הגבלה. הרווח המרכזי כאן נוגע ישירות להגנת שרשרת האספקה בעמדות פיתוח: אם מפתח מקומי העתיק בטעות את האסימון ללוג ציבורי, או שנוזקה חילצה אותו מהמחשב, חלון ההזדמנויות של התוקף מצטמצם לחלון קצר במקום חודשים של גישה חופשית למאגרים. בחברות סייבר בישראל שמחזיקות תקני אבטחה קפדניים, סגירת החור הזה בעמדות הקצה המקומיות היא צעד חיוני.
You stay authenticated without reauthenticating, and a leaked access token becomes unusable within hours instead of lasting indefinitely.הודעת השחרור של GitHub
הסקריפטים שילכו לאיבוד
השינוי הזה מוגדר כרגע כבחירה ידנית (Opt-in), ויש לכך סיבה טובה. כל כלי או סקריפט Bash מקומי שנוהג להריץ פקודה כמו gh auth token בתחילת הריצה, לשמור את התוצאה במשתנה סביבה ולהשתמש בה שוב כעבור חצי יום, פשוט יקבל שגיאת הרשאה. מי שמחזיק אוטומציות כאלה יצטרך לשנות הרגלים ולשלוף את האסימון מחדש בכל קריאה.
בהודעת השחרור מזהירים מפורשות: אם תהליך עבודה בארגון שלכם תלוי באסימון שחייב להישאר יציב לאורך זמן, עדיף להמתין ולא להפעיל את הדגל באותה סביבה. מידע נוסף על התהליך מופיע במדריך Authenticating with GitHub CLI. אם צרכתם את האסימון מחוץ ל־gh, תקראו לו טרי בכל פעם עם הפקודה gh auth token, שמרעננת אותו בעת הצורך במקום לשמור את הערך הישן במטמון. אם הסקריפטים שלכם לא מוכנים לזה, חבל לגלות את זה באמצע הלילה.
לא הייתי ממהר להפעיל את זה בכל מקום בלי בדיקה.
דרישת הסף של Git
מי שעובד מול מאגרים בפרוטוקול HTTPS יצטרך לבצע צעד מקדים נוסף. כדי למנוע ממערכת ההפעלה או מ־Git לשמור במטמון אסימון שכבר אינו בתוקף, ב־GitHub ממליצים בחום לעדכן לגרסת Git 2.46 ומעלה ולהריץ את הפקודה gh auth setup-git. הפעולה הזאת מגדירה את gh כ־credential helper עבור Git, וכך הכלי מספק ומרענן את ההרשאות באופן עצמאי.
גרסאות ישנות יותר של Git עדיין יפעלו, אך ה־CLI יציג המלצה חד־פעמית להתקין גרסה עדכנית של התוכנה. ההבדל הטכני הוא שבגרסה 2.46 נוספה היכולת לסמן ל־Git שהאסימון מוגבל בזמן, וכך הכלי שולף אסימון עדכני ישירות מ־gh במקום להיתקע על מפתח ישן מזיכרון המטמון המקומי של המחשב.
מי נשאר בינתיים בחוץ
בשלב הנוכחי המנגנון החדש פעיל עבור משתמשי האתר הציבורי github.com ודומיינים ארגוניים בענן מסוג ghe.com. חברות ישראליות וארגונים שמנהלים שרתי GitHub Enterprise Server מקומיים ייאלצו להמתין: התמיכה באסימונים מתפוגגים תגיע לשרתים האלה רק החל מגרסה GHES 3.23. אם תנסו להעביר את הדגל מול שרת בגרסה נמוכה יותר, ה־CLI לא יישבר, אלא יבצע נסיגה שקטה להתנהגות הרגילה וינפיק אסימון קבוע.
אם נתקלתם בבאג או שיש לכם משוב על התהליך, ב־GitHub מזמינים מפתחים לפתוח issue במאגר cli/cli.
| מאפיין | התנהגות ישנה (ברירת מחדל) | התנהגות חדשה (--expiring) |
|---|---|---|
| אורך חיי אסימון הגישה | ללא הגבלת זמן | מספר שעות בלבד |
| שימוש באסימון רענון | ללא רענון אוטומטי | קיים ומתחלף ברקע |
| לכידת טוקן לשימוש חוזר מחוץ ל-CLI | שומר על תוקף רציף | נשבר לאחר פקיעת התוקף |
| גרסת Git מומלצת לסנכרון | לא פורסם | לפי החברה, Git 2.46 ומעלה |
| תמיכה בהנפקת אסימונים אלה ב-GHES | גרסאות קודמות ללא תמיכה במנגנון | גרסה 3.23 ומעלה בלבד |
אז לא, אתם לא חייבים לרוץ ולהחליף את כל עמדות העבודה כבר מחר בבוקר. אבל מכיוון שב־GitHub מתכננים להפוך את האסימונים המתפוגגים לברירת המחדל בהתחברויות חדשות בגרסאות הבאות, עדיף לבדוק את הסקריפטים שלכם עכשיו, לפני שהעדכון הבא יעשה את זה בשבילכם.
מקורות
- GitHub CLI: Opt in to expiring, auto-refreshing OAuth tokenshttps://github.blog/changelog/2026-10-21-github-cli-opt-in-to-expiring-auto-refreshing-oauth-tokens
- Authenticating with GitHub CLIhttps://docs.github.com/github-cli/github-cli/authenticating-with-github-cli#using-expiring-refreshable-tokens
- GitHub CLI v2.103.0https://github.com/cli/cli/releases/tag/v2.103.0
- Open an issue in the `cli/cli` repositoryhttps://github.com/cli/cli/issues
- GitHubhttps://weba.co.il/tools/github/
הידיעה נכתבה מהמקורות שלמעלה בתאריך הפרסום, וכל טענה בה נבדקה מולם. מצאתם טעות? כתבו.