As a young boy Magnus Pym sees his father Rick (Ray McAnally) imprisoned for embezzlement and his mother Dorothy (Caroline John) hospitalised by the stress. Magnus fakes a fit in order to escape the abusive uncle and alcoholic aunt with whom he has been sent to live. He is rescued from hospital by his recently released father who subsequently takes him along on the con of an elderly lady. Magnus is sent to boarding school after his father is conscripted where staff and students disapprove of the flashy "business man". Rick returns from the war a wealthy man and involves Magnus in a plan to defraud the bomb damage compensation fund. One night Magnus is hazed by a group of boys led by his "friend" Sefton Boyd and in revenge he tags the boy's initials on the wall of the staff toilet.
Magnus (Benedict Taylor) is called in to help his father after the plan to defraud the bomb damage compensation fund goes awry. Baroness Webber has asked Rick to help her recover a treasure trove secreted by her late husband before the war and Magnus is sent to accompany her. Upon arrival in Switzerland the Baroness runs up a large bill, absconds with all the money, and leaves Magnus down and out in Bern. Magnus eventually manages to secure a scholarship to study law at the university in Bern. He befriends a Silesian émigré poet called Axel, who calls him "Sir Magnus". British intelligence officer Jack Brotherhood (Alan Howard) recruits Magnus to inform on a left-wing student group called the Cosmo Club. Magnus steals the club's membership list and Axel is revealed to be a secret member. Jack persuades Magnus to betray his friend to the Swiss authorities.
Magnus (Peter Egan) is called back from his studies at Oxford University to assist in his father's election campaign. Peggy Wentworth (Frances Tomelty) whose late husband was conned by Rick approaches him. Magnus breaks into his father's files and sends Rick's prison records to Peggy. Confronted at a public meeting Rick brushes off his past misdoings as youthful indiscretions. Aware of his son's betrayal he forgives him none-the-less. However, his hopes of political office are destroyed by the incident. Magnus is recruited into the army and posted as an intelligence officer to Graz. Sabina his translator/mistress puts him in touch with a potential defector who turns out to be Axel. Axel hands over apparently important Soviet secret files on Magnus's guarantee of anonymity, but later when under suspicion requires Magnus to hand over secret British files in return.
Rick crashes his son's wedding to Belinda and offers them the gift of a new car, which is immediately impounded. Recruited by the Foreign Office, Magnus is sent to Prague where after making a pick-up from a dead-letter-drop he is arrested by Axel, blackmailed into exchanging further secrets, and reintroduced to Sabine who joins his network of planted agents. Abandoned by his long neglected wife and reposted to Berlin, Magnus begins to court Jack's girlfriend Mary. Late one night he is summoned to police headquarters where he discovers his father is being held in the cells for yet another bungled con job. Axel encourages Magnus into marrying Mary in the belief that the girl may help them gain access to their eventual target, the Americans.
Magnus is now married to Mary with a son called Tom and on his long awaited posting to Washington. He is still passing secrets but Axel is talking of retirement as things heat up. A committee of American agents headed by Harry Wexler and guided by Magnus's "friend" Grant Laderer (Garrick Hagon) have noticed some curiosities in the computer analysis of Magnus and his Czechoslovakian networks. Celebrating Christmas with his family, Magnus is called out to a bar where he meets his now destitute father. The committee comes to London to put their suspicions to senior British intelligence officers but Jack dismisses it all as a Czechoslovakian attempt to frame Magnus. Recalled to London and haunted by his past, Magnus, under a false name, takes secret lodgings with Miss Dubber (Peggy Ashcroft) in his old childhood neighbourhood in Devon.
While on a family holiday to Corfu, Tom (Graham McGrath) witnesses a meeting between his father and Axel. Axel tries to convince Magnus to retire or even defect but the double agent refuses. Jack recalls Magnus to Vienna where he learns of his father's death. Magnus flies to London where he arranges the funeral and arranges for the collection of his father's files. Mary calls Jack when Magnus fails to return to Vienna. Magnus visits Sefton Boyd (Ian McNeice) and apologises for his first betrayal back at boarding school. Jack goes to Vienna in search of Magnus and interrogates Mary. Magnus retires to his secret lodgings in Devon where he enquires into local comings and goings. Jack searches Magnus's home uncovering references to someone codenamed Poppy and begins to suspect Magnus of betrayal.
Jack continues to interrogate Mary to learn more of the mysterious Poppy. Kate admits to Jack that Magnus got her to remove references to Sabine from his personal file. Recovering the doctored info Jack learns of Magnus's mysterious contact in Graz. Axel passes a message to Mary offering his assistance in tracking the missing Magnus down. Members of Magnus's Czechoslovakian networks start to go silent. Jack realises Prague is rolling up the fake network and the extent of Magnus's betrayal is finally revealed. With both sides now racing to find Magnus, Mary meets with Axel who gives her a clue as to where he is hiding. Jack and Mary drive to Devon where a police siege of Miss Dubber's lodging house ends with a single gunshot.