In a large bowl, whisk together the pudding mix and cold milk for about 2 minutes until thickened. Fold in the thawed whipped topping until smooth and well combined. Set aside.
In a 9x13-inch baking dish, place a single layer of graham crackers, breaking them if necessary to cover the bottom.
Spread half of the pudding-cream mixture over the graham crackers, smoothing it into an even layer.
Top with another layer of graham crackers, followed by the remaining filling. Smooth again to even it out.
Finish with a third and final layer of graham crackers, gently pressing them down to compact the dessert slightly.
In a saucepan, melt the butter over medium heat. Add milk and cocoa powder and stir until smooth. Remove from heat and whisk in the powdered sugar and vanilla until smooth and glossy.
Pour the chocolate topping over the top layer of graham crackers. Spread evenly with a spatula. Cover and refrigerate for at least 4 hours or overnight so the layers can soften.
Once fully chilled and set, cut into squares and serve chilled. Wipe your knife clean between slices for a cleaner presentation.