刘备收刘封为义子时,刘禅还没出生,年近半百的刘备见到刘封非常喜爱,因此收为义子。但是次年,刘禅就出生了,这就让刘封的境地非常尴尬,而且关羽经常以螟蛉之子称之。随着刘备的事业越来越大,到了六十几岁的刘备也是明白自己活不久了,日后的基业肯定也是要给亲生儿子才行,那么刘封就是一个威胁。那个时候的义子地位是挺高的,并且拥有着长辈的继承权的。要想顺利地让刘禅继位,刘封不能不死。
公元219年,关羽战樊城、襄阳时邀请刘封前来相助,但刘封却拒绝出兵帮助关羽。历史上一些边角料的小野闻说刘封心里烦关羽,因为刘备在征求关羽接班人的问题时,关羽说刘封不是亲生的不能立为储君,所以刘封对关羽一直怀恨在心。这种小野史不去细究真伪了,真实的情况是刘备认为关羽的死和刘封按兵不动有直接关系,所以关羽之死是刘封被杀的第一因素。
吴军围麦城,自然是水泄不通,不可能让一个人逃出去。历史上的廖化是在关羽死后就一直困在东吴,直到一年多以后刘备伐吴时才逃回。所以,刘封孟达没有见死不救。至于刘备的“深恨之”算是对于关羽败亡、荆州丢失的一种迁怒。而这种迁怒,也不能成为杀刘封的理由。所以之后刘封还是镇守上庸,直到发生孟达的反叛。
东三郡是军事重镇,刘封即使真的要出兵,也需要请示刘备才能发兵,因此关羽在襄樊战败,刘封并没有太大的责任。在孟达叛变后,刘封拒绝投降曹魏,带领残兵退回了蜀汉。刘封回到蜀汉之后,刘备想要原谅刘封,但是诸葛亮劝说刘备趁机除掉刘封,以防止刘封未来威胁到刘禅。刘备考虑到刘封的性格,为了让刘禅能够坐稳江山,最终以不救援关羽和丢失东三郡的理由逼死了刘封。刘封遇害的时候说:“悔恨不听孟达的话!”刘备为他流下了眼泪。