Uzyskał uprawnienia radcy prawnego. Był zatrudniony w Biurze Studiów i Analiz Sądu Najwyższego. Pracował jako naczelnik wydziału w Departamencie Zastępstwa Procesowego Ministerstwa Skarbu Państwa oraz jako dyrektor Biura Prawnego Urzędu m.st. Warszawy. W 2005 został pełnomocnikiem prezesa Rady Ministrów ds. utworzenia Prokuratorii Generalnej Rzeczypospolitej Polskiej, następnie od 22 marca 2006 do 8 listopada 2012 pełnił funkcję jej pierwszego prezesa. Praktykował m.in. jako of counsel w kancelarii Linklaters, został również arbitrem Sądu Arbitrażowego przy Krajowej Izbie Gospodarczej.
W dniu 13 marca 2026 roku Sejm X kadencji wybrał go na stanowisko sędziego Trybunału KonstytucyjnegoUchwała Sejmu Rzeczypospolitej Polskiej z dnia 13 marca 2026 r. w sprawie wyboru sędziego Trybunału Konstytucyjnego (). Był jednym z sześciorga kandydatów zgłoszonych przez Prezydium Sejmu, którzy tego dnia uzyskali wybór. Do 9 kwietnia 2026 prezydent RP Karol Nawrocki nie odebrał ślubowania od niego oraz 3 pozostałych sędziów. 9 kwietnia 2026 wziął udział w uroczystości zorganizowanej w Sejmie złożenia „ślubowania wobec prezydenta”, w trakcie której przy obecności notariusza odczytał oraz podpisał rotę ślubowania. Następnie została ona przekazana na dziennik podawczy Kancelarii Prezydenta.