Ever since his election campaign, Emmanuel Macron has been keen to prove he's not afraid of French protesters. Where previous governments have blinked, Mr Macron has stared down the unions, weathered their protests, and pushed through difficult reforms on labour laws, and railway workers' pension rights.
But protests over fuel prices this month are presenting him with a new kind of political challenge. This is a protest with no official leader, no national organisation, not run by any union or political party; a protest that feels distinctly spontaneous, individual and diverse. And that diversity is key - both to its importance, and to its potential weakness.
Last weekend, more than 280,000 people dressed in high-visibility jackets blocked roads across France in protest at rising taxes on diesel and petrol, which the government says are to fund eco-friendly projects and reduce greenhouse gas emissions. A small number of hard-core protesters have continued blocking roads and petrol stations this week, and calls have gone out on social media for a second national demonstration this weekend - urging protesters to converge on the capital. So who are the men and women in the hi-vis vests?
"It's the France of the majority, who work, who are not marginalised, who struggle to make ends meet and often end the month in the red, "explains political author Jérôme Sainte-Marie, who has written a book on democratic changes in France.
That majority of struggling families and workers, many of them from France's rural areas or the run-down suburbs that ring its major cities, crosses political party lines, he says, which makes this protest quite unlike the predictable, highly choreographed marches of France's unions or political groups.
"It's a movement that goes beyond political differences and that's dangerous for Emmanuel Macron," Saint-Marie explains. "As long as the opposition to Macron is split between left and right, his power isn't challenged. The gilets jaunes (yellow vests) are a kind of social reunification of the opposition that goes beyond political divisions."
Michel Pigenet, a social historian at the Pantheon-Sorbonne University in Paris, agrees. "Anti-tax movements are generally a right-wing cause, but the cost of living is a left-wing issue. There's clearly a will - like Macron himself - to generate a movement that is neither left nor right," he says.
He believes that the gilets jaunes, with their unstructured approach, are a new kind of movement for France, not seen since before the Revolution in 1789, and says the movement "poses a serious political question".
There's lively debate here about the true nature of the protests - whether the movement is being steered by hard-right agitators, or hijacked by political interests. But for every one out blocking roads, there seem to be many French citizens supporting them at home. A survey by the polling agency Elabe found that almost three-quarters of French voters approved of the protests, and that more than half of those who voted for Mr Macron support them.
Several of the main opposition parties have publicly backed them, including the centre right Republicains, the far-left leader Jean-Luc Melenchon and his far-right rival Marine Le Pen.
"We don't want anyone using our movement, and we don't want leaders," said Frank Buhler, a prominent member of the gilets jaunes. "We have to start all over again, that's how far we've come. The French Revolution started with flour wars; for us it's fuel taxes."
Most people agree this is about much more than fuel taxes. It's about the economic policies of President Emmanuel Macron in the face of growing frustration from low- and middle-income workers about making ends meet.
Mr Macron has presented himself as a president brought to power on the back of a grassroots movement, who could heal the rift between voters and leaders, and rebuild trust in democracy among those who felt disillusioned and detached from politics.
Since then, his campaign - like his leadership - has been criticised for being too rigid, too hierarchical, too arrogant and aloof. Now, with has approval ratings falling steeply, he's faced with a real grassroots movement, what will his response be?
The government has put forward a package of 500 million euros to support poorer households in meeting their energy costs. And last week, Prime Minister Eduoard Philippe told a radio programme that he understood the protesters' anger, and defended their right to mobilise. But, he said, the fuel taxes and other economic policies would stay.
Perhaps the government is right not to seem panicked. The surprise success of the gilets jaunes last weekend was based on a spontaneity that's hard to sustain; the French daily newspaper, Le Figaro, has already begun profiling its emerging leaders.
And the diversity that until now has proved such an effective unifier of opposition to the president, may ultimately prove to be its undoing.
"There is general agreement right now, but none of us believe the same thing," says protester Frank Buhler. "We all sing the Marseillaise and call for Macron's resignation - those are the two slogans of the movement. When Macron stands down, we will no longer agree, but right now we walk hand-in-hand. The politics will come later."