The prime minister has insisted he is sticking to his plan to get net migration below 100,000 by the general election, but admitted he could not give a cast iron guarantee it would happen.
But he refused to be drawn into claims that figures due on Wednesday would show that 30,000 people had migrated to Britain from Bulgaria and Romania since controls were dropped in January.
David Cameron was giving evidence during one of his routine appearances before the liaison committee of MPs, which includes the chairs of all Commons committees.
Quizzed over suggestions the government was missing its targets of net migration, he rejected a call from Tory Mark Field for it to be abandoned.
"My commitment is to do everything I can to make progress towards that target and that's what we should do," he said. The target was still achievable, he claimed.
Asked by Labour's Keith Vaz about figures expected to show that 30,000 people had arrived in the UK from Romania and Bulgaria, Cameron said he would not comment. But he pointed out that a large number of migrants actually came from countries such as Spain and Italy, rather than eastern Europe.
He also defended the government's policy of stripping some terror suspects of citizenship against claims it was equivalent to policies adopted by regimes in Zimbabwe, Russia and Serbia.
Challenged by Hywel Francis, the chair of the joint committee on human rights, over the law which can, in effect, make some suspects stateless by depriving them of British citizenship, he said he was pleased the measure had gone through parliament
Francis said the new law was the same as those used in Zimbabwe, Russia and Serbia and he asked if all those going to Syria faced the prospect of being rendered stateless.
Cameron said he was determined to keep the country safe from those who meant "to visit on us extreme harm", he said, even if that meant stripping them of their citizenship and stopping them returning to the UK.