본관은 화평(化平). 첨의중찬(僉議中贊) 김지숙(金之淑)의 손자.
공민왕(恭愍王) 초에 감찰집의(監察執義)가 되어 감찰대부(監察大夫) 원의(元顗)와 감찰지평(監察持平) 홍원로(洪元老)와 함께 부정을 규탄하고 법을 집행하였다. 새로 임명되는 관리도 허물이 있으면 서명을 거부했으므로 나인과 환자(宦者)들의 미움을 사 파면되었다가 다시 복직되어 좌부대언(左副代言)이 되었다.
1361년(공민왕 10)에 홍건적의 침입으로 왕이 복주(福州: 지금의 경상북도 안동)로 피난할 때 호종한 공으로 신축호종이등공신(辛丑扈從二等功臣)이 되었고, 감찰대부에 제수되었다가 지밀직사사(知密直司事)에 올랐다.
1364년에 서북면체찰사(西北面體察使)에서 다시 경상도도순문사(慶尙道都巡問使)가 되어 진해현(鎭海縣)에 침입한 왜구 3천여 명을 물리쳤다. 그 공로로 1365년 동·서강도지휘사(東西江都指揮使)와 삼사좌사(三司左使)에 제수되고 단성규의보리공신(湍誠揆義輔理功臣)의 호를 받았으며, 그해 다시 첨의평리(僉議評理)가 되었다.
1367년(공민왕 16)에 평양도도순문사를 거쳐 대사헌이 되었으나, 찬성사(贊成事) 최영(崔瑩)의 경상·전라·양광도도순문사의 보직 임명이 옳지 못함을 논하다가 파면되었으나, 우왕(禑王) 초에 삼사우사(三司右使)에 복직되었다.
명덕태후(明德太后: 忠肅王妃)의 인척으로서 궁중의 일을 도맡았으며, 또 성품이 청렴하고 강직해 거리낌 없이 말을 함으로써 주위로부터 미움을 받기도 하였다. 때마침 반야(般若)의 사건이 일어나 이를 변론하는 자리에서 왕에 대해 불경한 말을 했다고 하여 이인임(李仁任) 등의 탄핵을 받아 처형될 뻔하였으나, 명덕태후의 구원으로 감형되어 1376년(우왕 12)에 문의현(文義縣: 지금의 충청북도 청원)으로 귀양 가서 죽었다.
시호는 충간(忠簡)이다.