The start of President Donald Trump’s rally was still hours away when it became clear his campaign would not keep its promise.

In the days leading up to the Sept. 30 event in Duluth, Minn., local officials had privately pressed the campaign to abide by state public health guidelines aimed at slowing the spread of the novel coronavirus, documents show. In response, the campaign signed an agreement pledging to follow those rules, limiting attendance to 250 people.

On the day of the rally, however, Trump supporters flooded onto the tarmac at Duluth International Airport. They stood shoulder to shoulder, many without masks.

“We have been notified that the 250 person limit has been exceeded,” an airport representative e-mailed a campaign official late that afternoon. “This e-mail serves as our notice of a contract violation and we are requesting you remedy the situation.”

The warning went unheeded — and unanswered.

Held two days before Trump was diagnosed with COVID-19, the rally was attended by more than 2,500 people, airport officials estimated.

The Duluth event shows the dilemma local officials face as Trump turns to his signature rallies in the closing weeks of the campaign: They can enforce local guidelines intended to protect the public, and risk antagonizing the campaign and its supporters, or they can look the other way as the campaign holds massive gatherings at a time when coronavirus cases are surging in many states.

E-mails and other documents obtained by the Washington Post through open-records requests show that Duluth officials insisted on adherence to the rules, and the campaign responded by making commitments it ultimately did not keep. The documents also show that local officials suspected the campaign would violate the agreement, but shied away from enforcing public health orders for fear of provoking a backlash.

“We will not incite an incident by unilaterally taking physical action to close the event,” the airport’s executive director, Tom Werner, wrote to the airport’s appointed board members the morning before the event.

Minnesota public health officials have traced 19 coronavirus cases to a pair of Trump rallies held in the state in September, three of them to the event in Duluth.

A spokesman for the Trump campaign did not respond to a request for comment.

In a statement, the Duluth Airport Authority said it takes state health mandates seriously. “It was made clear to the Trump Campaign, in the lead up to the event, that compliance with the State of Minnesota’s current public health executive orders was an expectation of the DAA,” the statement said.

In the early months of the pandemic, Trump refrained from holding large gatherings. That changed in June, when he hosted an indoor rally in Tulsa against the advice of local public health officials. With the novel coronavirus raging, Trump has now resumed daily campaign rallies. As of Friday, he had held 14 events in the previous 12 days, often defying limits on crowd size and requirements for social distancing — and sometimes mocking those rules.

Airports are the campaign’s venue of choice for these campaign stops. Because airports are often run by local government entities, their public records provide a window into the private negotiations that take place before the events.

In early September, the Reno-Tahoe Airport Authority told one of its tenants it could not hold a planned 5,000-person Trump rally in a hangar leased at Reno-Tahoe International Airport, citing the state’s 50-person crowd limit, according to a letter obtained by The Post.

Airport officials in Reno publicly said at the time that the decision had nothing to do with politics, but the Trump campaign hit back, saying “Democrats are trying to keep President Donald Trump from speaking to voters.” Trump rescheduled at another Nevada airport that agreed to host the event.

In late September, e-mails show, the campaign approached Duluth airport officials about holding a rally there. Local officials in the Democratic stronghold almost immediately expressed concerns.

The region was already beginning to see a spike in coronavirus cases. And Minnesota Gov. Tim Walz had issued an executive order in June limiting outdoor gatherings to 250 people.

The campaign initially told city officials it expected up to 9,000 people, according to a Sept. 25 e-mail the local fire chief, Shawn Krizaj, sent to his deputies. Krizaj wrote that he was trying to work with airport officials and the campaign to ensure the rally complied with the governor’s cap on public gatherings.

The following day, City Council Member Joel Sipress e-mailed the city’s Democratic mayor, Emily Larson. “Whether the event is indoors or outdoors, under the law the attendance must be limited to 250 people,” he wrote.

Larson responded that she was still getting more information about the event but added: “We have been explicit and clear on this with them.”

Sipress, a Democrat, also wrote to two airport authority board members that he believed the airport was “legally obliged” to ensure the campaign obeyed the state’s limit. The Duluth Airport Authority, or DAA, has a seven-member board appointed by the mayor.

As airport officials fielded e-mails and calls, Werner, the airport’s executive director, sought to assure the members of the DAA. He wrote that he would require the campaign to sign a written agreement pledging to follow public health orders.

“That’s all DAA can do,” he said in an e-mail on Sept. 27. “We do not have the resources for enforcement at the event. We will rely on the City’s emergency management and police for strict enforcement.”

The e-mails show that city officials looked to the state to step in and enforce the governor’s order.

Krizaj, the city’s fire chief, spoke to state officials about the rally but was told they were “not going to actively enforce” the 250-person cap and were “washing their hands of it,” according to a Sept. 28 e-mail Werner sent to airport board members.

In an interview with the Post, Krizaj confirmed that officials in the state’s Department of Public Safety said they would not enforce the governor’s order.

“The message was, ‘It was going to be up to local jurisdictions,’ “ he said.

The Minnesota Department of Public Safety said in a statement that it did not have the authority to enforce the governor’s order. A spokesman for the state’s Department of Public Health said it when it has learned about plans for large events it has “worked to make sure the organizers understand both the executive order requirements and the public health guidance.” The agency also has limited authority to enforce the state guidelines at rallies, said spokesman Doug Schultz.

In his e-mail to board members, Werner wrote that the state balked at enforcing the crowd limit partly because of a provision exempting federal workers conducting official business.

“They said, practically we’ll have a hard time proving POTUS is not acting in his official capacity during his visit, even though we know it’s a campaign. … Bottom line, the State will not provide any help here,” Werner wrote.

The following day, Werner and the campaign signed an agreement, a copy of which was released to the Post. It shows the airport was to provide space for the rally, parking, circulation and staging and support facilities for a $20,000 fee. It includes a clause citing the state’s public health emergency and specifying that compliance with the governor’s executive orders is required.

Werner informed the airport’s board members that he had also signed a nondisclosure agreement that would prevent him from discussing details of the agreement with board members or others. “All airports have had to sign them who have seen rallies at their facilities,” he wrote.

Werner declined to comment on the nondisclosure agreement for this story. A clause in the contract he signed prohibited him from disclosing the campaign’s “confidential information” but includes few details about the parameters. There was no separate nondisclosure agreement, according to the DAA’s attorney, Steven Hanke.

The morning of the rally, Werner told the airport’s board that he would reinforce his plea to the campaign to keep the crowds small.

“I will make another appeal to the campaign, this morning, asking for their plan to comply with the 250 person cap on crowds,” he wrote. The records do not show whether the campaign responded.

“If they violate the cap, the security guard will inform DAA senior staff and move on to other duties,” Werner wrote to board members.

Airport personnel would then inform the campaign by e-mail, Werner explained. He also said the airport would later send a formal letter to the campaign, but he said he couldn’t elaborate on that due to the nondisclosure agreement.

“Of course, it is possible things will go just fine,” he wrote. “However, I want to outline the steps in case things go a certain way.”

That afternoon, an airport board member wrote to Werner asking how many people were expected at the rally that night.

Werner said the most recent estimate from the campaign was 1,000. “Perhaps the rain will keep folks home,” he added.

That evening, the crowd filtered in, triggering the contract violation notification from the airport.

Airport officials estimated that between 2,500 and 3,000 people showed up, according to e-mails.

Krizaj told the Post that city officials expected that the campaign would encourage social distancing and masks. “We were kind of under the impression that there would be a little bit more enforcement from campaign staff and volunteers, which we did not see,” he said.

“It’s really hard to stand up to a president who insists on holding an event that puts the health of your community at risk because presidents have a lot of power,” said Sipress, the City Council member.

A little more than 30 hours after the rally, Trump’s diagnosis prompted a flood of media inquiries about the rally and the airport’s decision to host it, records show. Airport officials said nothing about the contract requirement or the violation, only issuing the same statement provided to the Post for this story.

Documents show that the DAA had prepared a public statement before the rally, for possible release afterward, saying: “We are disappointed the Trump campaign did not comply.” That line was ultimately not included in DAA’s statements to the media.

On Oct. 5, Hanke, the attorney for the airport, sent the campaign a formal letter asserting that it had breached the agreement’s 250-person limit. The letter also said the Trump campaign had not paid the airport the $20,000 fee for hosting the event.

Two weeks later, officials won’t say whether that fee has been paid. “That information is covered under our nondisclosure agreement and cannot be released,” a spokeswoman for the airport said in an e-mail.