בתוך tmux, התראות שולחן העבודה של Claude Code לא מגיעות ל-terminal החיצוני עד שמוסיפים set -g allow-passthrough on ל-~/.tmux.conf. זה פותר את הבעיה כל עוד אתם מחוברים לסשן. אחרי detach אף terminal לא מציג את הסשן, כך ששום דבר על המסך לא יכול להתריע, אבל Claude Code ממשיך לרוץ וה-hooks שלו ממשיכים לפעול. כדי לקבל עדכונים מסשן מנותק, השתמשו ב-hook ששולח push ברשת, לטלפון או לאפליקציית צ'אט, במקום hook שתלוי ב-terminal.
01כשמחוברים: להעביר התראות דרך tmux
tmux יושב בין Claude Code ל-terminal, וכברירת מחדל בולע את ה-escape sequences ש-Claude Code משתמש בהם להתראות שולחן עבודה. מדריך ה-terminal של Anthropic מציע את הבלוק הזה ל-~/.tmux.conf:
set -g allow-passthrough on
set -g focus-events on
set -s extended-keys on
set -as terminal-features 'xterm*:extkeys'
החילו אותו על השרת שרץ:
tmux source-file ~/.tmux.conf
allow-passthrough מאפשר להתראות ולעדכוני התקדמות להגיע ל-terminal החיצוני. שאר השורות מתקנות את Shift+Enter לשורה חדשה. עם ההגדרה הזו, terminals שמציגים את ההתראות של Claude Code מחוץ ל-tmux (Ghostty, Kitty ו-iTerm2 עם התראות מופעלות) יציגו אותן גם בתוך tmux.
אותו דבר נכון ל-hooks שמחזירים terminalSequence. לפי תיעוד ה-hooks של Anthropic, Claude Code כותב את הרצפים האלה בעצמו, וזה עובד בתוך tmux ו-GNU screen. יש דוגמאות במדריכים ל-macOS, ל-Linux ול-SSH.
02מחוברים, אבל בחלון אחר: השתמשו ב-bell
אם Claude Code רץ בחלון tmux אחד ואתם עובדים בחלון אחר, ה-bell הוא סימן פשוט. הגדירו ל-Claude Code לשלוח אותו תמיד:
{
"preferredNotifChannel": "terminal_bell"
}
ואז גרמו ל-tmux להגיב לו, ב-~/.tmux.conf:
setw -g monitor-bell on
set -g bell-action other
set -g visual-bell off
monitor-bell (מופעל כברירת מחדל) מסמן חלון שהשמיע bell, ו-tmux מציג לידו ! בשורת הסטטוס. bell-action other מעביר ל-terminal את ה-bell מחלונות שאינם החלון שמולכם, כך שה-terminal יכול לצפצף או לקפוץ. השתמשו ב-any כדי לכלול גם את החלון הנוכחי. הגדרת visual-bell ל-on מציגה הודעה בתוך tmux במקום להעביר את ה-bell הלאה.
03לציין איזה סשן צריך אתכם
כשרצים כמה סשנים, התראה שאומרת רק "Claude צריך אותך" לא עוזרת הרבה. hook רץ בסביבה של ה-pane, כך שהוא יכול לבקש מ-tmux את שם הסשן והחלון. דוגמת ה-Linux הזו מציגה אותם בהתראת שולחן עבודה:
#!/bin/bash
msg=$(jq -r '.message // "Claude Code needs your attention"')
where=""
if [ -n "$TMUX_PANE" ]; then
where=$(tmux display-message -p -t "$TMUX_PANE" '#S:#W')
fi
notify-send "Claude Code ${where}" "$msg"
שמרו אותו בשם ~/.claude/hooks/notify-tmux.sh, הריצו עליו chmod +x והשתמשו בו כפקודת hook מסוג Notification או Stop. #S הוא שם הסשן ו-#W שם החלון; תנו לסשנים שמות עם tmux new -s api-refactor וההתראה תגיד לכם לאן ללכת. החליפו את notify-send בפקודה של הפלטפורמה שלכם, או ב-push. במדריך לסשנים מרובים יש עוד דרכים להבחין בין סשנים.
04במצב מנותק: צריך push
כל העניין ב-tmux הוא ה-detach: מתחילים משימה ארוכה, מתנתקים והולכים. Claude Code ממשיך לעבוד בסשן המנותק. אבל עכשיו אין terminal שיציג escape sequence או bell, ואם שרת ה-tmux הופעל דרך SSH, גם לפקודת התראת שולחן עבודה אולי אין לאן להגיע.
ל-hook ששולח בקשת רשת לא משנה אם מישהו מחובר. כל שירות push יעבוד. במדריך ל-ntfy ובמדריך ל-Telegram, Slack ו-Discord יש hooks מוכנים להדבקה. הם מודיעים שמשהו קרה, אבל לא יכולים לענות ל-Claude, כך שבקשת הרשאה עדיין תחכה עד שתתחברו מחדש עם tmux attach -t api-refactor.
05איפה Claude Code Notifier נכנס לתמונה
Claude Code Notifier הוא כלי עצמאי (של TouchTap, לא של Anthropic) שמבוסס על ה-hooks של Claude Code. כלי שורת הפקודה החינמי שלו, ccn, רץ על Mac, Windows ו-Linux. מכיוון שהוא מתחבר ל-Claude Code ולא ל-terminal, הוא עובד אותו דבר ב-tmux, ב-screen או ב-shell רגיל, מחוברים או מנותקים:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
במחשב שולחני הוא מציג התראת שולחן עבודה כש-Claude מסיים, צריך הרשאה או שואל שאלה. צמדו טלפון ואותם אירועים יגיעו כהתראות push דרך ה-relay המוצפן של TouchTap, מכל מחשב ש-ccn רץ עליו, כולל שרת שהתחברתם אליו ב-SSH.
הטלפון סוגר את הפער שסשן מנותק משאיר. כשעולה בקשת הרשאה, אפשר לאשר פעם אחת, לאשר לכל הסשן או לדחות מהטלפון, ו-Claude ממשיך בלי שתצטרכו להתחבר מחדש. אפשר לבחור תשובה כש-Claude שואל שאלה, ולשלוח את ההוראה הבאה מיד כש-Claude מסיים. אם הקלדתם ב-30 השניות האחרונות, שום דבר לא מחכה לטלפון וה-terminal שואל כרגיל. אם אתם לא ליד המחשב, ה-terminal מחכה לתשובה מהטלפון עד תקרה שתבחרו (hold_ceiling_seconds), ומפסיק לחכות ברגע שנוגעים במקלדת.
ראו צימוד טלפון, עזיבת המחשב במשימות ארוכות והדף של ccn. אפליקציות הטלפון דורשות מנוי או רכישה לכל החיים; ראו תמחור.
06GNU screen
מבחינה זו screen עובד די כמו tmux. לפי תיעוד ה-hooks של Anthropic, פלט terminalSequence של hook עובד בתוך screen, ו-screen מציג הודעה כשחלון שאתם לא מסתכלים עליו משמיע bell. לסשנים מנותקים של screen יש אותה בעיה כמו ל-tmux מנותק: שום דבר לא מוצג על המסך, אז השתמשו ב-push.
07שאלות נפוצות
למה התראות של Claude Code לא מופיעות בתוך tmux?
tmux חוסם את ה-escape sequences ש-Claude Code משתמש בהם, אלא אם passthrough מופעל. הוסיפו set -g allow-passthrough on ל-~/.tmux.conf והריצו tmux source-file ~/.tmux.conf.
האם Claude Code ממשיך לרוץ כשמנתקים את ה-session מ-tmux?
כן. התהליך ממשיך לרוץ בשרת של tmux, וה-hooks שלו ממשיכים לפעול. רק התראות שדורשות terminal מחובר מפסיקות להגיע.
איך מקבלים התראות מ-session מנותק של tmux?
צריך hook ששולח push דרך הרשת, למשל ntfy, webhook של אפליקציית צ'אט או אפליקציית הטלפון של Claude Code Notifier. רצפי escape וצלצול של ה-terminal דורשים client מחובר.
אפשר לאשר הרשאה בלי להתחבר מחדש?
לא עם שירות push רגיל. עם Claude Code Notifier וטלפון מצומד אפשר לאשר או לדחות את הבקשה מהטלפון, וה-session המנותק ממשיך לעבוד.
איך יודעים איזה session של tmux מחכה לי?
תנו שמות ל-sessions ושלבו את השם בהתראה. hook יכול לקרוא אותו עם tmux display-message -p -t "$TMUX_PANE" '#S:#W'.