W latach 1991–2001 przez trzy kadencje z ramienia UD i UW sprawował mandat poselski. W Sejmie był m.in. wiceprzewodniczącym Komisji Administracji i Spraw Wewnętrznych oraz członkiem Komisji Spraw Zagranicznych. W 2001 bez powodzenia ubiegał się o reelekcję – UW nie przekroczyła progu wyborczego. W latach 2002–2003 był współpracownikiem Organizacji Bezpieczeństwa i Współpracy w Europie, był również członkiem misji OBWE na Bałkanach.
W 2004 został wybrany na stanowisko sekretarza generalnego Unii Wolności, w 2005 przystąpił do Partii Demokratycznej – demokraci.pl. W następnym roku wycofał się z działalności w PD, nie popierając decyzji o wejściu w skład koalicji Lewica i Demokraci. Został członkiem rady programowej Forum Liberalnego. W 2009 wstąpił do Stronnictwa Demokratycznego, został członkiem zarządu głównego tej partii (a 20 kwietnia 2013 także wiceprzewodniczącym). W wyborach w 2010 ubiegał się o mandat radnego województwa małopolskiego z listy Wspólnoty Małopolskiej Marka Nawary. 6 grudnia 2012 został wiceprzewodniczącym Europejskiej Partii Demokratycznej, której członkiem jest SD (pełnił tę funkcję do 13 października 2023).