1455년(세조 1)에 사용(司勇)으로 세조 원종공신(原從功臣) 2등에 책록되었다. 1467년 건주야인(建州野人) 토벌 때 세운 공으로 다대포만호(多大浦萬戶)가 되고, 이어서 사량만호(蛇梁萬戶)를 역임하였다.
1468년(예종 즉위) 남이옥사(南怡獄事)에 연루되어 가산을 적몰당하고 보령(保寧)의 관노가 되었다가 1471년(성종 2) 한명회(韓明澮)의 변호로 풀려났다. 1474년에 경원부사(慶源府使)가 되고 이어서 야인의 침입에 대비, 평안도조전절제사(平安道助戰節制使)가 되었으나, 방비를 게을리한 책임으로 파직당하였다.
1477년 다시 기용되어 충의위(忠義衛)가 되고, 1478년 구성부사(龜城府使), 1479년 위장(衛將) 등을 역임하고 1481년 안주목사(安州牧使)가 되었는데, 구황을 게을리하였다 하여 파직당하였다. 1484년 종성부사, 1485년 회령부사 등을 거쳐, 1486년 만포첨절제사가 되었는데 방술을 허술하게 했다 하여 외방에 부처되었으나, 아들 김현손(金賢孫)이 억울함을 상소하여 석방되었다.
1488년 훈련원도정·강계부사, 1491년 영안북도우후(永安北道虞候), 1492년 영안남도병마절도사, 1499년(연산군 5) 동지중추부사, 1503년 겸사복장(兼司僕將) 등을 역임하였다.