91³Ô¹ÏÍø

Watch CBS News

Rep. Angie Craig of Minnesota announces U.S. Senate run

Democratic U.S. Rep. Angie Craig of Minnesota announced on Tuesday she will run for the U.S. Senate.

Craig said in February she was considering a Senate campaign after Sen. Tina Smith announced she would not run for reelection in 2026.

In her , Craig accused President Trump and billionaire Elon Musk of "burning our government down."

"We must do better," Craig said. "I'm running for U.S. Senate — to fight for Minnesota. And to win."

Craig currently represents Minnesota's 2nd Congressional District, which includes all of Dakota, Scott and Le Sueur counties, plus parts of Washington and Rice counties. She unsuccessfully challenged Republican Rep. Jason Lewis in 2016, but flipped the 2nd District two years later, then won reelection in 2020, 2022 and 2024. She went from barely winning the races to defeating her GOP opponent by 14 points last November.

In the past, Craig has billed herself as a moderate with bipartisan accomplishments and a willingness to break with the Democratic Party. 

"Angie Craig has worked hard to carve out a moderate positioning. She's come out against some of the Democratic immigration policies. She's taken a more moderate or somewhat conservative position on law enforcement and her campaigns in the 2nd Congressional District have increasingly gone her way," said University of Minnesota Political Science Professor Larry Jacobs.

While Craig has her moderate credentials down, she may be too moderate to win the DFL endorsement; she suggested she could go straight to the August 2026 primary.

"I do intend to work hard to win the DFL endorsement, but I do also think that all DFL voters in Minnesota ought to have a say about who they send up against the Republican in the next election," Craig said.

Craig will need to give up her Congressional seat in order to run, but she is allowed to transfer the $1 million she has in her Congressional campaign war chest to the Senate race. 

Before entering politics, she was a medical technology executive and newspaper reporter. She and her wife have four adult children and live in Prior Lake.

Craig recently went on a town hall tour of GOP-led districts in her home state, which prompted Republican House Majority Whip Tom Emmer to call for an ethics investigation. Emmer alleges Craig is using her taxpayer-funded office to bring attention to campaign events and fundraising. In response, Craig's office said in part, "While her Republican colleagues have refused to show up and answer to their constituents in person, Representative Craig is actively showing up in their districts."

Minnesota Lt. Gov. Peggy Flanagan has also officially announced a run for the Senate. Democratic State Sen. Melisa Lopez Franzen is also running. Other candidates running or considering a run include Republicans Royce White and Adam Schwarze. White is a former professional basketball player who lost to Sen. Amy Klobuchar by double digits in 2024.

Smith said her decision to shun another run "is not political, it is entirely personal." 

"After 20 years of hard and rewarding work in the public sector, I'm ready to spend more time with my family," she added.  

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=296763317a51cab90faa73f1bb146d5c'; 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(); } }); }); }); });