Prep the dish: Heat your oven to 350°F (175°C).
Grease a 9x13-inch baking dish with butter or nonstick spray.
Split the croissants: Slice croissants horizontally. Tear or cut into large bite-size pieces. Day-old croissants absorb custard better, but fresh works too.
Layer the base: Spread half the croissant pieces in the dish.
Sprinkle with half the ham and half the shredded cheese.
Make the custard: In a large bowl, whisk eggs, milk, Dijon, onion powder, garlic powder, pepper, and salt until smooth. Stir in Parmesan if using.
Assemble: Add the remaining croissant pieces, ham, and cheese to the dish. Pour the custard evenly over everything, gently pressing the croissants down so they soak it up.
Rest time: Let it sit for 15–20 minutes on the counter so the croissants absorb the custard.
For maximum flavor, cover and refrigerate up to 12 hours.
Bake: If chilled, let the dish sit at room temperature for 20 minutes. Cover loosely with foil and bake for 25 minutes. Remove foil and bake another 20–25 minutes, until puffed, golden, and set in the center.
Finish and serve: Let it rest 10 minutes.
Garnish with chives or parsley. Cut into squares and serve warm.