일길찬(一吉飡) 수봉(秀奉)의 아들이다. 23세에 벼슬하여 내외의 관직을 역임하다가 818년(헌덕왕 10)에 집사부(執事部)의 시랑(侍郞)이 되었다.
이때 인사문제로 고심하던 나머지 병을 얻은 상대등(上大等) 충공(忠恭)에게 인사정책의 요점을 제시, 인사는 마치 목수가 집짓는 것에 비유하며 적재적소에 기용해야 한다고 건의하였다.
그러면서 “관(官)에 이르면 청백하여야 하고, 일에 다다르면 공손하여야 하고, 뇌물의 거래를 막아야 하며, 지저분한 청탁을 멀리할 것이며, 출척(黜陟)을 분명히 하여야 하고, 주고 빼앗음을 사랑과 미움에 얽매어 하지 아니할 것이며, 저울대와 같이 경중을 숨길 수 없게 하여야 하고, 먹줄과 같이 곧은 것을 속이지 말아야 한다.”고 하였다.
이러한 건의는 충공을 통해 헌덕왕과 왕자에게 받아 들여져 정책에 반영되었다. 822년(헌덕왕 14) 웅천주(熊川州: 지금의 충청남도 公州)의 도독(都督) 김헌창(金憲昌)이 그의 아버지 김주원(金周元)이 왕위에 오르지 못함에 불만을 품고 반란을 일으켰을 때 난의 진압에 공을 세워 5등급인 대아찬(大阿飡)의 벼슬이 내려졌으나 사양하고 받지 않았다.