I've worked around this problem on each mac laptop I've owned over the years by configuring "hibernate on lid close."

When I open the lid of the mac it takes maybe 20-30 seconds to resume. I consider this a small price to pay in exchange for reliable sleep and less battery drain with the lid closed.

If you want to try this, run in the terminal:

sudo pmset -a hibernatemode 25

If you don't like it, you can restore defaults with:

sudo pmset -a hibernatemode 3

Does hibernate play nice with FDE? I know in Linux there are varying caveats around committing memory to disk wrt disk encryption

When resuming from hibernation I’m not prompted for credentials until the system has resumed, so I have to imagine the disk remains decrypted, i.e. same behavior as sleep.

I just got my MacBook Air of the shelf to run this command. But I had to hook it up to a power outlet, because the battery was drained

I've had to do this to my Windows laptop recently after it started completely draining the battery when going to normal sleep. Wakes up reasonably quickly still, and no power management problems!

This is the simplest solution that enables the behavior that I think most people who care enough to comment here want

Thanks! I hope it helps folks as much as it has helped me.

Can you explain what this does?

From `man pmset`:

    SAFE SLEEP ARGUMENTS
        hibernatemode supports values of 0, 3, or 25. Whether or not a hibernation image gets
        written is also dependent on the values of standby and autopoweroff
    
        For example, on desktops that support standby a hibernation image will be written after the
        specified standbydelay time. To disable hibernation images completely, ensure hibernatemode
        standby and autopoweroff are all set to 0.
    
        hibernatemode = 0 by default on desktops. The system will not back memory up to persistent
        storage. The system must wake from the contents of memory; the system will lose context on
        power loss. This is, historically, plain old sleep.
    
        hibernatemode = 3 by default on portables. The system will store a copy of memory to
        persistent storage (the disk), and will power memory during sleep. The system will wake from
        memory, unless a power loss forces it to restore from hibernate image.
    
        hibernatemode = 25 is only settable via pmset. The system will store a copy of memory to
        persistent storage (the disk), and will remove power to memory. The system will restore from
        disk image. If you want "hibernation" - slower sleeps, slower wakes, and better battery
        life, you should use this setting.
    
        Please note that hibernatefile may only point to a file located on the root volume.