For a spy story, these are the words that came to my mind
enemy agent - typically you would use this for a known enemy.
secret agent - secret agents you just don't know about - who they work for is a secret.
double agent - this one is usually used when the agent is spying for both sides at the same time. It's most typically applied when someone has been "turned" away from the side they originally worked, and is now secretly working for the other side, while pretending everything is still normal and they are still working for you. This is a very common term in spy stories and will be easily understood by readers
turncoat - typically used for someone who visibly switches sides.
defector - typically used for someone who officially changes sides, declaring their intent in some official manner such as gaining citizenship in the enemy country.
mole - someone working inside your agency, pretending to work for you, but secretly working for the other side. Same as a double agent, but "mole" is used for more drama - there's an insidious factor about a mole, that doesn't exist with a double agent. This would be a good one - it's used a ton on American TV and I've seen it used in the British series "MI-6" as well. This one is so well known, there was a whole game show called "The Mole" where a group of people had to figure out who was secretly working against them.