91³Ô¹ÏÍø

Watch CBS News

Mediation between Fulton County and U.S. government over 2020 election records fails, judge says

A federal judge says a mediation between Fulton County and the U.S. government over the FBI's seizure of hundreds of boxes of ballots and other records from the county's election hub has been unsuccessful.

In a ruling last month, U.S. District Judge J.P. Boulee said he would like Fulton County and the federal government to mediate the dispute instead of going to court.

Boulee gave the two parties a deadline to agree on a mediator and come to the table, but with the deadline approaching, officials say neither side was ceding any ground.

"The Court understands that mediation has been unsuccessful. Consequently, the Court is now taking the Motion to Vacate Hearing and to Quash Subpoena under advisement," the judge wrote on Monday.

Boulee is now ordering both sides to file new briefs specifically about the federal government's attempt to quash a subpoena requiring an FBI agent to testify at a future hearing. The judge has given the U.S. government a deadline of March 18, with Fulton County's deadline two days later.

If the judge decides to deny the federal government's request not to have a hearing, it will proceed on March 27 at 9 a.m. 

Georgia Elections Investigation
An FBI press office person approaches the Fulton County Election Hub and Operation Center, Wednesday, Jan. 28, 2026, in Union City, Ga. (Arvin Temka/Atlanta Journal-Constitution via AP) Arvin Temkar / AP

Fulton County's legal battle over seized 2020 election records

The case deals with Fulton County's motion demanding the FBI return its voting records, which the county claimed were "improperly seized."

FBI agents arrived at the elections hub in late January with a search warrant seeking documents related to the 2020 election in Fulton County, including: all ballots, tabulator tapes from the scanners that tally the votes, electronic ballot images created when the ballots were counted and then recounted, and all voter rolls. 

According to the affidavit, the search came as part of an ongoing "FBI criminal investigation into whether any of the improprieties" alleged around the county's handling of the 2020 election "were intentional acts that violated federal criminal laws." The investigation was initiated by a referral from attorney Kurt Olsen, who now serves as President Trump's "director of election security and integrity," overseeing the attempt to investigate Mr. Trump's loss.

The document lists multiple possible "deficiencies or defects" in the Fulton County vote count, including the county's admission that it does not have scanned images of all the ballots counted during the original count or the recount. Fulton County has also confirmed that some ballots were scanned multiple times during the recount, but has argued that it was simply human error and not an attempt to change the election results.

Investigations into complaints about Fulton County's elections by the secretary of state's office, an independent monitor, and a performance review by the state elections board found that the county had "sloppy processes" and disorganization, but no evidence of any fraud or illegal actions that would have affected the election result.

The Associated Press and CBS News contributed to this report.

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