Blog

Claude Code: batas perintah latar belakang 30 menit

Markdown

Claude Code menghentikan perintah latar belakang setelah 30 menit dalam proses tanpa pengawasan: -p, Agent SDK, CI, cloud. Cara menaikkan batas dan apa yang harus dilakukan setelah perintah berhenti.

Baca artikel lengkap

Claude Code menghentikan perintah latar belakang setelah 30 menit saat dijalankan tanpa pengawasan: peluncuran dengan flag -p, aplikasi Agent SDK, tugas CI, atau sesi cloud. Jika Claude menetapkan durasi untuk perintah itu sendiri, perintah akan berjalan paling lama 2 jam, sedangkan terminal biasa, aplikasi desktop, dan VS Code tidak memiliki batas sejak versi 2.1.288.

Dulu saya duduk di depan layar sepanjang hari: memberi agen satu langkah, melihat hasilnya, melakukan koreksi, lalu memintanya melanjutkan. Tahap demi tahap. Mesin mungkin yang menulis kode, tetapi saya yang mengarahkannya. Sekarang saya menulis rencana, membaginya menjadi beberapa tahap, menyerahkan implementasi kepada subagen semalaman, lalu pergi. Selama 8 jam tanpa saya, Claude mengerjakan rencana itu: mempelajari, membangun, dan menyempurnakan. Pagi harinya, saya lebih banyak menerima hasil kerja daripada mengerjakannya ulang.

Namun, jika proses semalaman menggunakan -p, berjalan terjadwal di server, di CI, atau di cloud, server pengembangan dan build yang berjalan di latar belakang akan bertahan selama 30 menit. Lalu Claude Code akan menghentikannya, dan pekerjaan semalaman akan terhenti di tengah jalan. Saya akan menjelaskan siapa yang terdampak batas ini, cara menaikkannya, dan apa yang harus dilakukan jika perintah sudah berhenti. Mari kita mulai.

Untuk bantuan menggunakan layanan ini, lihat dokumentasi Ailoot.

Poin utama

Sejak versi 2.1.285, Claude Code menghentikan sendiri perintah latar belakang saat mencapai batas waktu dan memberi tahu Claude alasannya. Sejak versi 2.1.288, batas ini hanya berlaku untuk proses tanpa pengawasan: -p, Agent SDK, CI, dan sesi cloud. Perintah yang langsung dimulai di latar belakang berjalan selama 30 menit atau selama durasi yang ditentukan, tetapi paling lama 2 jam. Perintah yang dipindahkan ke latar belakang setelah timeout berjalan selama 30 menit sejak saat itu. Anda dapat menaikkan batas dengan 2 variabel di file pengaturan ~/.claude/settings.json.

Siapa yang terdampak batas ini

Perintah latar belakang adalah perintah yang dimulai Claude dan dibiarkan tetap berjalan saat Claude sibuk mengerjakan hal lain. Misalnya, server pengembangan yang dimulai dengan npm run dev, atau build yang memantau perubahan file.

Dokumentasi Claude Code menyatakan:

Dalam sesi yang berjalan tanpa pengawasan, seperti proses dengan flag -p, aplikasi Agent SDK, tugas CI, atau sesi cloud, perintah Bash dan PowerShell di latar belakang memiliki batas waktu. Sesi lokal yang Anda gunakan melalui terminal, aplikasi desktop, atau ekstensi VS Code tidak memiliki batas waktu untuk perintah latar belakang.

Batas waktu memerlukan Claude Code v2.1.285 atau yang lebih baru. Sebelum v2.1.288, batas ini berlaku di setiap sesi.

— Anthropic, Referensi alat, https://code.claude.com/docs/en/tools-reference.md

Dengan kata lain, batas ini berlaku saat Anda tidak berada di sana: proses dengan -p, aplikasi Agent SDK, tugas CI, atau sesi cloud. Tidak ada batas di terminal, aplikasi desktop, atau VS Code saat Anda sendiri bekerja di dalam sesi. Batas ini diperkenalkan pada versi 2.1.285 dan berlaku di semua sesi sebelum versi 2.1.288.

Cara mengetahui apakah ini berlaku bagi Anda:

  • Anda membuka Claude Code di terminal atau VS Code, memberinya tugas, lalu pergi tidur. Tidak ada batas jika versinya 2.1.288 atau yang lebih baru. Pada versi 2.1.285 hingga 2.1.287, batas ini juga berlaku di sini. Saya menjelaskan cara memperbarui ke versi terbaru di artikel terpisah.
  • Claude Code dijalankan dengan claude -p "task" sesuai jadwal, dari aplikasi Agent SDK buatan Anda sendiri, atau di CI. Batas ini berlaku.
  • Tugas berjalan di sesi cloud. Batas ini berlaku.

Saat mengatur agen agar bekerja secara mandiri, saya menuliskan dalam prompt: “Tuliskan kondisi ini dan alasan penghentian ke dalam rencana kerja. Pastikan prosesnya tidak bergantung pada jendela yang akan saya tutup atau pada komputer itu sendiri.” Batas 30 menit adalah salah satu alasan tersebut.

Berapa lama perintah latar belakang berjalan

Hitung mundur dimulai saat perintah masuk ke latar belakang. Ada 2 kasus.

Claude langsung memulai perintah di latar belakang. Perintah mendapat waktu 30 menit. Jika Claude menentukan durasi saat memulainya (parameter timeout), perintah mendapat durasi tersebut, tetapi paling lama 2 jam.

Perintah belum selesai saat Claude menunggunya. Claude menunggu 2 menit untuk perintah biasa. Jika belum selesai, Claude Code tidak menghentikannya; perintah dipindahkan ke latar belakang. Sejak saat itu, perintah memiliki waktu 30 menit.

Saat waktunya habis, Claude Code menghentikan perintah dan memberi tahu Claude:

Background command "<description>" was stopped after reaching its background time limit

Jika pekerjaan belum selesai, Claude dapat menjalankan kembali perintah itu dengan durasi lebih lama.

Satu hal lagi tentang -p. Pada jenis proses ini, perintah latar belakang berhenti kira-kira 5 detik setelah jawaban akhir Claude. Server yang dimulai dalam proses semalaman dengan -p hanya akan bertahan selama proses itu sendiri. Batas 30 menit berpengaruh jika proses berlangsung lebih lama: Claude memulai server di awal, lalu menghabiskan satu jam menjalankan pemeriksaan terhadapnya.

Cara mengatur pekerjaan semalaman di Claude Code

Saya lelah mengarahkan agen sepanjang hari, jadi saya menggantinya dengan satu prompt orkestrator. Saya memulainya pada malam hari, lalu Claude bekerja sepanjang malam, mengerjakan tahapan secara berurutan: menulis, memeriksa, memperbaiki, dan melakukan commit sendiri.

Kelompok subagen menulis kode, masing-masing dengan file sendiri agar tidak saling mengganggu. Kelompok lain yang baru menerima hasilnya: meninjau kode, melakukan pemeriksaan keamanan, dan pemeriksaan langsung. Jika mereka menemukan masalah, masalah itu langsung diperbaiki dan pemeriksaan dijalankan lagi. Prompt-nya mencakup kalimat: “Jika konteks Anda habis, catat statusnya; proses berikutnya akan melanjutkan.”

Dalam contoh yang dijelaskan, selama 3 hari, 8 dari 14 tahap diselesaikan dengan cara ini.

Ada 2 hal yang perlu diingat. Orkestrator tidak menggantikan pemikiran Anda: pertama, tulis rencana terperinci dengan tahapan, lalu mulai giliran kerja semalaman. Selain itu, proses ini menghabiskan banyak jatah langganan Anda, jadi tidak banyak gunanya menyiapkannya untuk tugas kecil. Selalu batasi jumlah percobaan, atau agen akan menghabiskan seluruh jatah langganan Anda semalaman. Saya menjelaskan cara menetapkan batas pengeluaran ini di artikel terpisah.

Cara menaikkan batas

Opsi 1: minta Claude. Claude memilih durasi untuk perintah tertentu; Anda tidak menetapkannya sendiri. Namun, Anda dapat menulis dalam tugas: “Jaga server pengembangan tetap berjalan di latar belakang selama 2 jam.” Dengan cara ini, Anda tidak dapat memperoleh durasi lebih dari 2 jam.

Opsi 2: variabel di file pengaturan. Nilainya dalam milidetik. Anda tidak dapat menurunkan batas di bawah 30 menit dan 2 jam; Anda hanya dapat menaikkannya.

  • BASH_DEFAULT_TIMEOUT_MS yang disetel di atas 1800000 (30 menit) mengubah batas bawaan 30 menit. Ini berlaku untuk perintah yang dimulai Claude di latar belakang tanpa menetapkan durasi dan untuk perintah yang dipindahkan ke latar belakang setelah timeout. Jika Anda menyetelnya di atas 7200000 (2 jam), batas maksimumnya juga naik.
  • BASH_MAX_TIMEOUT_MS yang disetel di atas 7200000 menaikkan batas maksimum 2 jam. Variabel ini tidak mengubah batas bawaan 30 menit: perintah tanpa durasi yang ditentukan sendiri tetap akan berhenti setelah 30 menit.

BASH_DEFAULT_TIMEOUT_MS memiliki efek samping. Variabel yang sama menentukan berapa lama Claude menunggu perintah biasa sebelum memindahkannya ke latar belakang. Setel ke 1 jam, dan Claude akan menunggu 1 jam, bukan 2 menit. Hal itu tidak mengganggu pekerjaan semalaman. Pada siang hari, Anda akan menunggu lebih lama untuk mendapat respons saat perintah berjalan lama.

Jika Anda tidak ingin mengutak-atik detailnya: jika Anda memerlukan 3 jam untuk perintah biasa sekaligus batas maksimum, setel BASH_DEFAULT_TIMEOUT_MS ke 10800000. Itu sudah cukup; Anda tidak memerlukan variabel kedua.

File pengaturan berada di folder .claude di direktori home Anda: ~/.claude/settings.json di macOS dan Linux, serta %USERPROFILE%\.claude\settings.json di Windows. Jika file itu belum ada, buatlah. Batas 1 jam terlihat seperti ini:

{
  "env": {
    "BASH_DEFAULT_TIMEOUT_MS": "3600000"
  }
}

Jika file itu sudah memiliki blok env, tambahkan baris tersebut ke dalamnya. Sesi yang sedang berjalan akan menggunakan nilai baru saat Anda menyimpan file. Penghapusan variabel baru berlaku saat Anda memulai claude lagi.

File tersebut harus berada di mesin tempat agen berjalan. Agar agen bekerja semalaman, komputer tidak boleh masuk mode tidur. Sebagai alternatif, jalankan Claude Code di server jarak jauh dan letakkan pengaturannya di sana.

Jika perintah sudah berhenti

Anda tidak perlu melakukan apa pun secara manual. Claude Code memberi tahu Claude alasan suatu perintah berhenti, jadi pertama-tama cukup tanyakan apa yang terjadi.

Lalu lanjutkan langkah demi langkah:

  1. Proses satu kali yang panjang, hingga 2 jam. Minta Claude menjalankan kembali perintah dengan durasi lebih lama.
  2. Perintah sering memerlukan lebih dari 30 menit. Setel BASH_DEFAULT_TIMEOUT_MS di atas 1800000 di file pengaturan, seperti pada contoh di atas. Jika Anda memerlukan lebih dari 2 jam, setel juga BASH_MAX_TIMEOUT_MS di atas 7200000 di sana.
  3. Jalankan perintah lagi. Dokumentasi tidak menjanjikan apa pun tentang perintah yang sudah berjalan di latar belakang sebelum perubahan dilakukan.
  4. Periksa hasil proses berikutnya. Jika laporan Claude kembali memuat frasa “stopped after reaching its background time limit,” pengaturan itu tidak berlaku untuk perintah tersebut.

Subagen dan rutinitaslah yang membuat agen tetap bekerja saat Anda pergi.

Saya menjelaskan cara menjalankan agen dalam loop sepanjang malam di artikel terpisah. Dan cara mengonfigurasi Claude Code agar tidak merusak proyek semalaman dijelaskan di sini.

Periksa langkah mana yang menghentikan proses semalaman Anda, lalu bandingkan alasannya dengan batas-batas di atas.

Sumber

  • Claude Code: Referensi alat - tempat batas ini berlaku, versi 2.1.285 dan 2.1.288, 30 menit dan 2 jam, memindahkan perintah ke latar belakang setelah timeout, teks pemberitahuan, serta variabel BASH_DEFAULT_TIMEOUT_MS dan BASH_MAX_TIMEOUT_MS.
  • Claude Code: Variabel lingkungan - durasi bawaan 2 menit untuk perintah biasa, blok env di ~/.claude/settings.json, dan kapan sesi menggunakan nilai baru.
  • Claude Code: Headless - proses dengan -p; perintah latar belakang berhenti kira-kira 5 detik setelah jawaban akhir.
  • Claude Code: Pengaturan - lokasi ~/.claude/settings.json di Windows.

Kenali Ailoot.

Rincian selengkapnya

Pertanyaan tentang Claude Code: batas perintah latar belakang 30 menit

Apakah membiarkan sesi interaktif semalaman memicu batas 30 menit?

Pada Claude Code 2.1.288 atau lebih baru, batas artikel berlaku pada proses tanpa pengawasan seperti -p, Agent SDK, CI, dan sesi cloud. Membiarkan sesi interaktif lokal biasa terbuka saja tidak memasukkannya dalam kategori itu.

Apakah timeout lebih besar membuat server tetap hidup setelah proses -p selesai?

Tidak. Perintah latar belakang pada proses -p berakhir segera setelah respons terakhir. Perubahan timeout memengaruhi durasi perintah selama proses; itu tidak mengubah proses menjadi hosting persisten.

Semua artikel