본관은 광산(光山). 자는 양숙(養叔). 할아버지는 예조판서 김진규(金鎭圭)이고, 아버지는 영의정 김양택(金陽澤)이다.
1769년(영조 45) 정시 문과에 병과로 급제, 이듬해 교리가 되고, 1771년 수찬으로 소론 최석항(崔錫恒) 등의 관직을 회복시킨 일이 부당하다고 주장한 조영순(趙榮順)을 변호하였다가 의흥(義興)에 유배되었다. 곧 풀려나 숙종비 인경왕후(仁敬王后)의 지친(至親)으로 첨지중추부사에 특제(特除)되었다.
1775년에 대사간, 1776년 부제학과 강원도관찰사를 거쳐 1777년(정조 1) 대사성 · 대사간 · 이조참의 등을 역임하고, 1779년 좌부승지가 되어 시폐를 논하고 장문의 「시무칠조(時務七條)」를 올려 정조로부터 성찰하겠다는 회답을 받았다.
이듬해 대사성 · 대사헌 · 동지경연사(同知經筵事) 등을 역임하고, 1781년 이조참판이 되었으나, 제주목사를 천거한 일이 잘못되어 파직당하였다가 곧 복직되었으나, 1784년 윤득부(尹得孚)의 유배와 관련되어 다시 파직당하였다.
그해 영희전고유제(永禧殿告由祭)의 헌관으로 분향 후 정조의 실덕과 사림을 장살(杖殺)할 것 등을 내용으로 한 쪽지를 예방승지(禮房承旨) 이재학(李在學)에게 주었는데, 이 사실이 탄로나 추국된 후 흉칙한 대역부도죄인으로 주살당하였다.
죽은 뒤에 가산이 적몰되고, 파가저택(破家瀦宅: 죄인의 집을 헐어버리고 그 자리에 못을 만듦)되었으며, 자녀 · 처 · 숙질 등은 원도(遠道)의 노비가 되었다.