Ukrainian President Volodymyr Zelensky on Tuesday (July 22) signed a bill that opposition lawmakers and watchdog groups say dismantles the independence of Ukraine’s two top anti-corruption agencies. The move has triggered protests in major cities and sparked warnings from the EU.
Here’s what’s in the bill and why it has caused such a storm.
What changes were introduced by the bill?
The law gives sweeping new powers to Ukraine’s prosecutor general. It allows them to interfere with investigations led by the National Anti-Corruption Bureau of Ukraine (NABU) and the Specialised Anti-Corruption Prosecutor’s Office (SAPO).
Under the new rules:
Trending Stories
• The prosecutor general can reassign NABU investigations.
• They can delegate SAPO’s authority to other prosecutors.
• They can also close NABU investigations at the request of defence lawyers.
Critics say this effectively strips both agencies of their independence. NABU warned before the vote, “Ukraine’s anti-corruption infrastructure, built since 2015, will be destroyed. The independence of NABU and SAPO is not about institutions, it’s about the trust of Ukrainian society and internationalpartners.”
How did the law get passed?
The Ukrainian parliament passed the bill on 22 July, with 263 lawmakers voting in favour. Just 13 voted against it, and another 13 abstained. Although it was initially framed as a change to Ukraine’s criminal code under martial law, watchdogs say last-minute amendments were slipped in that target the two anti-corruption bodies.
The bill was moved forward at record speed, it cleared committee, passed the legislature, was signed by the Speaker, and then approved by Zelensky all in one day. Zelensky’s own party, Servant of the People, sponsored the bill. Only one member of the ruling bloc, Anastasiia Radina, spoke against it. “After the amendments that the committee added to this bill today, contrary to the rules, the anti-corruption prosecutor’s office becomes a fiction for budget funds,” Radina said.
How did people in Ukraine respond?
Despite the country being under martial law and a strict night curfew, hundreds of Ukrainians came out to protest across Kyiv, Lviv, Dnipro, and Odesa. War veterans, civil society groups, and ordinary citizens gathered with signs and chants of “Veto! Veto! Veto!” in Kyiv’s central square. It marked the largest public protest since Russia’s full-scale invasion began in February 2022.
The European Commission said it was “seriously concerned” about the new law. Guillaume Mercier, spokesperson for the EU Commission, warned, “These institutions are crucial to Ukraine’s reform agenda and must operate independently… Ukraine’s EU accession will require a strong capacity to combat corruption.”
European Commissioner for Enlargement Marta Kos said, “The dismantling of key safeguards protecting NABU’s independence is a serious step back… Rule of Law remains at the very centre of EU accession negotiations.”
Are anti-corruption agencies being targeted?
A day before the law was signed, several Ukrainian law enforcement agencies, including the Prosecutor General’s Office and the Security Service (SBU), raided the offices of NABU and SAPO. At least 15 employees are under investigation for various reasons. One NABU employee was detained on charges of spying for Russia, while another faces accusations involving drug trafficking and ties to pro-Russian groups. NABU’s director Semen Kryvonos said law enforcement used “excessive physical force” during the raids. Three employees needed medical attention, although they were not detained.
Why does this matter?
The bill strikes at the heart of Ukraine’s anti-corruption reforms, which were introduced after the EuroMaidan Revolution in 2014. These reforms have been key to unlocking Western financial aid and moving Ukraine closer to EU membership. With war still ongoing and Kyiv relying on Western support, weakening anti-corruption institutions could have serious consequences for Ukraine’s future partnerships and credibility.

&imwidth=800&imheight=600&format=webp&quality=medium)
&im=FitAndFill=(700,400))
&im=FitAndFill=(700,400))
)
)
)
)
)
&im=FitAndFill=(700,400))
)
)
)
)
)
)
)
)
&im=FitAndFill=(700,400))
)
&im=FitAndFill=(700,400))
)
)
)
)
)
)
)
&im=FitAndFill=(700,400))
)
)
)
&im=FitAndFill=(700,400))
)
)
)
)
)
)