W latach 1977–1980 zatrudniony w Biurze Projektowo-Badawczym Budownictwa Przemysłowego System w Warszawie. W latach 1975–1977 pełnił funkcję wiceprzewodniczącego rady oddziałowej ZNP na UW.

W 1978 podpisał deklarację założycielską Towarzystwa Kursów Naukowych i był jego sekretarzem odpowiedzialnym za bieżącą działalność. W sierpniu 1980 był współautorem apelu 64 intelektualistów o negocjacje i porozumienie między władzą a strajkującymi, od września 1980 był członkiem „Solidarności”, kierował gabinetem Lecha Wałęsy. W stanie wojennym został internowany w ośrodkach odosobnienia w Warszawie-Białołęce, Jaworzu i Darłówku. Został zwolniony 7 grudnia 1982. W latach 1983–1987 współpracował z Lechem Wałęsą i środowiskiem ekspertów „Solidarności”. W 1985 został współautorem opracowania Raport. Polska 5 lat po Sierpniu. W latach 1986–1988 współzałożycielem i redaktorem pisma „Dwadzieścia Jeden”.

Działalność w III RP W latach 1989–1990 był członkiem Komitetu Obywatelskiego przy Lechu Wałęsie oraz uczestnikiem obrad Okrągłego Stołu. Od 1989 do 1993 był senatorem I i II kadencji związanym z Obywatelskim Klubem Parlamentarnym i ROAD, potem z Unią Demokratyczną. W latach 1993–1994 pełnił funkcję wiceprzewodniczącego Unii Demokratycznej. Z ramienia UD i następnie Unii Wolności zasiadał w Sejmie II kadencji.