본관은 강릉(江陵). 자는 성래(聖來). 할아버지는 판돈녕부사 김시혁(金始爀)이며, 아버지는 영의정 김상철(金尙喆)이다.
음관(蔭官)으로 참봉에 기용되어 1772년(영조 48) 정시 문과에 병과로 급제, 정자(正字)가 되었다. 1779년(정조 3)에 부수찬(副撰撰)이 되어 홍문록(弘文錄)에 올랐다.
이때 내의원 액례(掖隷: 액정서에 딸린 서리)들이 약재를 징발하고 의관들에게 무례한 짓을 하는 등의 작폐를 논하고 엄히 치죄할 것을 건의하였다. 1780년(정조 4) 규장각직각(奎章閣直閣)을 역임하고 1782년(정조 6) 행수선전관(行首宣傳官)·승지를 거쳐 1783년(정조 7) 대사성·이조참의·광주유수(廣州留守) 등을 역임하였다.
그 뒤 1786년(정조 10)까지 이조참의와 대사성을 지냈다. 1779년에 세도가 홍국영(洪國榮)은 정조가 후사가 없자, 정조의 동생 은언군(恩彦君) 이인(李䄄)의 아들 완풍군(完豊君) 이담(李湛)을 후사로 삼으려다 마음에 들지 않는다 하여 반역죄로 몰아 살해하게 하였다.
이때 평소 이담과 친하여 이담의 혼인 때 혼수를 보내 도운 사실이 뒤늦게 문제가 되어 이담의 역모와 관련, 추국(推鞫)을 받고 제주도에 위리안치되었다. 1791년(정조 15) 부친상을 당하여 풀려났다가 상을 치른 뒤 교동(喬桐)으로 이배되었다. 1830년(순조 30) 손자 김긍창(金兢昌)의 탄원으로 신원되어 관작이 회복되었다.