본관은 안동(安東). 자는 중현(仲賢). 김방경(金方慶)의 증손으로, 아버지는 평장사(平章事)를 지낸 상락군(上洛君) 김묘(金昴)이며, 성균직강(成均直講)을 지낸 김구용(金九容)의 아우이다.
과거에 급제해 정몽주(鄭夢周)·이숭인(李崇仁)·정도전(鄭道傳)·이존오(李存吾) 등과 친분이 두터웠다. 1364년(공민왕 13)에 좌정언(左正言)이 되었는데 내수(內竪) 한휘(韓暉)와 이구수(李龜壽)가 변방의 공으로 자급을 뛰어넘어 첨의평리(僉議評理)에 발탁되자 기밀을 마음대로 하고 총행이 지나치므로 고신(告身: 辭令書)에 서명하지 않았다는 의심을 받았다.
이 일로 두 사람이 참소해 하옥되려다가 밀직부사 김달상(金達祥) 등이 간관을 하옥하면 훗날 모든 허물이 왕에게 돌아갈 것이며, 고신에 서명하지 않은 것이 죄가 될 것이 없다고 만류해 모면하였다. 그러나 병을 핑계로 나오지 않으므로 왕이 강제로 고신에 서명하게 한 뒤 파면하였다.
공민왕이 반원개혁정치를 하고자 하여, 1366년 하남왕(河南王)에게 전녹생(田祿生)을 사신으로 보낼 때 군부좌랑(軍簿佐郎)으로 서장관이 되어 수행하였다. 연경에 이르렀을 때 하남왕과의 수교를 싫어한 원나라의 태자가 귀환하라는 명령을 내리자 전녹생을 되돌려보낸 후 병을 핑계로 연경에 머물고 있다가 틈을 보아 홀로 하남에 가서 국서를 전달하였다.
이 공으로 하남왕의 상주에 의해 중서병부낭중 첨서하남강북등처행추밀원사(中書兵部郎中簽書河南江北等處行樞密院事)가 되었다. 이어 하남왕의 보빙사(報聘使) 곽영석(郭永錫)과 함께 돌아오자 공민왕은 그 노고를 치하해 대언에 임명하려 하였으나, 신돈(辛旽)이 자기를 찾아오지 않음을 불쾌히 여겨 반대한 까닭에 내서사인이 되었고, 이어서 전교부령(典校副令)으로 좌천되었다.
그 뒤 전 밀직부사 김정(金精) 등과 더불어 신돈을 죽이려고 모의하다가 전 홍주목사 정휘(鄭暉)의 고발로 인해 기밀이 누설되어 왕명으로 순군옥(巡軍獄)에 갇히어 국문을 받고 귀양가던 도중에 신돈이 보낸 사람에 의해 죽임을 당하였다.