Jalankan prompt sesuai jadwal
Gunakan /loop dan alat penjadwalan cron untuk menjalankan prompt berulang kali, polling status, atau mengatur pengingat sekali jalan dalam sesi Claude Code.
Tugas terjadwal yang bersifat session-scoped memungkinkan Claude menjalankan kembali prompt secara otomatis pada interval tertentu dalam sesi Claude Code. Gunakan untuk polling deployment, mengawasi PR, memeriksa build yang berjalan lama, atau mengingatkan diri sendiri untuk melakukan sesuatu nanti dalam sesi.
[!NOTE]
Kasus-kasus berikut dibahas di halaman lain:
Tugas bersifat session-scoped. Saat Anda melanjutkan dengan --resume atau --continue, Claude Code memulihkan tugas yang belum kedaluwarsa, kecuali yang tercantum di bawah Limitations. Untuk penjadwalan yang bertahan secara independen dari sesi apa pun, buat tugas terjadwal cloud, atur tugas terjadwal Desktop, atau gunakan GitHub Actions.
Bandingkan opsi penjadwalan
Claude Code menawarkan tiga cara untuk menjadwalkan pekerjaan berulang atau sekali jalan:
| Cloud | Desktop | /loop |
|
|---|---|---|---|
| Berjalan di | Cloud, dikelola Anthropic secara default | Mesin Anda | Mesin Anda |
| Memerlukan mesin aktif | Tidak | Ya | Ya |
| Memerlukan sesi terbuka | Tidak | Tidak | Ya |
| Persisten di seluruh restart | Ya | Ya | Dipulihkan pada --resume, dengan pengecualian |
| Akses ke file lokal | Tidak (klon segar) | Ya | Ya |
| Server MCP | Konektor dikonfigurasi per tugas | File konfigurasi dan konektor | Mewarisi dari sesi |
| Permintaan izin | Auto mode secara default | Dapat dikonfigurasi per tugas | Mewarisi dari sesi |
| Jadwal yang dapat disesuaikan | Ya | Ya | Ya |
| Interval minimum | 1 jam | 1 menit jika diatur oleh Claude, 1 jam di formulir | 1 menit |
[!TIP]
Gunakan tugas cloud untuk pekerjaan yang harus berjalan dengan andal tanpa mesin Anda. Gunakan tugas Desktop ketika Anda memerlukan akses ke file dan alat lokal. Gunakan
/loopuntuk polling cepat selama sesi.
Jalankan prompt berulang dengan /loop
Skill /loop bundled skill adalah cara tercepat untuk menjalankan prompt berulang sementara sesi tetap terbuka. Baik interval maupun prompt bersifat opsional, dan apa yang Anda berikan menentukan bagaimana loop berperilaku.
| Apa yang Anda berikan | Contoh | Apa yang terjadi |
|---|---|---|
| Interval dan prompt | /loop 5m check the deploy |
Prompt Anda berjalan pada jadwal tetap |
| Hanya prompt | /loop check the deploy |
Prompt Anda berjalan pada interval yang dipilih Claude setiap iterasi |
| Hanya interval, atau tidak ada apa-apa | /loop |
Prompt pemeliharaan bawaan berjalan, atau loop.md Anda jika ada |
Anda juga dapat melewatkan skill sebagai prompt, misalnya /loop 20m /review-pr 1234, untuk menjalankan kembali skill tersebut setiap iterasi. Penjadwalan yang terpicu hanya menjalankan skill yang Claude diizinkan untuk memanggil sendiri. Berikut ini mencapai Claude sebagai teks biasa daripada dieksekusi:
- Perintah bawaan seperti
/permissions,/model, atau/clear - Skill yang ditandai
disable-model-invocation: true, termasuk skill bundled/verify - Skill yang ditahan dari Claude oleh pengaturan
skillOverridesatau aturan denySkill - MCP prompts seperti
/mcp__github__list_prs
Jalankan pada interval tetap
Ketika Anda memberikan interval, Claude mengonversinya ke ekspresi cron, menjadwalkan job, dan mengonfirmasi cadence dan ID job.
/loop 5m check if the deployment finished and tell me what happened
Interval dapat memimpin prompt sebagai token bare seperti 30m, atau mengikutinya sebagai klausa seperti every 2 hours. Unit yang didukung adalah s untuk detik, m untuk menit, h untuk jam, dan d untuk hari.
Detik dibulatkan ke menit terdekat karena cron memiliki granularitas satu menit. Interval yang tidak memetakan ke langkah cron yang bersih, seperti 7m atau 90m, dibulatkan ke interval terdekat yang bersih dan Claude memberi tahu Anda apa yang dipilihnya.
Biarkan Claude memilih interval
Ketika Anda menghilangkan interval, Claude memilih satu secara dinamis daripada berjalan pada jadwal cron tetap. Setelah setiap iterasi, Claude memilih penundaan antara satu menit dan satu jam berdasarkan apa yang diamatinya: menunggu pendek saat build selesai atau PR aktif, menunggu lebih lama ketika tidak ada yang tertunda. Penundaan yang dipilih dan alasan untuk itu dicetak di akhir setiap iterasi.
Contoh di bawah memeriksa CI dan komentar review, dengan Claude menunggu lebih lama di antara iterasi setelah PR menjadi tenang:
/loop check whether CI passed and address any review comments
Dalam sesi di mana Monitor tool tersedia, Claude dapat menggunakannya secara langsung ketika Anda meminta jadwal /loop dinamis. Monitor menjalankan skrip latar belakang dan mengalirkan setiap baris output kembali, yang menghindari polling sama sekali dan sering lebih efisien token dan responsif daripada menjalankan kembali prompt pada interval.
Loop yang dijadwalkan secara dinamis muncul dalam daftar tugas terjadwal Anda seperti tugas lainnya, jadi Anda dapat membuat daftar atau membatalkannya dengan cara yang sama. Daftar tersebut menampilkan wakeup yang tertunda sebagai tugas sekali jalan, sehingga wakeup yang dijadwalkan untuk :00 atau :30 dapat berjalan sedikit lebih awal. Kedaluwarsa tujuh hari juga berlaku untuk loop tersebut.
[!NOTE]
Interval yang dipilih secara dinamis dan prompt pemeliharaan bawaan bekerja di setiap provider, dan dengan feature-flag fetching dimatikan. Di Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform, dan Microsoft Foundry, atau dengan fetching dimatikan, keduanya memerlukan Claude Code v2.1.248 atau lebih baru.
Jalankan prompt pemeliharaan bawaan
Ketika Anda menghilangkan prompt, Claude menggunakan prompt pemeliharaan bawaan daripada yang Anda berikan. Pada setiap iterasi, Claude bekerja melalui hal-hal berikut, secara berurutan:
- lanjutkan pekerjaan yang belum selesai dari percakapan
- urus pull request cabang saat ini: komentar review, CI runs yang gagal, merge conflicts
- jalankan pass pembersihan seperti bug hunts atau simplification ketika tidak ada yang tertunda
Setiap run melewati pemeriksaan izin sesi Anda sebelum melakukan push atau menghapus apa pun.
Bare /loop menjalankan prompt ini pada interval yang dipilih secara dinamis:
/loop
Tambahkan interval, misalnya /loop 15m, untuk menjalankannya pada jadwal tetap sebagai gantinya. Untuk mengganti prompt bawaan dengan prompt default Anda sendiri, lihat Sesuaikan prompt default dengan loop.md.
Sesuaikan prompt default dengan loop.md
Buat file loop.md untuk mengganti prompt pemeliharaan bawaan dengan instruksi Anda sendiri. File ini mendefinisikan satu prompt default tunggal untuk bare /loop, bukan daftar tugas terjadwal terpisah, dan Claude Code mengabaikannya setiap kali Anda memberikan prompt pada baris perintah. Untuk menjadwalkan prompt tambahan bersama dengannya, gunakan /loop <prompt> atau minta Claude secara langsung.
Claude mencari file di dua lokasi dan menggunakan yang pertama ditemukannya.
| Path | Scope |
|---|---|
.claude/loop.md |
Project-level. Mengambil prioritas ketika kedua file ada. |
~/.claude/loop.md |
User-level. Berlaku di proyek apa pun yang tidak mendefinisikan miliknya sendiri. |
File adalah Markdown biasa tanpa struktur yang diperlukan. Tulislah seolah-olah Anda mengetik prompt /loop secara langsung. Contoh berikut menjaga cabang rilis tetap sehat:
Check the `release/next` PR. If CI is red, pull the failing job log,
diagnose, and push a minimal fix. If new review comments have arrived,
address each one and resolve the thread. If everything is green and
quiet, say so in one line.
Edit ke loop.md berlaku pada iterasi berikutnya, jadi Anda dapat menyempurnakan instruksi saat loop berjalan. Ketika tidak ada loop.md yang ada di lokasi mana pun, loop kembali ke prompt pemeliharaan bawaan. Jaga file tetap ringkas: konten di luar 25.000 byte dipotong.
Hentikan loop
- Loop self-paced: saat loop menunggu iterasi berikutnya, tekan
Escuntuk menghentikannya. Anda juga dapat menghentikannya denganCtrl+Csaat Claude sedang idle, kecuali di sesi latar belakang yang Anda lampirkan. PemberitahuanPending wakeup cancelledmengonfirmasi bahwa loop tidak akan terpicu lagi. - Loop interval tetap: untuk menghentikan loop seperti
/loop 5m, minta Claude untuk membatalkannya, misalnyacancel the deploy check loop.EscdanCtrl+Ctidak menghentikannya, maupun tugas apa pun yang Anda jadwalkan dengan meminta Claude secara langsung. Loop yang tidak Anda batalkan berakhir ketika tujuh hari berlalu.
Dalam mode self-paced, Claude juga dapat mengakhiri loop dengan sendirinya setelah tugas selesai. Claude memanggil tool ScheduleWakeup dengan stop: true, yang membatalkan wakeup yang tertunda segera. Jika iterasi berakhir tanpa menjadwalkan ulang atau menghentikan, Claude Code menjadwalkan satu wakeup fallback sekitar 20 menit kemudian dan mengakhiri loop ketika iterasi itu tidak menjadwalkan ulang juga.
Lepaskan tanpa menghentikan loop
Ketika Anda terlampir ke sesi latar belakang dan Claude sedang idle, tekan Ctrl+C dua kali pada prompt kosong untuk melepaskan diri. Loop self-paced yang sedang menunggu iterasi berikutnya di sana tetap berjalan, dan iterasi tersebut dimulai sesuai jadwal. Untuk menghentikan loop sebagai gantinya, tekan Esc sebelum Anda melepaskan diri. Melepaskan diri dengan Ctrl+C tanpa menghentikan loop memerlukan Claude Code v2.1.295 atau lebih baru.
Atur pengingat sekali jalan
Untuk pengingat sekali jalan, jelaskan apa yang Anda inginkan dalam bahasa alami daripada menggunakan /loop. Claude menjadwalkan tugas single-fire yang menghapus dirinya sendiri setelah berjalan.
remind me at 3pm to push the release branch
in 45 minutes, check whether the integration tests passed
Claude menyematkan waktu berjalan ke menit dan jam tertentu menggunakan ekspresi cron dan mengonfirmasi kapan akan berjalan.
Kelola tugas terjadwal dengan cakupan sesi
Minta Claude dalam bahasa alami untuk membuat daftar atau membatalkan tugas, atau referensikan alat yang mendasarinya secara langsung.
what scheduled tasks do I have?
cancel the deploy check job
Ini adalah alat yang mendasari yang digunakan Claude:
| Alat | Tujuan |
|---|---|
CronCreate |
Jadwalkan tugas baru. Menerima ekspresi cron 5-field, prompt untuk dijalankan, dan apakah itu berulang atau berjalan sekali. |
CronList |
Buat daftar tugas terjadwal dengan ID, jadwal, waktu jalan berikutnya, dan prompt mereka. |
CronDelete |
Batalkan tugas berdasarkan ID. |
Setiap tugas terjadwal memiliki ID 8-karakter yang dapat Anda berikan ke CronDelete. Sesi dapat menampung hingga 50 tugas terjadwal sekaligus.
Bagaimana tugas terjadwal cakupan sesi berjalan
Penjadwal memeriksa setiap detik untuk tugas yang jatuh tempo dan memasukkannya ke antrian dengan prioritas rendah. Prompt terjadwal berjalan di antara giliran Anda, bukan saat Claude sedang merespons. Jika Claude sibuk saat tugas jatuh tempo, prompt menunggu sampai giliran saat ini berakhir.
Semua waktu ditafsirkan dalam zona waktu lokal Anda. Ekspresi cron seperti 0 9 * * * berarti 9am di mana pun Anda menjalankan Claude Code, bukan UTC.
Jitter
Tugas terjadwal dapat berjalan pada waktu yang berbeda dari yang tertera pada jadwalnya. Jika tugas setiap sesi berjalan tepat sesuai jadwal, banyak di antaranya akan memanggil API pada saat yang sama, sehingga Claude Code menggeser waktu berjalan setiap tugas. Tugas berulang berjalan terlambat, kecuali tugas yang berjalan setiap lima menit, yang ditulis */5 * * * *. Tugas sekali jalan yang dijadwalkan tepat pada jam atau setengah jam berjalan sedikit lebih awal.
Untuk melihat kapan tugas berikutnya jatuh tempo, baca baris di bawah panggilan CronCreate Claude di terminal Anda. Baris tersebut menampilkan waktu itu setelah jadwal, misalnya next run 10:21 AM. Untuk memeriksanya lagi nanti, minta Claude untuk menampilkan daftar tugas Anda dan cari next run pada baris-baris di bawah panggilan CronList. Waktu berjalan berikutnya pada baris-baris ini memerlukan Claude Code v2.1.299 atau yang lebih baru.
Seberapa terlambat tugas berulang berjalan
Kecuali jika berjalan setiap lima menit, tugas berulang memulai setiap kali berjalan dengan keterlambatan hingga setengah dari jarak ke waktu berjalan berikutnya, dan paling lama 30 menit. Tugas Anda termasuk salah satu dari tiga kasus berikut:
- Waktu berjalan dengan jarak merata: tugas dengan jarak yang sama, seperti setiap jam, harian, atau setiap 10 menit, berjalan terlambat dengan jumlah menit yang sama setiap kali, termasuk saat sesi sedang idle.
- Waktu berjalan dengan jarak tidak merata: tugas dengan jarak yang tidak sama, seperti tugas yang dijadwalkan pada
:00dan:15setiap jam, dapat berjalan terlambat dengan jumlah menit yang berbeda pada masing-masing waktu. - Setiap lima menit: tugas yang ditulis
*/5 * * * *tidak ditunda. Waktu berjalan yang tepat lima menit setelah waktu berjalan terakhir akan dimulai setelah prompt cache lima menit kedaluwarsa, sehingga setiap kali berjalan dimulai 15 detik lebih awal.
Temukan jadwal Anda di kolom pertama tabel ini untuk melihat kapan setiap waktu berjalannya dimulai.
| Jadwal | Kapan setiap waktu berjalan dimulai |
|---|---|
Setiap 5 menit, ditulis */5 * * * *, yang dibuat oleh /loop 5m |
4 menit 45 detik setelah waktu berjalan sebelumnya |
| Setiap 10 menit | Terlambat 0 hingga 5 menit |
| Setiap 30 menit | Terlambat 0 hingga 15 menit |
| Setiap jam, atau lebih jarang seperti harian | Terlambat 0 hingga 30 menit |
Misalnya, 7,37 * * * * menjadwalkan tugas pada :07 dan :37, yang berjarak 30 menit, sehingga penundaannya berada di antara 0 dan 15 menit. Jika penundaan tugas ini adalah 14 menit, tugas berjalan pada :21 dan :51 setiap jam. Mengubah jadwal ke menit yang berbeda akan memindahkan waktu berjalan, dan penundaan tetap ditambahkan di atasnya.
Kapan tugas sekali jalan berjalan lebih awal
Tugas sekali jalan yang dijadwalkan pada :00 atau :30 berjalan hingga 90 detik lebih awal. Claude Code tidak menggeser tugas sekali jalan yang dijadwalkan pada menit lainnya, jadi jika ketepatan waktu penting, jadwalkan di luar jam tepat dan setengah jam: 3 9 * * * alih-alih 0 9 * * *.
Kedaluwarsa tujuh hari
Tugas berulang secara otomatis kedaluwarsa 7 hari setelah pembuatan. Tugas berjalan satu kali terakhir, kemudian menghapus dirinya sendiri. Ini membatasi berapa lama loop yang terlupakan dapat berjalan. Jika Anda memerlukan tugas berulang untuk bertahan lebih lama, batalkan dan buat ulang sebelum kedaluwarsa, atau gunakan tugas terjadwal cloud atau tugas terjadwal Desktop untuk penjadwalan yang tahan lama.
Referensi ekspresi cron
CronCreate menerima ekspresi cron standar 5-field: minute hour day-of-month month day-of-week. Semua field mendukung wildcard (*), nilai tunggal (5), langkah (*/15), rentang (1-5), dan daftar yang dipisahkan koma (1,15,30).
| Contoh | Arti |
|---|---|
*/5 * * * * |
Setiap 5 menit |
0 * * * * |
Setiap jam pada jam |
7 * * * * |
Setiap jam pada 7 menit lewat |
0 9 * * * |
Setiap hari pada jam 9 pagi lokal |
0 9 * * 1-5 |
Hari kerja pada jam 9 pagi lokal |
30 14 15 3 * |
15 Maret pada jam 2:30 sore lokal |
Day-of-week menggunakan 0 atau 7 untuk Minggu hingga 6 untuk Sabtu. Sintaks yang diperluas seperti L, W, ?, dan alias nama seperti MON atau JAN tidak didukung.
Ketika day-of-month dan day-of-week keduanya dibatasi, tanggal cocok jika salah satu field cocok. Ini mengikuti semantik vixie-cron standar.
Nonaktifkan tugas terjadwal dengan cakupan sesi
Atur CLAUDE_CODE_DISABLE_CRON=1 di lingkungan Anda untuk menonaktifkan penjadwal sepenuhnya. CronCreate dan /loop menjadi tidak tersedia, dan tugas yang sudah terjadwal berhenti berjalan. Selama file .claude/scheduled_tasks.json milik proyek masih berisi tugas, CronList dan CronDelete tetap tersedia, sehingga Anda masih dapat meminta Claude untuk menampilkan daftar atau membatalkannya. Lihat Environment variables untuk daftar lengkap flag disable.
Keterbatasan
Penjadwalan session-scoped memiliki batasan yang melekat:
- Tugas hanya berjalan saat Claude Code berjalan dan idle. Menutup terminal atau membiarkan sesi keluar menghentikan semuanya. Backgrounding sesi membawa tugas
/loopke sesi latar belakang, yang terus berjalan tanpa terminal. - Tidak ada catch-up untuk fire yang terlewat. Jika waktu terjadwal tugas berlalu saat Claude sibuk dengan permintaan yang berjalan lama, itu berjalan sekali saat Claude menjadi idle, bukan sekali per interval yang terlewat.
- Dalam sesi latar belakang, sebuah loop yang berjalan sendiri berhenti jika waktu bangun berikutnya tiba saat proses sesi tidak berjalan, misalnya setelah crash. Saat proses dimulai lagi, transkrip menampilkan pemberitahuan bahwa wakeup tidak akan berjalan. Untuk melanjutkan loop, balas ke sesi dan minta Claude untuk tetap menjalankannya.
- Saat Anda melanjutkan sesi dengan
claude --resumeatauclaude --continue, Claude Code memulihkan tugas yang dijadwalkan denganCronCreate, kecuali tugas berulang yang telah kedaluwarsa dan tugas sekali jalan yang waktu terjadwalnya telah berlalu. Sebuah/loopyang berjalan sendiri tidak dipulihkan, jadi jalankan/looplagi untuk memulainya kembali. - Tugas berulang yang dipulihkan tidak berjalan untuk eksekusi yang terlewat selama sesi tidak berjalan. Eksekusi berikutnya adalah yang pertama jatuh tempo setelah Anda melanjutkan, dan jitter berlaku untuk eksekusi tersebut.
- Saat Anda melanjutkan dengan
claude --resumeatauclaude --continue, Claude Code tidak memulai ulang perintah Bash latar belakang dan monitor yang sedang berjalan saat sesi berakhir. Jika Anda masih membutuhkannya, minta Claude untuk memulainya lagi. - Dengan feature-flag fetching off, Claude Code menyimpan tugas yang Anda minta untuk disimpan di seluruh sesi dalam file
.claude/scheduled_tasks.jsonproyek. Ketika direktori.claudeatau file tersebut adalah symlink, Claude Code mengembalikan error alih-alih menjadwalkan tugas. Tugas yang disimpan hanya berjalan di folder proyek tempat Anda membuatnya. Jika Anda menyalin file ke folder lain, seperti worktree baru, sesi di sana menampilkan tugas yang disalin tetapi tidak menjalankannya, jadi buat tugas lagi di folder tersebut.
Untuk otomasi yang didorong cron yang perlu berjalan tanpa pengawasan:
- Tugas terjadwal cloud: berjalan di cloud pada jadwal, melalui panggilan API, atau pada peristiwa GitHub
- GitHub Actions: gunakan trigger
scheduledalam CI - Desktop scheduled tasks: berjalan secara lokal di mesin Anda