In the autumn of 1944, Marc Roussillon, a heroic French pilot and Resistance agent, has recovered from the wounds that he sustained when a German officer, Gerhard Hauptmann, shot him. On assignment in Paris for MI5, the British Secret Intelligence Service, he becomes entangled in several violent episodes as he searches for the double agent within the Resistance who has been the catalyst in the deaths of thousands of Allied soldiers and pilots. Gradually, Marc becomes convinced that Hans Mueller is the double agent. Hans is a former Nazi pilot who, having left Germany, has joined the RAF and MI5. At first, Marc plans to urge Hans's girlfriend, Valérie Moreau, to help him expose Hans as the spy and to kill him. Though he has never met Valérie, he is aware that she is a Resistance agent who has fought bravely for the Allies. He wonders whether her love for Hans has blinded her to Hans's treachery.
In his first meeting with her, Marc discovers that Valerie Moreau is actually his estranged wife, Simone. A year earlier, Marc destroyed his marriage to Simone when he forced her to kill Gerhard Hauptmann, the German officer with whom she had fallen in love after he helped her rescue a French pilot from the Nazis. Still working for the Resistance, Simone has disguised herself as the daughter of a Nazi sympathizer whom Resistance agents have assassinated. Determined to separate herself from her father's infamy, the real Valérie had been working courageously as a Resistance agent until she was killed during a bombing of Paris. MI5 then assigned Simone to impersonate Valérie and to discover the identity of the double agent. In her relationship with Hans, she has become Valérie's ghost made visible. Marc's first meeting with Simone does not go well. She refuses to enter his scheme to trap Hans Mueller. Even after Marc and other Resistance people apprehend and kill the double agent and his cohorts, Marc insists that Hans Mueller is also guilty. But Simone believes in Hans's innocence. She also suspects Marc of wanting to find a reason to kill Hans because she loves the German who has joined the Allies. He accuses her of falling in love not with Hans, but with Hans as Gerhard's ghost.
In England, Marc tries to draw his parents into his plot to trap Hans Mueller. He is surprised when they tell him that Hans may be innocent. Brave Resistance fighters, his parents caution him to search his real motive for wanting to prove that Hans is a double agent. Like Simone, they believe that Marc wants to kill Hans because he is a rival for Simone's love. They convince Marc to join them at their Derbyshire home for a week. Simone and Hans will be there. At that time, Marc and they can further test Hans's loyalty.
During the brief holiday from the war, Marc meets Deirdre Sullivan, a lovely Irish girl who has left her home in Galway to become a nurse in war-torn England. Though they are attracted to each other, their trouble-haunted pasts prevent them from rescuing one another. Deirdre cannot let go of the ghost of her husband, who has been killed in the war. Marc refuses to let go of his obsession for Simone and of his memory of their lost happiness, which hovers--ghostly and insistent--about him. Becoming acquainted with Hans, he learns of the tragedies that the German has endured, and he accords him a grudging respect. But he is determined to win back Simone's love. He is also determined to kill Hans Mueller.
In a series of tense and sometimes violent episodes that occur in a Lincolnshire pub, in a Derbyshire forest, and in a park within the Monceau district of Paris, Marc, Simone, and Hans play out the bitter resolution of their triangle.