C# (.NET Core), 58 57 bytes
s=>{int i=1;while(s[i]-s[0]<++i);return(char)(s[i-1]-1);} Previous 58-byte solution:
s=>{for(int i=1;;i++)if(s[i]-s[0]>i)return(char)(s[i]-1);} The following algorithm must add using System.Linq; to the byte count and therefore is longer, but I quite liked it (52+18 bytes):
s=>{int i=0;return(char)(s.First(c=>c-s[0]>i++)-1);} And you also have a one-liner (45+18)-byte solution:
s=>(char)(s.Where((c,i)=>c-s[0]>i).First()-1)