Działalność publiczna W 1980 zapisał się do „Solidarności”, należał też do PZPR, z której wystąpił po wprowadzeniu stanu wojennego. Na początku lat 90. pełnił funkcję wiceministra spraw wewnętrznych, został powołany w okresie rządu Tadeusza Mazowieckiego. Był współautorem raportu tzw. komisji Jana Rokity. W latach 1992–1996 był ambasadorem RP na Litwie. W 2002 objął funkcję konsula honorowego Litwy w Krakowie. Został również felietonistą tygodnika „Przegląd”.

W 2007 był współzałożycielem stowarzyszenia Ruch na rzecz Demokracji. W wyborach parlamentarnych w 2007 uzyskał mandat poselski liczbą 24 963 głosów, startując w okręgu krakowskim z pierwszego miejsca na liście Lewicy i Demokratów z rekomendacji Partii Demokratycznej (nie należał do ugrupowania). Od 7 lutego 2008 był członkiem sejmowej komisji śledczej ds. nacisków. Z powodu rezygnacji odwołany 27 czerwca 2008. W Sejmie był członkiem Komisji Administracji i Spraw wewnętrznych oraz Komisji Odpowiedzialności Konstytucyjnej.