唐京兆泾阳(今属陕西)人,有文武才略,隋末为宠玉行军兵曹。为李密部将张弼所擒,旋被释。后投降李渊,授士门令。招集流亡,鼓励垦茺,升为金州总管府司马,进取樊,邓一带十余城,迁安州刺史,奉命徇广州,至九江,适辅公祷反,用计擒其将张善安,迁越州都督,贞观初,调交州,再调凉州,因使者嘱献名鹰,密表谏太宗爱嘉奖,后与李靖分道击吐谷浑,拜右卫大将军,临终尚表请太宗停止辽东之役。