Boris Johnson yesterday threatened to give David Cameron a New Year's Day hangover, warning that the government's immigration cap risks harming the economy.

The Tory Mayor of London also attacked the 50p rate of tax for high earners, which he said would make Britain "uncompetitive".

It is not the first time Mr Johnson's remarks have caused problems for Conservative Central Office.

Earlier this year he joined the criticism of housing benefit cuts, amid claims they would force thousands of the less well-off out of London, saying he would resist "Kosovo-style social cleansing" in the capital.

Although popular with the public, the mayor faces a difficult 18 months in the run up to an election to keep his job in 2012.

During an interview yesterday, Mr Johnson reiterated his warning that businesses were being hurt by the immigration cap.

He said industry bosses had told him they were struggling to find skilled staff and employers were "hacked off" they could not bring talent into the UK.

But he suggested that ministers understood the problem: "There is a risk that the necessity of putting up a public show of rhetoric will do possible damage to London's competitiveness," he said. "I think there is a case for flexibility and I think the government understands that."

Mr Johnson also said that the 50p tax rate "can't go on forever".

He said: "It's no secret that I think, in the long run, a 50p tax rate is not going to be competitive with our major rivals.

"They all have lower top rates of tax now than the UK. It can't go on forever, in my view."

Although it was Labour which introduced the higher rate, which affects people who earn more than £150,000 per year, it has been kept on by the Conservative-Liberal Democrat Coalition.

Tory Chancellor George Osborne has publicly said that he dislikes the higher rate of tax, but has also stated that he does not think he can repeal it at a time when low earners are suffering public spending cuts.