Theresa May has refused to commit to holding a fresh Brexit referendum even if MPs vote for it, as she made a last-gasp bid to rescue her deal.

The prime minister announced she would allow a Commons vote on the controversy – if MPs give initial approval to the withdrawal agreement bill – but immediately cast doubt on whether a public vote would follow.

“What the House of Commons will be saying is what they want to see in the final bill,” Ms May said, declining to say she would legislate for a Final Say referendum.

Labour MPs immediately protested that the “compromise” proposal fell far short of their demand for a cast-iron commitment on the face of the bill.

“It’s like the PM really does think we are all daft,” tweeted Stella Creasy, a Labour supporter of another referendum.

Another, Peter Kyle, said he wanted a “clean, simple confirmatory public ballot”, adding: “The prime minister promised a strange, complex, Commons process. This is not leadership and not good enough.”

And a third Labour MP, Hilary Benn, warned: “The government will have to commit to support a confirmatory referendum if they want to get the Bill through. Otherwise, all the signs are that it won’t pass.”

It is believed that Ms May proposed a free vote on a second referendum at a stormy cabinet meeting, but was challenged – implying she would whip against it, if the Commons vote takes place.

That looks unlikely as pro-Brexit Tories also lined up to attack what the prime minister called her “new Brexit deal”, as she delivered a speech in central London.

Andrew Percy, who had supported the deal in earlier votes, was among several who announced they were switching sides – pointing to even the “possibility of a second referendum”.

“People were told in the referendum, it was the final say on the matter for a generation – it would be implemented,” he warned.

During the speech, Ms May made clear her opposition to a referendum was undiminished, saying: “I have made my own view clear on this many times. I do not believe this is a route that we should take.”

Downing Street also indicated there would be no requirement in the bill for Remain to be an option on the ballot paper, if a referendum was staged.

Ms May also offered little incentive for Labour MPs to come to her by refusing to hold a vote on a permanent customs union – instead offering only a “temporary” arrangement.

And she ducked questions about her likely resignation if the bill is rejected at the start of June, saying: “That was last week’s news.”