본관은 경주(慶州). 자는 경일(景日). 김두광(金斗光)의 증손으로, 할아버지는 김운경(金運慶)이고, 아버지는 영조의 장인인 김한구(金漢耉)의 사촌 동생 김한록(金漢祿)이며, 어머니는 서옥업(徐玉業)의 딸이다.
1765년 식년 문과에 병과로 주1 정언 · 홍문관교리를 지냈다. 1772년에 청의(淸議)와 명분을 강조하는 집단을 탕평에 대한 반동으로 지목해 유배시킨 청명류사건(淸名流事件)이 일어나자, 이를 홍봉한(洪鳳漢) 일파의 사주로 보고 홍씨의 척신 정치 제거가 곧 의리라는 소를 올렸다. 이는 아버지 김한록과 의논한 것이었고, 김구주(金龜柱)도 가세했기에 영조의 노여움을 사 함경도 갑산에 유배되었다.
정조가 즉위하자 이 소는 당시 왕세손인 정조를 해치려는 음모로 비판되었고, 세칭 시벽당쟁(時僻黨爭)의 원인이 되었다. 1793년(정조 17)에 다시 서용되어 용궁현감이 되었으나 그 이상 크게 쓰이지 못하였다.
1800년 6월 정조가 죽은 뒤 정순대비가 수렴청정하자, 이조참판 · 이조판서 · 광주유수를 거쳐 2년 만인 1802년에 우의정으로 주2 이때 심환지(沈煥之) · 정일환(鄭日煥) · 김달순(金達淳) 등과 신유사옥을 일으켰다. 또한 권유(權裕)로 하여금 김조순(金祖淳)을 공격해 순조와 순원왕후의 국혼을 방해하도록 유도하였다.
1804년에 정순대비가 다시 수렴청정을 하려고 하자 이를 반대하다가 삭직되었다. 그 후 왕대비가 죽은 뒤 1806년에 사당(私黨)을 위해 정조의 뜻을 배신한 죄 및 삼간택(三揀擇)을 방해한 권유를 방조한 죄목으로 탄핵되어, 함경도 경흥으로 유배가는 도중 이원에서 죽었다. 뒤에 신원되었으며 시호는 주3