본관은 연안(延安). 자는 국보(國寶), 호는 해석(海石). 김호(金澔)의 증손으로, 할아버지는 김상석(金相奭)이고, 아버지는 영의정 김익(金熤)이며, 어머니는 윤심재(尹心宰)의 딸이다.
1773년(영조 49)에 사마시에 합격해 진사가 되고, 이듬해 정시 문과에 병과로 급제하였다. 1780년(정조 4)에 검열(檢閱)이 되어 『이문원강의(摛文院講義)』를 편집했고, 규장각직각(奎章閣直閣)에 임명되었다. 이어 초계문신(抄啓文臣)에 뽑혔고, 검상(檢詳)·이조참의·대사성 등을 역임하였다.
1786년에 원춘도관찰사에 임명되어 울릉도에 잠입, 고기와 향나무 채취를 금했고, 영동 지방의 무사들을 삼진(三鎭)에 속하게 한 후 봄·가을로 나눈 시험일을 한날로 하도록 건의해 시행하도록 하였다.
1789년에는 홍문관제학(弘文館提學)·대사헌·규장각직제학(奎章閣提學) 등을 역임하였다. 이듬해 영의정인 아버지가 사망해 일시 관직을 떠났다가 1794년에 규장각직제학으로 재임명되었고, 형조판서·이조판서·예조판서·한성부판윤·병조판서·평안도관찰사 등을 역임하였다. 1796년 이조판서에 임명되었고, 이듬해 대사헌을 겸임하였다.
1799년에 병으로 이조판서를 사임하고, 좌참찬·홍문관제학·한성부판윤 등을 거쳐 그 해 진하 겸 사은사(進賀兼謝恩使)로 청나라에 다녀왔다.
이듬해 규장각제학에 임명되었다. 1800년(순조 즉위년) 정조가 승하하자 『건릉표석음기(健陵表石陰記)』를 지었고, 숭록대부(崇祿大夫)로 품계가 올랐다. 또한 지실록사(知實錄事)로 임명되어 『정조실록(正祖實錄)』 편찬에 참여하였다.
1802년에 수원부유수와 우참찬에 임명되었고, 1804년에 홍문관제학, 정순왕후(貞純王后)의 애책문제술관(哀冊文製述官)을 역임하였다. 1805년에 우의정에 임명되었으나 부임을 거절해 황해도 재령에 부처(付處: 자신이 원하는 일정한 곳에서 생활하는 유배형의 하나)되었고, 이듬해 석방되어 영중추부사에 임명되었다.
1807년 우의정에 다시 임명되어 당시 공정성이 없는 과거의 폐단을 지적, 시정을 요구하였다. 1808년 좌의정이 되었고, 이듬해 영의정이 되어 영남 지방의 대동미 3분의 1과 호남 지방의 대동미 4분의 1을 아울러 줄이도록 조처하였다.
순조 묘정에 배향되었다. 저서로는 『해석집(海石集)』·『해석일기(海石日記)』가 있고, 편서로는 『이문원강의(摛文院講義)』가 있다. 시호는 문충(文忠)이다.