Vladimir Putin said that surveillance whistleblower Edward Snowden was in the transit zone at Moscow Sheremetyevo airport and would not be handed over to the United States as he had not committed any crimes in Russia.
The Russian president contradicted earlier claims by foreign minister Sergei Lavrov that Snowden had not even crossed the Russian border. Snowden had been believed to have gone to Moscow from Hong Kong at the weekend en route for Cuba and possibly Ecuador.
Putin dismissed US accusations that Russia violated US laws by failing to extradite Snowden as "nonsense". The whistleblower, he said, was a free man.
"The sooner he chooses a destination the better," Putin added.
He said that Russia security agencies "never worked with [Edward Snowden] and are not working with him today".
Snowden, 30, is charged with theft of US government property, unauthorised communication of national defence information and wilful communication of classified communications intelligence.
He revealed to the Guardian and the Washington Post details of a secret government surveillance programme called Prism which he obtained while working as a contractor for the National Security Agency (NSA).