1573년(선조 6) 알성 문과에 병과로 급제해 예문관검열을 지냈다. 홍문관교리 재직 중 왕명으로 『십구사략(十九史略)』을 개수(改修)하였다. 1583년 번호(藩胡)가 침입해 경원부(慶源府)가 함락되자 이조정랑으로서 도순찰사 정언신(鄭彦信)의 종사관이 되었다.
유학(幼學) 신급(申礏)의 상소 속에 조정에서 권력을 마음대로 행사하는 인물로 지적되기도 하였다. 직제학 · 승지 등을 거쳐, 1587년에 평안도관찰사에서 면직되었다. 그러나 나라에서 변방의 일을 아는 재신(宰臣)을 뽑아 삼도(三道)로 나누어 파견할 때 경상도관찰사가 되었다.
1591년 정철(鄭澈)의 건저문제(建儲問題)에 대해 옥당에서 탄핵하는 차자(箚子)를 올리려고 할 때, 부제학으로서 사성 우성전(禹性傳)의 집으로 의논하러 가서 시간이 지연되어 올리지 못하는 사건이 벌어졌다. 그래서 대사간 홍여순(洪汝諄)이 우성전을 탄핵하면서 남 · 북 두파로 갈리게 되자 남인이 되었다.
임진왜란이 발생했을 때 경상우감사(慶尙右監司)로서 진주를 버리고 거창으로 도망을 갔다. 그러면서도 다만 각 고을에 격문을 돌려 백성들에게 적을 피하라고 통고하니 도내가 텅 비어 왜적을 방어할 수 없었다. 또한 전라감사 이광(李洸)과 충청감사 윤국형(尹國馨)이 근왕병(勤王兵)을 일으키자 겨우 100여 명의 군사를 이끌고 참가하였다. 그러나 근왕병이 용인(龍仁)에서 패하자 경상우도로 되돌아가 영남초유사(嶺南招諭使) 김성일(金誠一)로부터 패전에 대한 질책을 받았다.
또한 당시 의령에서 의병을 일으켰던 곽재우(郭再祐)와 불화가 심해 김성일의 중재로 무마되기도 하였다. 이와 같은 일로 지방사람들로부터 처사가 조급하고 각박할 뿐만 아니라 왜적과 싸우지 않고 적을 피해 도망갔다는 비난을 면치 못하였다.
1592년 8월 한성판윤이 되었고, 지중추부사 · 우참찬 등을 거쳐, 1596년(선조 29) 호조판서로서 전라도와 충청도에서 명군(明軍)의 군량을 충당하기 위해 군량징수에 힘썼다. 그 뒤 영중추부사에 이르렀으나 1613년(광해군 5) 손자인 김비(金祕)가 옥사할 때 탄핵을 받고 삭직당하였다. 시호는 소의(昭懿)이다.