Hello,
the geometry does change from one egrad call to the next in a geometry optimization. Using the previous solution of the excitation vectors is in general not faster than generating them from scratch (that was a finding during the implementation and later usage), but has the benefit of having a cleaner initial guess which is not biased from the step before.
But you wrote that you are running calculations with small displacements only, and that there is hope to safe a few CPKS iterations. Well, in that case it might work.
So is there a way to let egrad read in the restart files? Yes, there is an undocumented keyword which allows exactly this.
But if I were to write this keyword here in the forum, it would no longer be undocumented... and I really think it could be dangerous to use it mindlessly.
I will write you a personal message, hope that's OK.
Cheers