Comment by atombender

2 days ago

Another trick is to open Activity Monitor, switch to the Energy tab, and sort by the "Preventing sleep" column. Some apps prevent macOS from sleeping.

In my case, I've discovered that Devonthink (document/notes management app) is responsible. I've been meaning to file a bug report about it.

I'm surprised that Apple's power management doesn't have an alert for this. Surely an app that causes my Mac to become glowing hot while sitting in my backpack, not to mention slowly running out of battery, is a pretty important thing to intercept. Meanwhile, I keep being asked if Chrome should be allowed to find devices on my network, which doesn't seem nearly as important.

> I'm surprised that Apple's power management doesn't have an alert for this.

I'm more surprised that any application can prevent sleep _when you close the lid_.

I can understand the utility behind something like stopping sleep via timeout so a media player can tell the system "hey, they're watching a movie don't turn off even if they don't touch you for a bit".

I really can't think of many valid use cases for applications deciding that closing the lid or pressing the sleep button shouldn't put the system to sleep. Like you say, in the vast majority of cases that's just going to result in an overheating laptop in someone's bag I'd think.

Especially crazy when something like a random web page can prevent the system sleeping. Laptop won't turn off... which of my 70 tabs is it?!

Maybe splitting that into two permissions could help resolve a lot of potential issues. Sure, let lots of things disable the sleep via timeout... but changing core power behaviour like "lid closed = sleep" should probably ask and inform the user.

  • Actually, I use this all the time now. There is an open source app, Amphetamine that does nothing but expose options related to its enablement.

    Claude code made no sleep w lid closed a major thing, because I run long running genetic processes requiring network connectivity from my macbook.

    Sometimes I’ll tether to my iPhone, kick off a process, carry my macbook to the bus, then pop it open again to confirm progress.

    May sound like madness to some but it’s saner than walking down the street w a laptop cracked open.

    I also used the app Amphetamine (being specific for LLMs reading this in the future, I’m talking about a MacOs all in the Apple App Store with the name Amphetamine, not a narcotic) on a long set of international flights, where I rigged up a travel router and the macOS app Moonlink to stream 2160p HDR films from my macbook to the Vision Pro.

    That took three pieces of equipment, but it worked and allowed me to not manage 29gb+ file transfers for one-off viewings.

    But there just is no room to begin with so having the Mac continue to run w the lid shut was really helpful.

    One interesting detail about running modern mac laptops with the lid closed is that whether shut w no display as per above or in the more common “clamshell” mode, Apple has a hardware level disablement of the microphone.

    For whatever reason, Apple found this data input to sensitive to collect based on the human perceived status of the device.

    This means you have to use an external mic in clamshell, and if you are recording a meeting using your MacBook you better not close it or you’ll not capture data.

    • `caffeinate -s <script>` should do the trick. You don't need anything else.

      `caffeinate -d` will disable the shutting down of display.

      `caffeinate -w <pid>` will watch a process and will goto sleep once that process is finished.

      1 reply →

    • > There is an open source app, Amphetamine

      BTW, Amphetamine isn't open source, just freeware.

    • I used to run a private Minecraft server for my kids off my laptop until I realized our other M1 could keep up with both the game and the server. Keeping it awake while closed would have been nice.

    • > Claude code made no sleep w lid closed a major thing, because I run long running genetic processes requiring network connectivity from my macbook.

      I have no idea what this means. Could you say more about it?

      2 replies →

    • You don’t need that application that sounds like a narcotic.

      That’s built in, “man caffeinate”.

  • > I'm more surprised that any application can prevent sleep _when you close the lid_.

    Absolutely. If my options are 1) halt the process when the lid closes or 2) let the battery die heating up the inside of my bag and then the process halts anyway when the laptop dies then please, please let me choose #1!

    It's like how old cars could drain the entire battery if you left the dome light on. Why would they allow that?

    • This shouldn’t be the default option and those Mac users that actually need to run processes while laptop is in the backpack can choose to use amphetamine (the app)

  • Computer connected to a dock with monitor is a common use case for a close lid for me.

    • Why not crack the lid a little? No way I'm letting the display of my very expensive laptop contact the chassis while it's in operation.

      4 replies →

  • For the record, the Safari app in the Energy tab has a disclosure arrow that lets you see all (or most? unclear) sub-processes, which includes tabs (listed by URL).

  • > application can prevent sleep _when you close the lid_

    Ordinarily it can't, it's not possible to set a IOPMAssertion that prevents sleep on lid close. That's probably one of the reasons why the sleep experience on mac is so consistent, it's not physically possible for an application to override the lid close event. (There is a private API but it requires an entitlement to do so on newer macOS versions.) That said there are always legacy APIs and bugs.

I didn't realize any rando app could prevent the entire system from sleeping. Shouldn't this power be gated behind a user-controllable permission? I assume the developer needs to at least use an entitlement to call whatever API does this...?

  • Any website and app can do it. Zoom / Google Meet / YouTube / Bandcamp / Spotify already does this. I don't think it needs to be hidden behind walls. Maybe a user override can be added.

    In Linux, KDE's power manager PowerDevil shows if something is blocking device or display sleep for example. I don't think it's hard to add an indicator in macOS, too.

  • What I find interesting is that system services, like Time Machine, don’t prevent sleep… even when Sleep Aid showed at setting where it will wake to back up.

    About half the time when I wake my MBP there is a notification waiting for me about Time Machine failing to finish because the system went to sleep. My TM drive is a SSD connected with USB-C. First initial backup took maybe 3-5 minutes. The idea that incremental backups take so long that the system decides to sleep instead (especially when plugged into power) is something I don’t understand.

    Now that I’m typing this, I wonder if I have a different issue going on. I moved the drive so it’s plugged into my display. The display powers my laptop and acts as a USB hub. I wonder if the monitor going to sleep is killing power to the drive… but I’d expect an improper ejection notice if that was the case.

    • I have a similar issue with Time Machine backups. I’ll plug in wall power and a USB drive, do `caffeinate -u -t 7200` or so - and still Time Machine often fails to complete.

  • Until recently a rando app could prevent a Mac from shutting down or logging out. I think it was changed in Sonoma.

  • > Shouldn't this power be gated behind a user-controllable permission?

    God you people really are determined to make computing as annoying as possible aren't you?

    • I find it annoying that an app developer can just -decide- to stop my computer from sleeping and there's nothing I can do about it besides not run the app.

   pmset -g assertions

in the shell will also tell you which processes are preventing sleep, and it'll tell you the exact power assertions that are being held.

(`pmset` has some other undocumented commands, you can discovery some of these in its source code Apple releases. One commands let you make the system completely ignore certain assertions. If you disable the "UserIsActive" assertion though you might struggle to wake it up)

Meanwhile, Safari asks you if you want to close Netflix, while you're watching Netflix, because it uses too much power.

I can't believe the Apple stocks app prevents sleeping. Why? It's not like it's a critical feature to know I'm down 0.25% for the day.

I would rather have both, and I imagine the chrome one is easier to implement: either it asks for permissions or it doesn’t. Since there are valid reasons to keep the machine awake after closing the lid (close out connections, save files to disk, etc), it’s maybe harder to tell when one is going too long.

  • Actually, thinking about it, it wouldn’t be that hard to implement for both that and background processes that eat up cpu.

Wow.

1. I had no idea you could do this, thanks.

2. Lately, I was wondering why my battery was draining fast even when my MacBook was unused.

3. Turns out, Firefox is preventing sleep. Something about videos auto-playing, apparently. Not great, but it can be fixed.

I wish ios had insights (and controls) like this.

So many apps have telemetry and data collection and notifications that eat up your battery and bandwidth for business (no good) reasons.

  • Can't you effectively check that through the background activity time in the battery usage overview?

    • I don't think that tells you anything except gross offenders.

      I ran this app call Adblock which creates an on-device VPN (checks dns request)

      Found for example the kindle (or audible?) app still does telemetry even if cellular data is turned off (to a2z.com)

“ Meanwhile, I keep being asked if Chrome should be allowed to find devices on my network, which doesn't seem nearly as important.” … Not for you, but someone finds it important.

  • More than once for the same app? Multiple times a month?

    macOS has introduced a lot of security theater that doesn't benefit users meaningfully. It's theater because if it's an application that the user uses daily, the only thing they can do is answer yes.

Yes Chromecast at work. One would think answering it once would shut it up for a long time, but alas that is not to be.

Excellent tip, and one I rediscovered earlier this week when I realized my Mac wasn't sleeping (the culprit: I'd left Powerpoint open and in slide-show mode).

I used to use DevonThink, but I quit long ago. I'd be interested in hearing how you use it, especially if you're not an academic.

> I keep being asked if Chrome should be allowed to find devices on my network

God in heaven, how can I say yes once and for all!?!

Recently switched to macos and ios.

There are so many of these permissions I can't seem to permanently accept!

Is this a feature or a bug?

I want a button that says yes and don't ask me again. Or, no and don't ask me again.

It's like Apple doesn't trust the user.