WEBA

טוקן הגישה ב־GitHub CLI מתפוגג אבל הסקריפטים שלכם יישברו

גרסה חדשה של ה־CLI מאפשרת מעבר לטוקנים עם תוקף מוגבל ורענון אוטומטי, אך שמירת טוקן במטמון או בסקריפטים תדרוש התאמה מיידית.

600 מילים27 עובדות אומתו

מפתחים שונאים להתחבר מחדש בטרמינל. במשך שנים, הפתרון של כלי הפקודה של 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.

השוואת התנהגות אסימוני גישה ב-GitHub CLI
מאפייןהתנהגות ישנה (ברירת מחדל)התנהגות חדשה (--expiring)
אורך חיי אסימון הגישהללא הגבלת זמןמספר שעות בלבד
שימוש באסימון רענוןללא רענון אוטומטיקיים ומתחלף ברקע
לכידת טוקן לשימוש חוזר מחוץ ל-CLIשומר על תוקף רציףנשבר לאחר פקיעת התוקף
גרסת Git מומלצת לסנכרוןלא פורסםלפי החברה, Git 2.46 ומעלה
תמיכה בהנפקת אסימונים אלה ב-GHESגרסאות קודמות ללא תמיכה במנגנוןגרסה 3.23 ומעלה בלבד

אז לא, אתם לא חייבים לרוץ ולהחליף את כל עמדות העבודה כבר מחר בבוקר. אבל מכיוון שב־GitHub מתכננים להפוך את האסימונים המתפוגגים לברירת המחדל בהתחברויות חדשות בגרסאות הבאות, עדיף לבדוק את הסקריפטים שלכם עכשיו, לפני שהעדכון הבא יעשה את זה בשבילכם.

מה לעשות עכשיושדרגו ל-Git 2.46 ומעלה, וודאו שסקריפטים מקומיים אינם שומרים את gh auth token במטמון, והפעילו את הדגל --expiring בעמדות הפיתוח.

מקורות

הידיעה נכתבה מהמקורות שלמעלה בתאריך הפרסום, וכל טענה בה נבדקה מולם. מצאתם טעות? כתבו.

מה שואלים על זה

איך מפעילים את המנגנון החדש עבור כל הפקודות מעכשיו?

אפשר להפעיל אותו באופן חד־פעמי בהתחברות באמצעות הדגל gh auth login --expiring, או להגדיר אותו כברירת מחדל קבועה במחשב באמצעות הפקודה gh config set expiring_credentials enabled.

מה קורה אם סקריפט קיים שלי משתמש ב-gh auth token?

סקריפטים ששומרים את פלט הפקודה במשתנה ומשתמשים בו לאורך שעות ייכשלו ברגע שהאסימון יפוג. הפתרון הוא לקרוא לפקודה gh auth token מחדש בכל פעולה כדי לתת לממשק לרענן את האסימון לפי הצורך.

האם המעבר מחייב להקליד סיסמה או לאשר מחדש בדפדפן בכל פעם?

לא. הממשק שומר אסימון רענון מתחלף לצד אסימון הגישה ומבצע את הרענון בשקט ברקע, כך שאין צורך באישור ידני חוזר בדפדפן כל עוד המערכת פועלת כסדרה.

מה קורה בסביבות שרת פרטיות של GitHub Enterprise Server?

התמיכה באסימונים מתפוגגים ב-GHES תחל רק מגרסה 3.23 ומעלה. בשרתים מגרסאות מוקדמות יותר, המערכת תיסוג באופן אוטומטי ותנפיק אסימון רגיל ללא תוקף.