Thirty-seven-year-old Facebook engineer Behdad Esfahbod has made the same wintertime trip every year since 2015.
Yet this past January, the 37-year-old programming whiz's visit to Iran to see his family took a wildly different turn.
Within days of his arrival, the Iranian-Canadian dual national and graduate of Tehran's top Sharif University had been thrown in jail and was being pressured by Iranian security forces to become an informant.
Esfahbod said that on January 15 he was approached on the street in the Iranian capital by four plainclothes agents. The men showed him a judiciary warrant for his arrest on charges of acting against the clerical establishment's security and working with the country's enemies.
Esfahbod froze when he saw the name of the feared intelligence unit of the Islamic Revolutionary Guards Corps (IRGC) as the plaintiff on the warrant. That unit has been behind the arrests of scores of activists, intellectuals, environmentalists, dual nationals, and others, some of whom have been sentenced to lengthy jail terms on what many dismiss as trumped-up charges.
He said he felt there was no point in resisting. "I thought, 'I will never leave this tunnel' and my life was over," he said.
Contacts Stripped
The agents took him to a ward of the notorious Evin prison controlled by the IRGC where he was held in solitary confinement with no contact with the outside world for a week.
His captors confiscated all of his devices and downloaded his private information and contacts from all his social-media accounts and communications applications, like Telegram.
He said he was subjected to daily interrogation sessions and asked mainly about his contacts with groups that provide anti-filtering tools to help Iranians bypass the country's strict Internet censorship.
Esfahbod, a renowned software engineer who used to work for Google, believes photos he posted of himself next to activists at the 2016 RightsCon human rights conference in San Francisco put him on the radar of the IRGC's intelligence branch.
"I had posted a photo on social media with several political activists who are seen by the Islamic republic as opposed to the establishment, and the sensitivities started there," he said.
After a week, he said, his interrogators let him go only after he agreed to become an informant. "Stay friends with your [contacts] and let us know what they're up to," he said he was told.
Not Going Away
He left Iran a few days later. Esfahbod said the experience left him paranoid and traumatized for months. He quit his job at Facebook and moved in with his family in Canada. "My life was turned upside-down, and I wasn't able to do my job anymore," Esfahbod said.
In mid-June, the IRGC contacted him on Instagram. "I'm a friend of your cousin in Tehran. You were our guest in Darakeh" -- a neighborhood in northern Tehran -- "and we had soltani," the message said, referring to a popular Iranian dish that includes lamb and chicken kebab.
Esfahbod ignored it. He said he never intended to collaborate with the IRGC. He just wanted to escape their clutches. "I agreed to that deal under coercion because I knew I needed to get out of that country alive in order to have a chance to survive and tell my story. Also to reunite with my partner," Esfahbod said.
The IRGC went on to message him on Whatsapp, Telegram, and Signal. He kept ignoring them. They even contacted his sister, he said. She told them that she had passed on their messages but that she didn't have any control over her brother's activities.
Meanwhile, Esfahbod was getting ready to publicize his ordeal and expose "his professional abusers."
On August 17, he posted his account on Medium, where he detailed what he had been through and shared a screen grab of the message he said the IRGC sent him on Instagram.
He later also spoke to Persian-language media based outside the country, including RFE/RL's Radio Farda and Netherlands-based Radio Zamaneh.
He said he never expected to become a victim of Iran's intelligence services. "I always thought, 'I'm not politically active and if they arrest me I will explain it to them and they will let me go,'" he told RFE/RL's Radio Farda on August 18.
What's Next?
Esfahbod's plight echoes other accounts of the repressive methods used by Iran's intelligence bodies to pressure citizens -- including Iranians living abroad -- with little or no accountability.
"While they aim to scare people, to paralyze activists, to chill the populace, this story tells you how they are frightened of cyberspaces and [the] resentment of brave Iranian youth who fight the regime's censorship," Saeid Golkar, an assistant political-science professor at the University of Tennessee at Chattanooga and a senior fellow on Iran policy at the Chicago Council on Global Affairs, told RFE/RL.
"The cycle of arresting people, putting them under pressure, getting their username and passwords, using their information against them and others, and based on that information arresting others. And the cycle goes on. Some collaborate, others not -- like Behdad [Esfahbod]," Golkar added.
For his part, Esfahbod said he didn't know how the IRGC might react to his claims and his public refusal to collaborate. "I posted bail with a two-bedroom apartment I own in Tehran that is my sister's family residence. That I have written off," he wrote earlier this week.
"But what inhumane thing they will do to my friends & family I don't know," he added.