본관은 안동(安東). 자는 치응(稚膺). 문충공 김상용(金尙容)의 5대손으로, 할아버지는 김시겸(金時謙)이고, 아버지는 김경행(金景行)이며, 어머니는 이정상(李鼎相)의 딸이다.
1759년(영조 35) 식년 문과에 을과로 급제하여 주로 사헌부 · 사간원 · 홍문관의 청요직(淸要職)을 두루 거쳤다.
1769년 부수찬(副修撰)으로 재임시 박세채(朴世采)의 문묘(文廟) 출향(黜享: 신위를 모셔놓고 제향을 지내던 것을 없애버림)을 상소한 중학유생(中學儒生) 이정렬(李鼎烈)을 힘써 옹호한 것이 영조의 노여움을 사서 서인(庶人)으로 깎이고 귀양을 갔다.
곧 이어 풀려났으며 정조가 즉위하자 진하 겸 사은사(進賀兼謝恩使)의 서장관으로 발탁되었으나 병으로 나가지 못하였다. 그 뒤 김해부사로 있을 때 흉년이 들자 백성의 구휼에 힘썼으며, 경직에 복귀한 뒤 대사성 · 대사간을 지냈다.
1792년(정조 16) 동지의금부사로 죄인 홍명호(洪明浩) 등을 미온적으로 다스린다고 고신(告身: 벼슬한 사람의 관직사령장)을 추탈당하기도 하였으나 곧 회복되어 대사헌에 이르렀다.