본관은 용인(龍仁). 자는 광중(光仲). 이적(李積)의 10세손 이유악(李維岳)의 증손으로, 할아버지는 이세명(李世命)이다. 아버지는 이의득(李宜得)이며, 어머니는 원성거(元聖擧)의 딸이다.
1750년(영조 26) 알성문과에 병과로 급제하였다. 이에 앞서 1741년에 진사로서, 조영근(趙榮謹)의 알성을 가로막은 유생 심공헌(沈公獻) 등이 치죄된 데 대하여 김공헌을 비롯한 23인이 유소(儒疏)를 하였는데, 이는 대개 조영근의 조부 조태억(趙泰億)이 신임사화로 역신이 되자, 이를 두고 그 손자와 함께 묘정(廟庭)에 나아갈 수 없다 하여 유생 4인이 처벌당한 일을 이름이다.
이 유소로 하여 유적(儒籍)에서 이름이 삭제당하기도 하였으나, 1756년 관직에 나아간 이후 지평·장령·오수찰방(獒樹察防)·사간·보덕·집의·겸필선·부수찬·승지 등을 역임하였다. 장령으로 있을 때는 세자가 노는 것을 일삼자 상서하여 세자의 반성을 촉구하였고, 동래부사로 나아가서는 표류한 왜인을 엄중히 다루지 않았다 하여 체직되기도 하였다.
1775년에 대사간으로서 하례(賀禮: 축하하는 의식)의 반열에 참여치 않고 알리기도 하였다 하여 사판(仕版: 관리의 명단)에서 삭제되었다. 정조 즉위 이후 옛날 세손시절의 의리를 생각하여, 후손 중 계방(桂坊: 세자익위사)에 들어 올 인물이 있으면 등용하도록 우대하였다.