91³Ô¹ÏÍø

Watch CBS News

Tom Cibrowski

Tom Cibrowski
Tom Cibrowski CBS News

Broadcast news veteran and award-winning journalist Tom Cibrowski is president and executive editor of CBS News, where he oversees CBS News, including all newsgathering, units, and broadcasts. 

Cibrowski joined CBS News in March 2025. In a career that spans more than 30 years, Cibrowski has honed a deep understanding of the news landscape, ensuring that stories are told with fairness, integrity, and impact. This also marks a return to CBS News for Cibrowski, who was a broadcast producer for CBS News' "The Early Show."

Before joining CBS News, he spent 30 years at ABC News in multiple leadership roles.

Cibrowski served as senior vice president of ABC News Programs, News Gathering, and Special Events, where he was responsible for global newsgathering, breaking news, and content across all ABC News programs and platforms, including "Good Morning America," "World News Tonight," "Nightline" and "20/20."

At ABC, he rose through the "Good Morning America" ranks for over a decade. He served as senior executive producer of the broadcast when it took over the No. 1 morning show position from "Today" after 16 years, then described as a "once in a generation change."

In those leadership positions, Cibrowski oversaw coverage of the 2016 presidential election and election night and worldwide breaking news events, including the Royal weddings, the devastating earthquake in Haiti, and the disappearance of Malaysian Airlines Flight 17. He produced the historic interview with Robin Roberts and Barack Obama on gay marriage and President Donald Trump's first interview as the 2016 Republican presidential nominee.

Earlier in his career, Cibrowski spent a decade covering war zones in Iraq and Kosovo and was on the scene for the downfall of dictators in Haiti and Indonesia. He had multiple tours in Baghdad before and during the Iraq war. He was with Diane Sawyer in Iraq immediately before the U.S.-Iraq war started in 2003 and returned with Robin Roberts to Fallujah six months after combat began. He also traveled to Bahrain and Kuwait with Charlie Gibson to produce a series about the generals leading the war effort.

Cibrowski spent seven years as president and general manager of KGO-TV, the Disney-owned television station in San Francisco. During his tenure there, Cibrowski maintained the station's No. 1 position with viewers and led the team in modernizing and transforming the legacy linear brand to maximize relevancy and connection with multi-platform audiences.

Cibrowski is no stranger to CBS News. He was the broadcast producer for the "The Early Show" with Bryant Gumbel when the program transitioned to a dynamic street-side studio. He was also responsible for the morning program's coverage during the attacks on 9/11.

He has received multiple Emmy and Edward R. Murrow awards for overall excellence for his work. He was also the Daytime Emmy Award winner for four years at "Good Morning America" and won the George Foster Peabody Award for "Robin's Journey," the story of the top morning anchor's recovery from a bone marrow transplant.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=50747257b890e014813016b79ece0fb2'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });