WEBA

הכלי של OpenAI מריץ תהליכים ברקע ומתעדכן לבד

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

467 מילים21 עובדות אומתו

כלי שורת פקודה אמור להיסגר כשסוגרים את הטרמינל. בדיון סוער ב-GitHub התברר כי מפתחים שהתקינו את Codex CLI גילו מציאות אחרת לגמרי. החל מגרסה 0.157.0, הפעלה של הכלי מרימה תהליכי רקע מתמשכים, מורידה מאות מגה-בייט של קבצים בינאריים לתיקיית המשתמש ומפעילה לולאת עדכון עצמאית. כל זה קורה בלי לבקש רשות, ובלי להודיע במסך.

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

שרת נסתר שלא נסגר

ההפעלה של הפקודה הבסיסית ביותר בסשן אינטראקטיבי יוצרת תהליך רקע בשם codex app-server daemon. התהליך מתנתק ממסוף ההפעלה, עובר לניהול של PID 1, וממשיך לעבוד גם כשכל חלונות הטרמינל נסגרים. בנוסף, הכלי משכפל חבילה מלאה בגודל 374 מגה-בייט ישירות לתוך תיקיית המשתמש בנתיב ~/.codex/packages/app-server-daemon. החבילה כוללת קבצים בינאריים מקבילים שכבר הותקנו במערכת דרך מנהל החבילות.

מהרגע שהשכפול מתבצע, נוצר ניתוק מוחלט בין גרסת התוכנה שהותקנה דרך npm, pacman או brew לבין מה שרץ בפועל. ה-daemon פועל מתוך העותק המבודד, מנותק מניהול הגרסאות של המערכת.

עדכונים שקטים ודריסת פרוקסי

החלק הבעייתי מגיע מתהליך נפרד בשם pid-update-loop. התהליך מתחיל לרוץ חמש דקות לאחר העלייה הראשונה, ומאותו רגע בודק אם יש גרסאות חדשות מדי שעה. כשהוא מזהה גרסה חדשה, הוא מוריד אותה ברקע ומאתחל את השרת המקומי בשקט. זה גורם לקטיעה פתאומית של משימות ריצה ארוכות, כפי שעלה בדיווחי באגים קודמים במאגר, משום שהשרת מאלץ כיבוי של משימות פעילות לאחר דקה אחת בלבד.

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

זעם בקהילה וחששות אבטחה

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

דברים לא אמורים לייצר שרתי מסתורין ותהליכים פתאום בעדכוני גרסה קטנים בלי לתת התראה מראש.megahall ב-GitHub

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

כך מנטרלים את המנגנון

רבים מנסים לעצור את התהליך באמצעות הפקודה codex app-server daemon stop, אך מגלים שזה פותר רק חצי מהבעיה. פקודת העצירה סוגרת את שרת היישומים, אך משאירה את תהליך העדכון השעתי pid-update-loop פועל וממתין ברקע. כדי להחזיר שליטה, צריך לבטל את ההגדרה לחלוטין, לעצור את השרת, לחסל את תהליך העדכון ביד ולמחוק את הקבצים המשוכפלים.

כדי לבטל את ההפעלה האוטומטית, מריצים codex features disable daemon_auto_start, או מוסיפים daemon_auto_start = false לקובץ config.toml. לאחר מכן עוצרים את השרת עם codex app-server daemon stop, ומחסלים את לולאת העדכונים העקשנית באמצעות הפקודה pkill -f 'app-server daemon pid-update-loop'. לסיום, אפשר לפנות מקום בדיסק על ידי מחיקת התיקייה המשוכפלת בעזרת rm -rf ~/.codex/packages/app-server-daemon.

השוואת התנהגות שורת הפקודה לפי גרסאות
פרמטרלפני גרסה 0.157.0מגרסה 0.157.0 ואילך
ריצת תהליכים ברקעמסתיים עם סגירת הטרמינלשרת מתמשך ברקע המנותק מהטרמינל
שכפול קבצים בינאריים לדיסקרץ מנתיב מנהל החבילות המקורימשכפל 374 מגה-בייט לתיקיית המשתמש
מנגנון עדכוניםידני דרך מנהל החבילותבדיקה שעתית שקטה ואתחול כפוי ברקע
שמירת משתני סביבהדינמי לפי כל הפעלה בטרמינלנעול לפי משתני הסביבה של ההפעלה הראשונה

בינתיים ב-OpenAI עדיין לא הפכו את התכונה לבחירה מפורשת, והמשתמשים נאלצים לעשות סדר בעצמם. תבדקו את מנהל המשימות שלכם.

מה לעשות עכשיוהריצו ביטול של daemon_auto_start בהגדרות וחזרו לנהל את העדכונים שלכם לבד.

מקורות

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

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

האם הפקודה codex app-server daemon stop עוצרת את כל התהליכים?

לא. הפקודה מכבה את שרת היישומים הראשי, אך משאירה את תהליך העדכון השעתי pid-update-loop פעיל ברקע, ויש לחסל אותו ידנית.

איך מוודאים שהעדכון האוטומטי לא רץ כרגע במחשב?

אפשר לבדוק את רשימת התהליכים במערכת בעזרת פקודת חיפוש כמו pgrep או דרך מנהל המשימות, ולחפש תהליכים שמכילים את המחרוזת app-server daemon.

האם ביטול ה-daemon פוגע בביצועי ההשלמות של המודל?

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