故事發生在1954年,兩名美國聯邦法警——泰迪·丹尼爾斯(萊昂納多·迪卡普裡奧 飾)和他的新搭檔查克(馬克·魯法洛 飾)乘船來到波士頓附近的禁閉島。這座島上隻有一座阿什克利夫精神病院,專門關押極其危險的精神病罪犯。

泰迪此行的公開目的是調查一名叫瑞秋·索蘭多的女患者的離奇失蹤。瑞秋因為溺死了自己的三個孩子而被關押,但她竟然從一個門窗反鎖的病房裡憑空消失了,隻留下一張寫着“第67号準則是誰?”的紙條。

随着調查深入,泰迪發現醫院充滿了詭異的氣氛。主治醫師考利醫生雖然配合但似乎有所隐瞞,警衛們高度戒備,病人們的口供也語焉不詳。同時,泰迪自己也深受偏頭痛和惡夢的折磨,他在夢中不斷看到死于火災的妻子多洛雷斯,以及他在二戰時解放達豪集中營目睹的慘狀。

事實上,泰迪上島有私心。他認為當年縱火燒死他妻子的兇手——安德魯·雷迪斯,就被關在這座島上。此外,他還懷疑這所醫院在進行非法的納粹式大腦切除實驗,試圖把人變成沒有思想的空殼。

随着一場飓風切斷了島上與外界的聯系,泰迪和查克決定強行調查。他們在禁區C棟遭遇了混亂,泰迪還在海邊的山洞裡“遇見”了真正的瑞秋(實際上這是他的幻覺),那個瑞秋告訴他,這裡确實在進行洗腦和神經手術,一旦進來就别想清醒地出去。

深受震動的泰迪決定去揭穿這一切。他認為最黑暗的秘密——大腦切除手術,就在海邊的燈塔裡進行。他不顧一切地潛入燈塔,但在那裡,他沒有發現手術室,隻看到了獨自等待他的考利醫生。

此時,全片最大的反轉揭曉:

考利醫生告訴泰迪,根本沒有聯邦法警泰迪·丹尼爾斯,也沒有失蹤的瑞秋。泰迪自己就是那個第67号病人——安德魯·雷迪斯。

真相是這樣的:安德魯确實參加過二戰,戰後酗酒且有暴力傾向。他的妻子多洛雷斯患有嚴重的躁郁症,曾放火燒過房子,但安德魯一直逃避面對妻子的病情,直到搬到湖邊小屋後,悲劇發生。多洛雷斯在發病時将他們的三個孩子全部溺死在湖裡。回家目睹這一切的安德魯在極度悲痛和憤怒中,開槍殺死了妻子。

無法承受這種巨大罪惡感和痛苦的安德魯,在精神崩潰後分裂出了第二人格——“泰迪·丹尼爾斯”。在這個幻想世界裡,他是英雄警官,妻子是被别人(那個實際上就是他自己的安德魯·雷迪斯)殺死的,他來這裡是為了正義。

所謂的“調查”,其實是考利醫生和全院工作人員陪他演的一場超大規模的角色扮演療法,目的是讓他把這種妄想演繹到極緻,從而在邏輯崩潰中清醒過來。他的搭檔“查克”,其實就是他的主治醫師希恩醫生。

在證據确鑿的現實面前(包括名字的字母重組遊戲:Edward Daniels = Andrew Laeddis),安德魯終于崩潰并接受了真相,痛哭流涕。

影片的結局發生在幾天後。看起來治療似乎成功了,安德魯恢複了理智。考利醫生和希恩醫生(查克)坐在台階上觀察他。如果他再次退回到幻想中,根據醫院理事會的決定,他将被視為“無法治愈”而接受前額葉切除手術(變成廢人)。

安德魯此時轉過頭,眼神清澈地看着希恩醫生,但他卻叫了一聲“查克”,似乎又變回了那個警官。希恩醫生失望地向考利醫生搖了搖頭,示意手術準備開始。

然而,在起身走向手術人員之前,安德魯對希恩醫生說了最後一句意味深長的話:“像野獸一樣活着,還是作為一個好人死去,哪一個更糟?”

這句話暗示了安德魯其實已經清醒了。他記得自己殺了妻子和孩子,這份痛苦太沉重,讓他無法像“野獸”(罪人安德魯)一樣苟活。所以,他選擇假裝自己瘋了,以“好人”(警官泰迪)的身份去接受手術,用抹殺意識的方式來獲得解脫。這是一個關于極度悲傷與自我毀滅的故事。