본관은 의성(義城). 자는 한지(翰之), 호는 와은(臥隱). 안동 출신. 김성구(金聲久)의 증손으로, 할아버지는 김여당(金汝鏜)이고, 아버지는 좌랑 김경필(金景泌)이며, 어머니는 정주현(鄭周鉉)의 딸이다.
1763년(영조 39) 진사가 되고, 1781년(정조 5) 경릉참봉이 되었다. 1787년 대륜차(大輪次: 과거의 불합격자에게 다시 보이는 시험)에서 부(賦)에 수석하여 직부전시(直赴殿試)의 특전을 받았으며, 1789년 식년 문과에 을과로 급제하여 전적이 되었다.
이듬해 부교리·지평·정언을 거쳐, 1791년 헌납이 되어 수해를 당한 영남지방 재해민의 굶주림에 지치고 피곤함을 들어 환곡(還穀)의 환수를 연기하여줄 것을 진언하였다. 이어서 수찬을 거쳐 이듬해 동부승지, 1794년에는 순천부사를 지냈다.
1796년 대사간이 되었으나 파직되었다가 1799년에 다시 대사간에 기용되었으며, 이어서 승지를 지냈다. 1802년(순조 2) 천주교를 신봉, 각종 제례에 참석하지 않아 지평 정언인(鄭彦仁)의 탄핵을 받고 명천(明川)에 유배되었다. 그 뒤 흡곡(歙谷)으로 이배되었다가 1805년에 풀려났다.