Thomas was elected to the Stafford CountyBoard of Supervisors for the George Washington District in 2011, defeating Democrat Charles V. Latimer by a margin of 60%-39%. He won re-election unopposed in 2015. In March 2017, he announced his candidacy for the 28th district seat in the Virginia House of Delegates in the race to replace Speaker Bill Howell, who was retiring. Howell endorsed Thomas in the Republican primary. Thomas was opposed in the Republican primary by one current and one former Stafford County Board of Supervisors member; Thomas won the primary with 49% of the vote. In the general election, Thomas was opposed by Democrat Joshua G. Cole. On election night on November 7, 2017, unofficial election results showed Thomas had won the seat by a margin of 104 votes. Post-election canvassing shrunk the lead to 86 votes as of November 9. Cole's campaign manager said they would likely seek a recount. Cole's campaign and the Virginia House Democratic Caucus requested that the Stafford County Electoral Board count 55 absentee ballots that were not received by the electoral board until the morning after the deadline, but the board voted to disqualify the ballots, though they counted 40 of 50 provisional ballots. On November 14, the Stafford County Electoral Board certified the results, showing Thomas had won by 82 votes. The same day, the Cole campaign stated it had filed a lawsuit demanding that the ballots be counted, and additional challenges are possible. On November 17, a federal judge dismissed Cole's lawsuit demanding the 55 absentee ballots be counted. On November 20, the state board of elections said at least 83 voters from the 28th district were incorrectly given ballots for the 88th district, and decided to delay certifying the results of the 28th district race, potentially allowing a court to step in. The following day, attorneys for House Republicans sent a letter threatening to sue the state board of elections over the delay, saying the appropriate course of action would be to certify the results to allow for a recount. The board found further "irregularities", saying the number of voters who incorrectly cast ballots in the 28th and 88th district races was at least 147, opening the possibility that Cole could contest the election and ask the House of Delegates to order a new election. On November 27, the state board of elections finally certified the results, giving Thomas the victory, but on November 29, the Cole campaign filed for a recount. On December 7, attorneys for House Democrats petitioned a federal judge to order a new election due to the issues with the 147 voters. The recount began on December 21, and found that Thomas won by a margin of 73 votes. On January 5, a federal judge denied a request from Democrats to prevent Thomas from taking office while they made their case for calling a new election. The Democrats appealed that ruling to the Fourth Circuit Court of Appeals, but on January 10 a three judge panel unanimously denied the Democrats' appeal, clearing the way for Thomas to be sworn in on the first day of the General Assembly session. In June 2019, after one term, Thomas lost the Republican nomination to former Stafford County Supervisor Paul Milde. Milde, who had unsuccessfully challenged Thomas in the 2017 primary, won 2,974 to 2,831.