张善安十七岁时便做了强盗,转战攻略淮南地区,拥有部众一百多人。恰逢
孟让被江都丞
王世充打败,他的一部分部众归顺张善安,张善安得到八百人。
义宁元年(617年)十二月二十九日,张善安袭击并攻陷
庐江郡,于是渡江,在
豫章郡归附
林士弘。林士弘怀疑他,让他在南塘上扎营。张善安因此怀恨林士弘,就袭击并打败林士弘,烧毁豫章郡的外城而去。林士弘迁居南康。萧铣派其部将苏胡儿攻取并守卫豫章,林士弘退保余干县。不久,张善安夺取豫章郡。
武德五年(622年)正月,张善安以虔、吉等五州投降唐朝,被任命为洪州总管。
武德六年(623年)三月,张善安反叛唐朝,唐朝派遣舒州总管
张镇周等人攻打张善安。四月,张善安攻陷孙州,捉住总管王戎后撤军。八月,辅公祏举兵反叛唐朝,在丹杨称帝建国,与张善安联合,并以张善安为西南道大行台。十一月,唐朝黄州总管
周法明带兵攻打辅公祏,张善安占据
夏口抵抗周法明。周法明驻扎在荆口镇,十一月初十日,周法明登上战船饮酒,张善安派遣几名刺客伪装渔民乘着渔船到荆口镇,见到的人没有产生怀疑,于是他们杀了周法明后离去。
武德六年(623年)十二月初二日,唐朝安抚使
李大亮在洪州攻打张善安,与张善安隔水列阵,遥相对话。李大亮向张善安说明祸福利害关系,张善安说:“善安最初没有反叛的意思,被部下将士们所误,想投降又怕不能免罪。”李大亮说:“张总管有投降的心意,和我就是一家人了。”于是一个人骑马渡过河进入张善安的阵地,和张善安拉着手交谈,表示相互没有猜忌。张善安十分喜悦,于是答应李大亮投降。不久张善安带领几十名骑兵到李大亮的营地,李大亮让随行的骑兵停在营门之外,带张善安入营,和他交谈。过了很长时间,张善安告辞,李大亮命令武士把他捉起来,张善安随行的骑兵全部逃走。张善安的军队闻讯,十分气愤,全部出动,准备攻打李大亮。李大亮派人对他们说:“不是我留住张总管,是总管忠心归附朝廷,对我说:‘如果返回营地,恐怕将士们有不同意见,会受他们钳制。’因此自己留下来不走,你们这些人为什么生我的气?”张善安的部下又大骂道:“张总管出卖我们,自己去讨好别人。”随即溃散而去。李大亮出兵追击,俘虏了许多人。李大亮送张善安到长安,张善安自己声称和辅公并没有来往,唐高祖李渊赦免了他的罪过,对他很好;待到辅公祏失败后,得到他们相互往来的信件,于是杀了张善安。