Действие первое
Иван Северьянович Флягин, послушник Валаамского монастыря, вспоминает о своей жизни. В отрочестве он однажды «смеха ради» ударом кнута нечаянно убил монаха. Монах явился ему в видении, укоряя за то, что Иван лишил его жизни, не дав покаяться. Он же рассказал Ивану Северьянычу, что тот — «обещанный» Богу сын, и дал «знамение»: будет Флягин много раз погибать и ни разу не погибнет, пока не придёт ему настоящая «погибель», и отправится он во исполнение материнского «обещания» в монастырь, на Валаам-остров. Хоть и не поверил Иван Северьянович, а сбылось пророчество монаха. Странствуя, попал Иван в плен к татарам и прожил с ними в самых Рынь-песках десять лет. Бежал от татар, повстречал пастухов на пути из плена, а возвратившись в родные места, поступил на службу к Князю, который оценил его умение хорошо разбираться в лошадях. Однако после трёх лет усердной службы начали Ивана Северьяновича одолевать запои. В одном из трактиров Флягин познакомился со спившимся барином, который обладал даром гипноза. В ту же ночь в другом трактире Иван Северьяныч растратил все деньги, оставленные ему Князем, на прекрасную певунью — цыганку Грушеньку.
Действие второе
Когда Князь потребовал от Ивана Северьяновича пять тысяч рублей, что были доверены ему, Флягин, повинившись, рассказал о прекрасной цыганке. Влюбившись в Грушу, Князь отдал табору огромный выкуп — полсотни тысяч рублей золотом — и забрал её к себе в дом. Но Князь — человек переменчивый, и Груша ему быстро наскучила. Во время поездки в город Иван Северьянович узнал, что его хозяин собирается жениться на богатой дворянке, а вернувшись домой, он не застал цыганку: Князь тайно отвёз её в лес, на болото. Однако Груша сбежала из заточения, встретилась с Флягиным и, взяв с него страшную клятву, попросила убить её, поскольку иначе она сама убьёт неверного Князя и его молодую невесту. Иван Северьянович, исполняя Грушину просьбу, скинул её с крутизны в реку. В видениях Флягин слышит голоса убиенных им монаха и цыганки Груши.