公孙衍,名衍,在阴晋邑出生,曾仕魏,任犀首之官,人因以“犀首”称之,是战国时期魏国人,和张仪同期,于秦国为官,是张仪的连横策略的主要对手。公孙衍在当时一些人的心目中是与张仪齐名的,但传下来的事迹不多。《史记》有公孙衍传,系附于张仪传。《战国策》也只有几条零星的记载。
公孙衍于秦惠文王五年(前333年)在秦,为大良造。前332年,秦使公孙衍欺齐、魏以伐赵。赵萧侯责备苏秦,苏秦恐惧,请求到燕国说服燕国攻打齐国,遂离开赵国。苏秦所创立的合纵抗秦联盟从此破裂。
根据史记,张仪游说魏王,提出让秦魏联合攻韩,由秦得三川,魏得南阳,魏王同意,让张仪为相。公孙衍则游说韩王,让韩王把南阳割给魏国,于是公孙衍夺得张仪的功劳,成为魏相,张仪离去。
后来张仪当了秦相,公孙衍就离开秦国而入魏为将,因为魏国国力衰退,公孙衍就图谋拉拢其他国,联合出击取胜,就在前325年与齐国大将田朌合手打败赵国大将韩举、赵护于平邑(今河南省南乐县西北)、新城。
公孙衍(犀首)当张仪要拉拢齐、楚等国,要破坏公孙衍的合纵策略时,公孙衍在前323年发起魏、韩、赵、燕、中山“五国相王”之事来对抗张仪的连横策略。但不久,楚国就派兵伐魏,公孙衍的策略受到挫折,魏相惠施联合齐、楚的活动也遭到失败,被驱逐。
前319年,魏国驱逐张仪回秦,并争取各国合纵对付秦国,公孙衍由魏将升任魏相邦,同时惠施也回国,合纵形势又形成了。前318年发起魏、赵、韩、燕、楚“五国伐秦”之举,以楚怀王为纵长,又游说义渠攻打秦国,大败秦军于李伯。
但在函谷关一战失利,五国纷纷退兵,虽然失败,但声势烜赫一时,所以当时人景春说:“公孙衍、张仪不诚大丈夫哉!一怒而诸侯惧,安居而天下熄。”(《孟子.滕文公》下篇)
犀首疑为墨家钜子的另称,儒墨并世显学,墨家钜子腹朜曾受秦王重用,公孙衍可能是继任的钜子。张仪死了以后,犀首到秦国出任宰相,曾经佩带过五个国家的相印,做了联盟的领袖。
从史籍记载来看,公孙衍在韩国担任宰相,率军与秦国作战失败后,再次回到了魏国。但魏国朝廷勾心斗角,公孙衍没有能重新登上历史舞台。据《韩非子》记载,他与大臣张寿有积怨,田需对他也怀恨在心,于是田需派人杀掉张寿嫁祸于他。魏王误以为是他杀的,就把他杀掉了。