The 28-year-old former Derby and Southampton player featured eight times on loan at St James Park this season and had expressed his desire
The club has not disclosed how long a contract Holmes has signed.
"I'm delighted that Lee has chosen to stay with Exeter City," Exeter manager Paul Tisdale said.
"He is a very talented footballer and he ingratiated himself into our dressing room very quickly during his loan spell here.
"We saw plenty of evidence of his ability during his short time with us, so the prospect of working with him in pre-season and over the next year is extremely exciting."
Winger Lee Holmes has agreed to join Exeter City when his contract at Preston North End expires this summer.