상서좌복야 김극검(金克儉)의 아들이며, 어머니는 원외랑 김태개(金台凱)의 딸이다.
30세에 진사과에 합격하고, 1130년 교주방어판관(交州防禦判官)에 임명되었다. 이어서 비서성교감(秘書省校勘), 첨사부녹사(詹事府錄事)로 발탁하고, 곧 이어 내시(內侍)에 속하게 하였다가 공역서승(供驛署丞)과 시내원서령(試內園署令)으로 옮겼다. 이후 1142년 정주분도(定州分道)가 되어, 여진의 침입을 막았다. 1144년 지승천부사사(知承天府事使) 시절 고을에서 밭을 가는 소를 잡아 제사에 바치는 일을 금지시켰다. 1146년 전중시어사(殿中侍御史)로서 의종에게 간언하다가, 안남도호부사(安南都護府使)로 좌천을 당했지만, 곧 상서좌사낭중 지제고(尙書左司郎中 知制誥)로 복귀하였다.
1148년(의종 2) 이식(李軾)과 함께 사신으로 금나라에 가서 책봉에 사례하였다. 1151년에 간관(諫官)으로 있으면서 재상 최유청(崔惟淸) · 문공원(文公元) 등과 함께 의종의 아우인 대령후(大寧侯) 왕경(王暻)과 태후(太后)의 매서(妹壻)인 내시낭중(內侍郎中) 정서(鄭敍)가 서로 결탁하여 연락유희(宴樂遊戱)한다고 탄핵하였다.
대령후 왕경은 인종의 둘째아들로서 도량이 있어 중심(衆心)을 얻었으므로 당시 일부에서는 왕으로 추대될 것이라는 의심을 받기도 했었다.
환자(宦者) 정함(鄭諴)과 간신(諫臣) 김존중(金存中)은 대령후와 친한 정서와 사이가 좋지 못하였으므로 대령후와 정서를 모함했던 것인데, 재상 최유청, 간관 김영부 등이 이 모함을 그대로 탄핵하여 결국 정서는 동래로 귀양가고 대령후는 파하게 되었다.
1157년 지추밀원사(知樞密院事) · 태자빈객(太子賓客)이 되었다. 1160년 지공거(知貢擧)가 되어 동지공거(同知貢擧) 이지심(李知深)과 함께 최효저(崔孝著) 등 진사 33인과 명경(明經) 3인을 뽑았다.
이듬해 지문하성사(知門下省事)가 되었으며, 그 이듬해 참지정사(參知政事) 판상서병부사(判尙書兵部事), 1164년 중서시랑(中書侍郎) · 중서평장사(中書平章事)가 되었다.