Bennett was born in Newquay, Cornwall[4] and started his career with Exeter City's youth system.[5] He made his first-team debut for Exeter as a substitute in the 74th minute of a 1–0 home victory over Swindon Town in League One on 29 March 2011.[6]
Bennett scored his first goal on 26 November 2011 in a 3–0 home win over Tranmere Rovers.[7] Bennett signed a new contract, the length of which was undisclosed, with Exeter in April 2012.[8] In July 2014, Exeter manager Paul Tisdale announced that Bennett would succeed Danny Coles as captain.[9]
Notts County
Bennett signed for newly relegated League Two club Notts County on a two-year contract on 27 May 2015.[10] On 8 October 2015, he joined Notts County's divisional rivals Newport County on loan until January 2016.[11] He made his debut for Newport when starting in their 3–0 away defeat against Mansfield Town on 10 October 2015.[12] Bennett scored his first goal for Newport on 8 November 2015 in their 2–2 away draw with Brackley Town in the FA Cup first round.[12] He was recalled by Notts County on 31 December 2015.[13]
On 11 March 2016, Bennett joined Notts County's League Two rivals York City on loan until the end of the 2015–16 season.[14] He debuted the following day when starting York's 1–1 home draw with Barnet.[12]
Newport County
Bennett's contract at Notts County was cancelled by mutual consent on 2 June 2016,[15] and the same day he rejoined Newport County on a two-year contract.[16] Bennett was part of the Newport squad that completed the 'Great Escape' with a 2–1 victory at home to Notts County on the final day of the 2016–17 season, which ensured Newport's survival in League Two.[17][18] Bennett signed a new two-year contract with Newport in April 2018.[19] He was part of the team that reached the League Two play-off final at Wembley Stadium on 25 May 2019. Newport lost to Tranmere Rovers 1–0 after a goal in the 119th minute.[20]
In June 2020 Bennett was released by Newport County at the end of the 2019–20 season due to the club's Coronavirus pandemic financial concerns.[21] Bizarrely, in July 2020 Bennett was selected as Newport's Player of the Year for the 2019-20 season.[22] On 4 August 2020 Bennett rejoined Newport on a one-year contract.[23] Bennett played for Newport in the League Two play-off final at Wembley Stadium on 31 May 2021 which Newport lost to Morecambe, 1–0 after a 107th minute penalty.[24] In June 2021 his Newport contract was extended for a further two years.[25] In June 2023 Bennett's Newport contract was extended for a further year.[26]
On 4 June 2024, the club confirmed that Bennett would be departing the club on 30 June 2024 upon the expiration of his contract.[27]
Cheltenham Town
Bennett signed for newly relegated League Two club Cheltenham Town on 14 June 2024, linking up with his former manager at Newport, Michael Flynn.[28]