W 1990 przystąpił do Socjaldemokracji Rzeczypospolitej Polskiej. Od 1993 do 1996 był zastępcą przewodniczącego Trybunału Stanu, następnie przedstawicielem prezydenta w Komisji Konstytucyjnej Zgromadzenia Narodowego. W latach 1997–2000 pełnił funkcję sekretarza stanu w Kancelarii Prezydenta RP, od 1998 do 2000 był p.o. szefa KPRP. W 2000 kierował kampanią wyborczą ubiegającego się o reelekcję Aleksandra Kwaśniewskiego. Od 2000 zasiadał w Radzie Bezpieczeństwa Narodowego.
W 1999 należał do grona założycieli partii Sojusz Lewicy Demokratycznej, został także wybrany do zarządu krajowego. W wyborach w 2001 po raz pierwszy uzyskał mandat poselski z okręgu warszawskiego. Objął funkcję przewodniczącego Komisji Ustawodawczej. Przewodniczył także Polsko-Niemieckiej Grupie Parlamentarnej, a w 2003 był krótko członkiem komisji śledczej do zbadania tzw. afery Rywina (zastąpiła go w komisji Anita Błochowiak).
Był obserwatorem w Parlamencie Europejskim V kadencji, a 1 maja 2004 formalnie wykonywał mandat eurodeputowanego. Następnego dnia został powołany na stanowisko ministra spraw wewnętrznych i administracji w rządzie Marka Belki. W maju 2005 podał się do dymisji m.in. w związku z informacjami prasowymi na temat rzekomych powiązań oficerów Komendy Głównej Policji z mafią.