caffeinate di Mac: contoh command, batasan, dan opsi workflow AI yang lebih aman

caffeinate adalah command-line tool bawaan setiap Mac untuk mencegahnya tidur tanpa perlu membuka System Settings — jalankan sendirian dan ia memblokir idle sleep sampai Anda menekan Ctrl-C, tambahkan -t 3600 dan ia berhenti sendiri setelah satu jam, atau bungkus sebuah command dan ia menahan Mac tetap terjaga hanya selama command itu berjalan. Yang tidak disentuhnya adalah sleep saat lid tertutup, level baterai, atau suhu: tutup lid dan MacBook tetap tidur berapa pun lama caffeinate sudah berjalan. Di bawah ini ada command asli, cara gratis untuk mengakali batasan lid tertutup (termasuk satu cara yang jarang diketahui orang), dan di titik mana tool yang sadar keamanan seperti LidRun mengambil alih setelah caffeinate berhenti.
Apa yang sebenarnya dilakukan command caffeinate
caffeinate adalah utility command-line kecil yang sudah menjadi bagian macOS selama bertahun-tahun. Ia membuat power management assertion — permintaan ke sistem agar tidak tidur — selama ia berjalan, lalu melepas assertion itu secara otomatis begitu prosesnya berhenti. Tidak ada langkah "matikan lagi" terpisah, dan ini penting nanti di artikel ini ketika kita membahas workaround yang tidak melepas dirinya sendiri.
Jalankan tanpa flag apa pun dan secara default ia memblokir idle sleep. Tambahkan flag tertentu untuk assertion tertentu: -d juga mencegah display tidur, -m mencegah disk berhenti berputar, -s mencegah system sleep (tapi hanya saat memakai AC power), dan -u menyatakan user sedang aktif, yang membangunkan display dan kurang lebih setara dengan -d -t 5. Flag-flag ini bertumpuk — masing-masing adalah assertion terpisah yang bisa digabung, bukan satu saklar utama. Jalankan caffeinate -d -i dan Anda menahan dua hold independen yang keduanya harus berakhir dulu sebelum Mac bisa tidur lagi.
Bagian yang berguna bagi developer: caffeinate tidak punya GUI, tidak punya ikon menu bar, dan tidak punya file konfigurasi. Ia memang dirancang untuk di-script — dijalankan, berjalan, dan dilepas tanpa perlu menyentuh panel pengaturan. Untuk sesi terminal atau script dengan awal dan akhir yang jelas, ini benar-benar tool yang tepat.
Contoh command caffeinate — dan cara memastikan ia benar-benar bekerja
Bentuk paling sederhana adalah caffeinate saja, dijalankan di jendela terminal yang Anda biarkan terbuka — ia memblokir idle sleep sampai Anda menekan Ctrl-C atau menutup jendela.


Untuk durasi tetap, caffeinate -t 3600 menjaga Mac tetap terjaga selama tepat satu jam, lalu berhenti dan melepas assertion-nya sendiri — Anda tidak perlu ingat untuk menghentikannya.
Untuk pekerjaan spesifik, bungkus command-nya langsung: caffeinate -i npm run build menjaga Mac tetap terjaga hanya selama build itu berjalan, dan melepas assertion begitu build selesai atau gagal. Pola yang sama berlaku untuk caffeinate -i ./deploy.sh, rsync yang panjang, atau command lain apa pun dengan awal dan akhir yang jelas. Jika Anda tidak memulai prosesnya sendiri — misalnya build yang dijalankan dari IDE — caffeinate -w <pid> bisa menunggu process ID yang sudah berjalan.
Cron job berjalan tanpa terminal interaktif, jadi membungkusnya dengan caffeinate adalah pola umum untuk apa pun yang dijadwalkan semalaman: 0 2 * * * /usr/bin/caffeinate -i /path/to/nightly-backup.sh menjaga Mac tetap terjaga persis selama durasi backup itu, tidak lebih.
Untuk memastikan caffeinate benar-benar menahan Mac tetap terjaga, jalankan pmset -g assertions — perintah ini menampilkan setiap power assertion yang aktif beserta proses pemiliknya; cari PreventUserIdleSystemSleep di sebelah PID caffeinate. Cek yang lebih sederhana, kalau Anda hanya perlu tahu prosesnya masih hidup, adalah ps aux | grep caffeinate.
Setiap pemanggilan caffeinate menahan assertion-nya sendiri secara independen, jadi menjalankan dua atau tiga sekaligus tidak masalah — Mac tetap terjaga selama salah satu di antaranya masih hidup, dan mematikan satu tidak melepas yang lain.
Panduan terkaitLidRun vs caffeinate: alat keep-awake mana yang cocok untuk workflow Anda?Di mana caffeinate berhenti: lid tertutup, baterai, dan suhu
Untuk tugas aslinya — memblokir idle sleep selama script, build, atau sesi terminal yang sedang Anda pantau — caffeinate melakukan persis apa yang dijanjikan, tanpa dependency dan tanpa langkah instalasi.
Batasannya muncul di sekitar pekerjaan dengan lid tertutup, dan di situlah persis AI coding agent dan dev workload sering bermasalah: refactor panjang di Claude Code, image Docker sedang di-build, model Ollama sedang di-download — semua hal yang orang ingin biarkan tetap berjalan dengan lid tertutup, di meja, di dalam tas di antara rapat, atau semalaman. Assertion caffeinate tidak mengalahkan sleep yang dipicu macOS saat lid ditutup; MacBook tetap tidur dengan lid tertutup meski caffeinate sedang berjalan, titik.
Ia juga tidak punya konsep level baterai atau suhu. Jalankan caffeinate -t 28800 untuk sesi delapan jam dengan baterai dan ia menahan assertion sepanjang waktu itu tidak peduli seberapa rendah baterainya, tanpa cara untuk menyadari Mac yang memanas di dalam tas lalu mundur.
Ia juga manual dan stateless — tidak ada deteksi apa yang sebenarnya sedang berjalan, tidak ada memori antar sesi. Anda harus mengetik ulang flag dan command target setiap kali.
Cara gratis menjaga MacBook tetap terjaga dengan lid tertutup
Cara yang didukung resmi oleh Apple sama sekali tidak butuh software tambahan: sambungkan external display, keyboard atau mouse eksternal, dan adaptor daya, maka MacBook tidak akan tidur saat lid ditutup. Inilah true clamshell mode, dan macOS menanganinya secara native begitu ketiganya tersambung — tidak perlu command line.
Tanpa external display — berjalan dengan baterai, lid tertutup, tanpa monitor — satu-satunya cara publik yang memblokir sleep saat lid tertutup adalah command yang sama sekali berbeda dari caffeinate: sudo pmset -a disablesleep 1. Cara ini berhasil, tapi ini tool yang lebih "berat" dibanding caffeinate. Ia butuh password admin, dan tidak seperti assertion caffeinate, ia tidak melepas dirinya sendiri saat sebuah proses berhenti — ini adalah pengaturan sistem yang persisten dan berlaku secara global, tetap aktif sampai Anda secara eksplisit menjalankan sudo pmset -a disablesleep 0 atau me-reboot Mac.
Di luar command line, beberapa aplikasi menu bar membungkus ide dasar yang sama dalam bentuk GUI. Amphetamine (gratis, Mac App Store) menambahkan trigger yang lebih kaya — peluncuran aplikasi, waktu tertentu, jaringan Wi-Fi, level baterai — di atas jenis assertion yang sama. KeepingYouAwake adalah front-end menu bar gratis dan open-source untuk hold bergaya caffeinate yang pada dasarnya sama. Lungo adalah toggle menu bar minimalis satu-klik dengan timer bawaan. Caffeine adalah toggle ikon cangkir kopi klasik yang menjadi asal nama seluruh kategori ini, dengan versi gratis maupun berbayar selama bertahun-tahun. Semuanya solid untuk satu tugas yang mereka rancang — toggle keep-awake manual on/off — dan tidak satu pun dirancang untuk menjawab "apakah pekerjaan sungguhan masih berjalan," "berapa sisa baterai," atau "apakah Mac ini terlalu panas," karena memang bukan itu fungsi sebuah toggle keep-awake.
Risiko dalam workaround manual
Flag disablesleep adalah bagian yang patut diwaspadai. Karena sifatnya global dan persisten, jika script atau sesi yang menyetelnya ke 1 crash — atau Anda sekadar lupa command reset-nya — Mac tidak akan tidur normal lagi, baik lid terbuka maupun tertutup, sampai seseorang menjalankan command 0 atau me-reboot-nya. Kalau tidak sengaja dibiarkan menyala semalaman, itu adalah battery drain nyata yang sebenarnya bisa dihindari, dan Mac yang tidak pernah mendapat istirahat sebagaimana mestinya sebuah laptop.
Menjalankan compute dengan lid tertutup juga menghilangkan sebagian jalur pendinginan normal Mac — aliran udara di sekitar keyboard dan hinge sebagian bergantung pada lid yang terbuka. Cara apa pun yang Anda pakai untuk menjaga Mac dengan lid tertutup tetap terjaga, pastikan tetap berventilasi — pakai stand, tas yang terbuka, jangan ditumpuk di bawah perangkat lain — daripada hanya mengandalkan software untuk mengelola suhu.
Tak satu pun dari opsi gratis di atas — caffeinate, flag disablesleep, atau toggle menu bar — terkait dengan apakah hal yang sebenarnya Anda pedulikan (build, agent, render) masih berjalan. Semuanya menahan Mac tetap terjaga berdasarkan timer atau toggle manual, artinya Anda harus terus mengawasinya, atau menanggung risiko Mac tetap terjaga, panas, dan menguras baterai jauh melewati titik pekerjaan itu sebenarnya sudah selesai.
Pola yang lebih aman untuk AI dan dev workload
Solusinya bukan trik pencegahan-sleep yang berbeda — melainkan memasangkan mekanisme yang sama dengan guardrail yang terikat pada apa yang sebenarnya terjadi di Mac, bukan pada timer. Closed-Lid mode LidRun memakai lever pmset -a disablesleep yang sama persis di baliknya, bukan private API — tapi ia selalu memasangkan 1 dengan 0 yang sepadan: saat stop, saat quit, dan direkonsiliasi lagi saat peluncuran berikutnya jika ditemukan sisa 1 yang tertinggal akibat crash. Itulah bedanya antara lever yang bisa dinyalakan siapa saja dengan lever yang tidak bisa tersangkut menyala tanpa sengaja.
Di atas itu, LidRun mendeteksi pekerjaan sungguhan secara otomatis alih-alih hanya mengandalkan timer sederhana: Claude Code, Cursor, Codex, Aider, Cline, Ollama, LM Studio, dan belasan coding agent serta local-model runner lain, plus proses dev pada umumnya. Ia menghitung kehadiran sebuah agent saja sebagai "sedang bekerja," karena coding agent yang menunggu respons API bisa berada di CPU mendekati nol di tengah tugasnya — cek penggunaan CPU biasa akan salah membaca jeda itu sebagai "selesai."
LidRun juga membatasi setiap sesi berdasarkan dua hal yang sepenuhnya diabaikan caffeinate. Battery auto-stop yang bisa dikonfigurasi, defaultnya 20%, mengakhiri sesi sebelum baterai turun ke level berbahaya, dan ada emergency floor yang tidak bisa dinegosiasikan — defaultnya 4%, bisa disesuaikan sampai 8% — yang memaksa Mac force-sleep untuk melindunginya apa pun pengaturan lain yang aktif. Thermal guard membaca suhu chip yang sebenarnya dan sinyal thermal-throttle CPU, bukan sekadar flag thermal sistem yang kasar seperti yang diandalkan kebanyakan tool kalau mereka melacak suhu sama sekali, dan otomatis menonaktifkan Closed-Lid mode kalau Mac benar-benar overheating. Ini bukan wake lock buta — keamanan menang di atas kenyamanan saat keduanya berbenturan.
Versi jujur dari pola ini singkat saja: agent sedang berjalan → tetap terjaga; agent selesai, atau Mac sudah tidak aman untuk terus berjalan → lepaskan dan biarkan tidur. Mode Keep Awake, Timer, dan Charging-only berjalan gratis selamanya, tanpa trial dan tanpa batas sesi. Dukungan Closed-Lid adalah bagian dari tier Pro berbayar, dengan beberapa kali percobaan Closed-Lid gratis sebelum Anda memutuskan.
LidRun menjaga pekerjaan Anda tetap jalan saat layar tertutup, dengan perlindungan baterai dan suhu bawaan.
Sudah punya LidRun? Baca panduan setup-nya →
Baru kenal LidRun? Lihat harga →
Sering ditanyakan
Tidak — assertion caffeinate tidak mengalahkan sleep yang dipicu macOS saat lid ditutup. MacBook tetap tidur dengan lid tertutup meski caffeinate sedang berjalan, kecuali sedang dalam true clamshell mode (external display, keyboard, dan power semuanya tersambung) atau disablesleep sudah diaktifkan lewat pmset.
Pakai flag -t dengan angka dalam detik, misalnya caffeinate -t 3600 untuk satu jam. caffeinate berhenti dan melepas assertion-nya secara otomatis begitu waktunya habis — tidak perlu Ctrl-C.
Bisa — bungkus command-nya langsung, seperti caffeinate -i npm run build. Mac tetap terjaga hanya selama command itu berjalan, dan assertion-nya lepas begitu prosesnya berhenti. caffeinate -w <pid> melakukan hal yang sama untuk proses yang tidak Anda mulai sendiri.
Jalankan pmset -g assertions untuk melihat setiap power assertion yang aktif beserta proses pemiliknya — cari PreventUserIdleSystemSleep di sebelah PID caffeinate. ps aux | grep caffeinate juga bisa dipakai, kalau Anda hanya perlu memastikan prosesnya masih hidup.
caffeinate hanya memblokir idle sleep, dan hanya selama prosesnya berjalan — ia tidak bisa mengalahkan sleep saat lid tertutup dan melepas dirinya sendiri secara otomatis saat berhenti. sudo pmset -a disablesleep 1 adalah lever berbeda yang lebih "berat," yang juga memblokir sleep saat clamshell (lid tertutup), tapi sifatnya global dan persisten: tetap menyala di seluruh sistem sampai Anda secara eksplisit menyetelnya kembali ke 0 atau reboot, sehingga mudah tidak sengaja terlupa dalam keadaan menyala.
Untuk sesi terminal singkat yang Anda pantau langsung, caffeinate memang sudah cukup. Untuk proses AI/dev yang closed-lid atau tanpa pengawasan, LidRun menambahkan lapisan deteksi agent otomatis dan dukungan Closed-Lid di atas ide dasar yang sama, dengan battery dan thermal auto-stop supaya Mac tidak tetap terjaga, panas, dan menguras baterai setelah pekerjaan sebenarnya sudah selesai.