W latach 1972–1980 należał do Polskiej Zjednoczonej Partii Robotniczej, wstąpił następnie do „Solidarności”. Współpracował z niezależnym wydawnictwem Krąg, a w latach 1982–1985 był jego faktycznym szefem. W 1986 zasiadł w radzie programowej rocznika Polin. A Journal of Polish-Jewish Studies. Od 1987 do 1992 był członkiem zespołu miesięcznika „Res Publica”, a następnie „Res Publica Nowa” (od 1993). Wchodzi w skład Rady Naukowej Polskiego Słownika Biograficznego oraz rady Muzeum Historii Polski. Należy do Stowarzyszenia Wolnego Słowa.

W 2007 z rekomendacji posłów Prawa i Sprawiedliwości został powołany w skład Kolegium Instytutu Pamięci Narodowej II kadencji, obejmując następnie stanowisko jego przewodniczącego, które pełnił do kwietnia 2010. W 2011 został wybrany do nowo powołanej Rady IPN; organ ten zniesiono nowelizacją ustawy o IPN w 2016.

Został pracownikiem Wydziału Historycznego Akademii Humanistycznej im. Aleksandra Gieysztora w Pułtusku.