A says he is not the knight, B says he is not a spy, and C says he is not the knave. Who is who?
To start, A must be:
A spy. If he were a knight, he'd be lying, so not a knight. If A were a knave, he'd be telling the truth, so not a knave.
Then, B must
Be a knight. If he were a knave, he'd be telling the truth, so he can't be a knave. Spy is already taken.
The means that C must
Be the knave, since the other two roles are taken.
DqwertyC has covered the solution where there's one of each role, so in case there can be more than one of each role...
They're all spies.
Even the title and description is a lie/truth mix said by a spy. It's spies all around you.
This is just a part of their spy shenanigans to spy-distract you while they do their spy business
A different approach:
Who is the Knight?
The Knight can't be A, because he would be lying, and the knight never lies. So the Knight can be B or C.
Who is the Knave?
The Knave can't be A, because he would be telling the truth, and the knave always lies. The Knave can't be B, for the same reason. So the Knave is C.
Who is the Spy?
The Knave is C, so the Knight must be B. Therefore, the Spy must be A.
Another take on this, starting with the knave (and assuming one of each):
The knave always lies.
This means that he can only say that he is a knight or spy, or that he is not a knave. Only C fits.
The knight always tells the truth.
This means that he can only say that he is a knight, or that he is not a knave or spy. Since C is taken, only B fits.
Thus, the spy is
Dquerty seems to have it covered, but another way to look at it:
The Knave can only say he's not the Knave, because saying he's not the Spy or the Knight would be true, so C is the Knave. Then B has to be the Knight, because saying he's not the Knight would be a lie. Meaning A must be the Spy.