בהתאם, חטיבה 7 הוסעה בחשאי, ערב המבצע, לאזור צפת, וגדוד 72 אמור היה לתקוף ולכבוש את אזור מירון. כיבוש הכפר ופיצוץ הגשר הסמוך נועד לאבטח את עורפו של הכוח העיקרי של החטיבה, הגדוד המשוריין 79, בדרכו צפונה לכיבוש צפצאף וג'יש, ולמנוע זרימה אפשרית של תגבורות מאזור בקעת בית הכרם ובקעת סכנין. יעדו הסופי של הגדוד המשוריין היה צומת סעסע ומשטרת סעסע הסמוכה, הנמצאים מערבה משם.
חטיבה 9, שנערכה באזור יחיעם וגעתון, אמורה הייתה לכבוש את תרשיחא, לאחר כיבוש מספר משלטים במבואותיה המערביים על ידי גדוד 92 של החטיבה. גדוד 91 אמור היה לעבור דרך גדוד 92 ולכבוש את מבואותיה הדרומיים מערביים של תרשיחא. במקביל היה על החטיבה לכבוש את מעיליא הסמוכה, והכוח הדרוזי אמור היה לכבוש את ינוח, תוך תאום עם תושביו, דרוזים אף הם. במהלך בו זמני לכל אלה, גדוד 11 אמור היה לפרוץ לעצמו דרך על הכביש הראשי לתרשיחא (כביש 89 של ימינו). לאחר מכן, ולאחר שגדוד 11 יפרוץ לעצמו מעבר דרך הכביש, החטיבה הייתה אמורה לחבור עם חטיבה 7 באזור סעסע. החבירה המתוכננת הייתה סוגרת את טבעת הכיתור סביב 'צבא ההצלה' שבגליל, וחורצת את גורלו.
חטיבת 'כרמלי' אמורה הייתה לבצע מספר התקפות הסחה בגזרתה, הגליל העליון המזרחי. חטיבת 'גולני' אמורה הייתה לפשוט על עילבון, למטרות ריתוק, הסחה והטעייה. בדומה, כוחות חי"ם ותותחנים אמורים היו לבצע ירי כבד ככל האפשר בגזרת סח'נין ומג'ד אל-כרום.
מהלך המבצע.
מבצע חירם החל בלילה שבין 28 ל-29 באוקטובר 1948. המבצע נפתח בהרעשה ארטילרית ובהפצצה מן האוויר של הכפרים סעסע, תרשיחא וסוחמטה. באותו ערב הופצצו גם ג'יש וצפצאף ובהמשך המבצע גם מלכיה וכפרים נוספים. באותו לילה ערכה חטיבת 'גולני' פשיטה על עילבון, כוחות חי"ם ותותחנים פתחו באש בגזרתם, באזור סח'נין ומג'ד אל-כרום, וחטיבת 'כרמלי' פעלה באופן דומה באזור אצבע הגליל. כל אלה נעשו כדי למנוע מ'צבא ההצלה' לזהות את המאמצים העיקריים של צה"ל.
חטיבה 7.
חטיבה 7 יצאה מכיוון צפת וגדוד 72 של החטיבה תקף בלילה את מירון. הניסיון הראשון נכשל, ורק לקראת בוקר בסיוע כח משוריין נכבש הכפר. הגשר הסמוך פוצץ על ידי מחלקה של 'כרמלי', על מנת למנוע תנועת תגבורות ערביות. מוקדם יותר באותו לילה כבש הכוח הצ'רקסי את קדיתא. גדוד 79 החל לנוע עוד בטרם הסתיימה ההשתלטות על מירון, ועשה דרכו לעבר צפצאף, אשר נכבשה בשחר ה-29 לחודש. בעוד חלק מן הגדוד נותר לטהר את צפצאף וסביבתה, כוח אחר של הגדוד, מחלקת זחל"מים, שתי מחלקות משוריינים, כיתת מרגמות 81 מ"מ וזחל"ם נושא תותח 20 מ"מ, נע אל ג'יש (גוש חלב). ההתנגדות בג'יש, ובעיקר בסביבתה הקרובה, הייתה קשה מן הצפוי, וכוח האויב במקום, הגדול מן ההערכות המוקדמות, כלל גם שני משוריינים. אלה האחרונים הושמדו על ידי תותח 20 מ"מ שנלווה לתוקפים. מחלקת חי"ר, שסיימה את טיהור צפצאף, נשלחה לאגוף את ג'יש ממזרח, ובהדרגה החלה ההתנגדות של המגינים להישבר. תוך כדי הקרב, חש למקום גדוד סורי, חלקו באוטובוסים, חלקו בכלי רכב אחרים, והוא הושמד עוד בטרם עמד על המתרחש. תגבורות ערביות קטנות יותר, שניסו להגיע למקום, נבלמו. בבוקר 30 באוקטובר נכבשה סעסע, היעד העיקרי של החטיבה ושל המבצע, כמעט ללא קרב. כיבוש צומת סעסע, שהיה צומת הדרכים החיוני ביותר בגליל ההררי, אכן הביא להחלטת צבא ההצלה על נסיגה לעבר לבנון. מסעסע המשיכה חטיבה 7 צפונה-מזרחה למלכיה, אותה כבשה ב-31 באוקטובר, וכוחות החטיבה אף חצו מעט את גבול הלבנון באזור עיטרון שמעט מערבה למלכיה.
חטיבה 9.
ההתקפה הראשונה.
חטיבה 9 נערכה אף היא בהסתר ככל האפשר, בטרם יצאה אל יעדיה. לשם כך נעזרה החטיבה בפעולות הסוואה והטעייה שונות. החטיבה יצאה ב-28 באוקטובר בשעת ערב מכיוון נהריה לעבר תרשיחא. גדוד 92 של החטיבה יצא מגעתון במטרה לכבוש את 'גבעת הסלעים', מוצב פלוגתי שנמצא כשני ק"מ מדרום לכביש (כיום כביש 89) וכשלושה ק"מ ממערב לעיירה, את 'גבעת העץ' שמדרום לו, את תל מרדה (כיום תל מרווה) ומשלט נוסף, נ"ג 521.7. הכוח תעה בדרכו, התקשה לנוע בצמחייה הסבוכה, ספג אש ממנה נגרמו לו כמה אבדות, ולבסוף נסוג מבלי שהסתער על מי מיעדיו. במקביל, גדוד 11 של החטיבה יצא מא-נהר (כיום נתיב השיירה), ופילס לו דרך, תחת אש, בכביש המוביל אל תרשיחא, אשר היה גדוש במכשולים. נסיגת גדוד 92 אילצה גם את גדוד 11 לסגת ב-09:00 בבוקר ה-29 לחודש, בטרם סיים את מלאכתו. כוחות הגדוד הגיעו עד אותה העת למרחק של כארבעה ק"מ מערבה לתרשיחא. נסיגת גדוד 92 גרמה בעקיפין גם לכישלון בינוח (ר' להלן). כיוון שכך, החליט מטה חזית הצפון להטיל את יהבו על המאמץ המזרחי (ר' למעלה). בהמשך להחלטה זו, נשלח גדוד 92, להוציא הפלוגה המסייעת, לתגבר את חטיבה 7, והספיק לשמש כחיל מצב בסעסע ובבירעם לאחר שנכבשו.
התקרית בכפר ינוח.
כיבוש הכפר ינוח הוטל על הפלוגה הדרוזית תוך שיתוף פעולה עם תושבי הכפר הדרוזים. הפלוגה, אשר יצאה מעמקא (כיום עמקה), הצליחה לחדור לכפר ולהדוף את כוח המשמר המקומי בסיוע התושבים הדרוזים. אך לנוכח נסיגת חיילי חטיבה 9 מהמשלטים הסמוכים לתרשיחא חזר כוח המשמר לכפר ופתח בהתקפת נגד על הפלוגה הדרוזית שלא ידעה על פקודת הנסיגה. למרות הסיכומים המוקדמים הצטרפו הדרוזים המקומיים אל לוחמי צבא ההצלה. במהלך קרב הנסיגה הקשה נפלו 11 דרוזים מחיילי הפלוגה, וכן שני מפקדיה היהודים והרופא היהודי של הפלוגה. השאר נחלצו בסיוע ארטילרי. השתתפות הדרוזים בקרב הפכה בעיני צה"ל והדרוזים שנפגעו בקרב מקור לטענה על בגידתם של הדרוזים תושבי ינוח, ששינו את עמדתם בעקבות התקפת הנגד של "צבא ההצלה". משה כרמל תיאר את הקרב הזה כ"מקרה בגידה מפתיע ומזעזע". מאידך טענו אנשי הכפר שלא הבינו את המסר שהועבר אליהם.
ההתקפה השנייה.
בלילה הבא תקפה חטיבה 9 שנית, זו הפעם גדוד 91, ובהצלחה, את המשלטים שממערב לתרשיחא. 'גבעת העץ' נכבשה לאחר התנגדות קלה, ושאר המשלטים נעזבו על ידי הערבים. הגדוד המשיך לעבר מעיליא והעיירה נכנעה לאחת הפלוגות של הגדוד. באותו זמן, בקירוב, תרשיחא נכנעה לפלוגה אחרת של אותו גדוד. בינתיים גדוד 11 המשיך בפריצת הכביש מן המקום בו עצר בהתקפה הקודמת. הכביש פונה עד השעה 08:00 בבוקר ה-30 באוקטובר. עד ערבו של אותו יום הגדוד עשה דרכו לסעסע לחבירה עם כוחות חטיבה 7, והשלים בכך את פעולת המלקחיים שהביאה לניתוק רובה של המובלעת הערבית בגליל מלבנון. כן כבש הגדוד את פסוטה, חורפיש, דיר אל קאסי (אלקוש), סוחמטה (כיום חוסן) ועוד. גדוד 91 המשיך וכבש את תרביחא (שומרה) ואת איקרית. הפלוגה המסייעת של גדוד 92 (שלא צורפה לחטיבה 7) עשתה דרכה אל פקיעין ופגשה בדרכה כוח מ'גולני' שעלה מכיוון ראמה. ב-31 באוקטובר אחר הצהריים טיהרה חטיבה 9 את כל האזור שבין קיבוץ אילון לכפר סעסע. כך היה כביש הצפון כולו בידי צה"ל, מראש הנקרה במערב ועד מלכיה ומטולה במזרח.
לאחר עיכוב של 36 שעות נכבש גם הכפר ינוח.
חטיבת גולני.
במהלך המבצע ערכה חטיבת גולני פעולות הטעיה וריתוק באזור עילבון. ההתקפה הראשונה בלילה שבין 28 ל-29 באוקטובר על עמדות צבא ההצלה בכפר נכשלה. רק בבוקר ה-30 באוקטובר נכבשה עילבון לאחר קרב קשה. יחידות החטיבה המשיכו צפונה וכבשו גם מע'אר, ראמה, כפר ענאן והגיעו עד פקיעין. זרוע אחרת של החטיבה חברה עם חטיבה 7 במירון.
חטיבת 'כרמלי'.
במקביל לחטיבה 7 פעלה חטיבת 'כרמלי' שתפקידה המרכזי היה לבלום מתקפה סורית אפשרית באזור מנרה ומשגב עם. כן ערכה החטיבה, עם תחילת המבצע, מספר מבצעי הסחה והטעיה, כסיוע למאמץ העיקרי. בהמשך המבצע, כוחות החטיבה חצו את הגבול לכיוון לבנון, כבשו 14 כפרים לבנוניים והגיעו עד נהר הליטאני.
כוחות החי"ם.
לאחר כישלון ההתקפה הראשונה של חטיבה 7, כוחות החי"ם שבגזרת מג'ד אל-כרום וסח'נין קיבלו הוראה להגביר את לחצם. אותם כוחות התקדמו לכיוון סח'נין ולאחר ניסיון התנגדות קצר, כבשו אותה עד בוקר ה-30 לחודש. גם מג'ד אל כרום נכנעה, וכוחות החי"ם המשיכו לכיוון דיר חנא וכפרים נוספים, אשר כולם נכנעו כמעט ללא התנגדות.
ערביי הגליל במבצע חירם.
בעקבות המבצע ברחו כ-30,000 ערבים מהאזור, רובם ללבנון; עם זאת, כמעט כל הנוצרים והצ'רקסים נשארו במקומם. לאחר המבצע הורה משה כרמל ליצור רצועה של חמישה ק"מ מדרום לגבול עם לבנון, נקייה מתושבים וכפרים ערבים. ב-5 בנובמבר פונו תושבי הכפרים איקרית ובירעם תוך הבטחה שיוכלו בעתיד לשוב למקומם. כעבור כמה ימים, הוחלט לעצור את המשך פינוי הכפרים, אך לא להחזיר את אלו שכבר פונו.
במהלך המבצע אירעו מספר מקרים של מעשי טבח והתעללות בתושבים מקומיים.
לאחר כיבוש עילבון נרצחו 14 מתושביו על ידי החיילים כנקמה על כך שראשיהם של שני חיילים ישראלים שנהרגו בקרב נכרתו ונישאו בתהלוכה.
ב-1 בנובמבר 1948, לאחר כיבוש הכפר חולא הלבנוני, ריכזו חיילי חטיבת 'כרמלי' עשרות גברים ודחקו אותם לאחד הבתים. לאחר מכן ירו עליהם ופוצצו את הבית, בין 34 ל-58 גברים נהרגו. מפקד הפלוגה האחראי הועמד לדין ונשפט לשבע שנות מאסר, אולם בפועל לא נאסר.
התקבלו תלונות ועדויות על מעשי טבח ואכזריות נוספים גם בסאלחה, צפצאף, ג'יש, בירעם וסעסע. על פי הערכה, במבצע כולו נרצחו כמאתיים אזרחים ושבויים בכ-12 מקומות. למרות מספר חקירות שנוהלו באשר למקרים אחרונים אלה, לא הועמד לדין אף חייל בעקבותיהן.
סיום המבצע ותוצאותיו.
בתום המבצע, הגליל כולו היה בשליטת צה"ל, שייצב גם קו הגנה בגבול הצפון מול לבנון. 'צבא ההצלה' נעקר מארץ ישראל בכלל, ומן הגליל, בפרט. האיום מעל מנרה הוסר.