91³Ô¹ÏÍø

Watch CBS News

ICE agent accused of assault for pulling gun on 2 people on Twin Cities highway, charges say

An Immigration and Customs Enforcement agent faces assault charges for allegedly pointing a gun at two people on a Twin Cities highway during Operation Metro Surge.

Gregory Morgan Jr. of Temple Hills, Maryland, was charged in Hennepin County Thursday morning with two counts of second-degree assault in the Feb. 5 incident.

Charges say that the two victims were driving east on Highway 62 on the Interstate 35W interchange, when Morgan approached from behind in an unmarked black Ford Expedition. Charges say he was driving illegally on the right shoulder when the victim in the other car said they moved in front of him to "cut him off." 

The victim then moved back to the traffic lane and Morgan pulled up beside them, pointing a black handgun at the two occupants of the car, charges say. The occupants, not realizing that Morgan was an ICE agent, called 911.

The two victims shared video of the incident to the Minnesota State Patrol, which tracked the Utah license plate of the Ford Expedition. It had been rented out to Morgan's partner, who was in the back seat of the car at the time of the incident, documents say.

In a voluntary interview, Morgan said he was "conducting surveillance on behalf of ICE" and said he feared for his safety when he was cut off on the highway. He said he drew his firearm and yelled "Police Stop," then drove back to the Whipple Federal Building near Fort Snelling.

Morgan, 35, was charged by warrant because "there is a substantial likelihood that [he] will fail to respond to a summons and because his present location is not reasonably discoverable," charging documents say.

"Today's charges reflect an important milestone in our effort to seek accountability for the harms inflicted on our community during Operation Metro Surge," said Hennepin County Attorney Mary Moriarty. 

She added that her office believes that Morgan's actions were "extremely dangerous" and "well beyond" the scope of his authority as a law enforcement agent. Moriarty believes the charges against the agent are the first of their kind nationally.

Moriarty said when it came to the people in the vehicle initially cutting Morgan off, it is not a good idea. Ultimately, she said it could amount to a petty misdemeanor, but she's focused on the actions of the ICE agent.

She says her office isn't sure if Morgan is still employed by ICE or even where he is in the country. ICE has not responded to WCCO's questions.

inx-ice-assault-charges-presser-041626.jpg
WCCO

The charges come after Moriarty's office launched an online portal to collect evidence of what she called illegal activity during Operation Metro Surge.

The office said it was looking into 17 incidents, including ICE activity at Roosevelt High School the day after an agent fatally shot Renee Good

Another incident involves allegations of force used by former Customs and Border Patrol Commander Gregory Bovino near Minneapolis' Mueller Park. Footage from the Jan. 22 incident shows Bovino toss chemical irritants into a crowd of anti-ICE protesters.

Her office has conducted roughly 50 interviews with witnesses. Still, the federal government hasn't shared the names of agents allegedly involved in all the incidents and is continuing to "obstruct" their investigations, Moriarty said. She was able to file charges against Morgan because the state patrol had tracked him down and collected a statement from him.

Since the surge, Moriarty's office sued the federal government alongside Minnesota Attorney General Keith Ellison and the state's Bureau of Criminal Apprehension, alleging that they are being blocked from investigating the shootings of Good, Alex Pretti and Julio Cesar Sosa-Celis

Investigating and prosecuting federal agents could present its challenges but "there is no absolute immunity," she said.

Her office also created an online portal to collect evidence in Good and Pretti's shootings that has since gone offline as the office received over 1,000 submissions.

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(); } }); }); }); });