AI & Tech

Codex CLI Jalankan Daemon Latar Otomatis Sejak v0.157.0, Ini Cara Mematikannya

Codex CLI Jalankan Daemon Latar Otomatis Sejak v0.157.0, Ini Cara Mematikannya

Codex CLI menjalankan daemon latar otomatis sejak versi 0.157.0 yang rilis 25 September 2026, dan fitur itu masih aktif di versi terbaru 0.162.1 yang terbit 9 Oktober. Setiap sesi interaktif yang memenuhi syarat akan menyalakan app server yang tetap hidup setelah semua jendela Codex ditutup, menyalin paket platform ke direktori kerja sendiri, lalu menjalankan updater mandiri yang memeriksa rilis baru tiap jam. Saklar untuk mematikannya, daemon_auto_start, ada di config.toml tetapi tidak tercantum di dokumentasi resmi konfigurasi Codex.

TL;DR

  • Codex CLI v0.157.0 (25 September 2026) menyalakan background app server sebagai default stabil untuk sesi interaktif, dan v0.162.1 (9 Oktober 2026) masih membawanya.
  • Daemon menyalin paket platform, sekitar 374 MB menurut pelapor issue, ke folder packages/app-server-daemon sehingga versi server tidak lagi sama dengan versi yang dipasang package manager.
  • Updater bawaan memeriksa rilis baru 5 menit setelah start lalu tiap jam, dan memperbarui daemon bisa memutus pekerjaan yang sedang atau sedang antre.
  • Saklar resminya daemon_auto_start = false di bawah bagian features pada config.toml, tetapi kunci ini tidak ada di configuration reference resmi.
  • Issue permintaan agar fitur ini opt-in sudah dibuka sejak 22 Juli 2026 dan masih berstatus open.

Apa yang sebenarnya dijalankan Codex CLI sejak v0.157.0?

Ada empat perilaku yang berjalan bersamaan. Pertama, membuka sesi interaktif menyalakan background app server yang tetap berjalan setelah semua jendela Codex ditutup. Kedua, CLI menyalin seluruh paket platform ke direktori rilis di bawah folder home Codex dan menjalankan daemon dari salinan itu, sehingga versi server yang berjalan tidak lagi mengikuti versi yang dipasang package manager. Ketiga, ada updater terpisah yang memeriksa rilis baru dan me-restart server. Keempat, daemon mewarisi variabel lingkungan, termasuk variabel proxy, dari sesi yang pertama kali menyalakannya.

Menurut pelapor di issue GitHub, pada instalasi lewat npm di WSL2 keempat perilaku itu muncul sekaligus. Salinan paket yang dibuat berukuran sekitar 374 MB, dan karena daemon berjalan dari salinan itu, ia bisa berbeda versi dari CLI yang kamu panggil di terminal. Ini yang membuat beberapa pengguna menyebut v0.157.0 bukan sekadar pembaruan CLI, melainkan perubahan pada software apa yang berjalan di mesin mereka.

README daemon di tag 0.162.1 mengonfirmasi dua perilaku sebagai desain, bukan kebetulan. Dokumentasi itu menyebut klien yang berbagi daemon memakai lingkungan yang diwarisi saat daemon dinyalakan, dan isolasi lingkungan per klien memang tidak disediakan. Dokumen yang sama juga menyatakan daemon yang memenuhi syarat memeriksa pembaruan 5 menit setelah start lalu tiap jam, dan bahwa pembaruan akan me-restart daemon sehingga pekerjaan aktif atau yang mengantre bisa terputus.

Kenapa daemon ini dianggap masalah?

Karena ia mengubah model keamanan dan pemeliharaan sebuah tool CLI. Tool CLI biasanya hanya berjalan saat kamu memanggilnya, jadi versi, izin, dan variabel lingkungannya berhenti ketika prosesnya berhenti. Daemon menghapus sifat itu: ada proses yang tetap hidup, memperbarui dirinya sendiri, dan memakai konfigurasi jaringan yang tersimpan, bukan opsi yang kamu berikan di baris perintah.

Masalah kedua soal pengelolaan versi. Kalau kamu memasang Codex lewat package manager untuk memastikan versi yang terkunci dan teruji, daemon yang menyalin paketnya sendiri lalu memperbarui diri akan melewati kontrol itu. Tim yang menggelar tool ke banyak mesin kehilangan satu jaminan penting: bahwa yang berjalan di mesin itu persis versi yang mereka setujui.

Masalah ketiga soal kebersihan lingkungan. Laporan lanjutan yang menyasar versi 0.162.1 menyebut daemon membocorkan variabel lingkungan antar sesi, dan README memang mengakui tidak ada isolasi per klien. Kalau satu sesi memuat token atau kredensial di variabel lingkungan, sesi lain yang memakai daemon yang sama bisa ikut melihatnya.

Bagaimana cara mematikan daemon-nya?

Saklar utamanya satu baris di config.toml. Tambahkan bagian features lalu setel daemon_auto_start ke false. Skema konfigurasi di repositori menerima kunci ini, dan seorang komentator di issue mengonfirmasi bahwa caranya bekerja di Windows. Hanya saja, halaman configuration reference resmi tidak memuat entri daemon_auto_start sama sekali, padahal di sana masih terdokumentasi kunci check_for_update_on_startup yang tidak pernah dibaca kode crate daemon.

[features]
daemon_auto_start = false

Mematikan auto-start saja belum membersihkan mesin yang sudah kena. Perintah codex app-server daemon stop memang menghentikan server, tetapi meninggalkan proses updater tetap hidup, dan menurut pelapor, updater itu harus dimatikan manual. Alasannya ada di kode: perintah stop hanya menghentikan proses app-server, sedangkan updater adalah loop terpisah yang tidak memeriksa apakah server yang ia perbarui masih berjalan.

Untuk mematikan updater secara permanen, setel updater.autoUpdateEnabled ke false di berkas settings.json di dalam folder app-server-daemon pada home Codex. Setelah itu, updater akan menghapus dirinya sendiri pada siklus pemeriksaan berikutnya, yang dengan jadwal default bisa berarti sampai satu jam kemudian. Kalau perlu segera, matikan prosesnya sekalian dengan sinyal terminasi.

Ada juga cara sekali pakai: jalankan Codex dengan flag no-daemon agar sesi itu tidak menyalakan daemon. Flag ini berguna untuk skrip dan otomasi yang tidak ingin meninggalkan proses latar, tetapi ia tidak mengubah preferensi permanen, jadi sesi interaktif berikutnya tetap menyalakan daemon kalau saklar di config.toml belum diubah.

Apa dampaknya buat tim yang mengelola banyak mesin?

Dampak terbesarnya adalah hilangnya kontrol versi. Tim yang menggelar Codex lewat package manager biasanya menganggap dirinya menjalankan versi tertentu. Dengan daemon yang menyalin paket lalu memperbarui diri, asumsi itu tidak lagi benar, dan audit software jadi lebih sulit karena ada biner kedua yang tidak dikelola package manager.

Dampak kedua soal sumber daya. Daemon yang tetap hidup memakai memori dan menjaga koneksi, dan updater yang berjalan tiap jam menambah trafik jaringan. Di mesin pengembang tunggal efeknya kecil, tetapi di armada CI atau workstation bersama, proses yang tidak diminta menumpuk dan menyulitkan penelusuran saat ada masalah.

PerilakuDefault sejak 0.157.0Setelah opt-out
Background app serverMenyala otomatisTidak menyala
Salinan paket ke home CodexDibuat otomatisTidak dibuat
Updater mandiriAktif, cek tiap jamNonaktif setelah setelan
Isolasi variabel lingkunganTidak adaRelevan hanya jika daemon jalan
Versi serverBisa lepas dari package managerMengikuti package manager

Bagaimana cara memeriksa apakah daemon masih berjalan?

Mulai dari folder home Codex. Kalau auto-start pernah aktif, akan ada direktori packages/app-server-daemon di dalamnya, dan keberadaan folder itu menandakan daemon pernah menyalin paketnya sendiri. Direktori itu juga tempat berkas settings.json berada, sehingga kamu bisa memeriksa setelan updater dari sana.

Langkah berikutnya adalah memeriksa daftar proses di sistem. Cari proses yang berkaitan dengan app server Codex, lalu lihat apakah masih ada proses yang berjalan padahal semua jendela Codex sudah ditutup. Kalau kamu menemukannya, hentikan lewat perintah stop yang disediakan, lalu periksa lagi karena perintah itu hanya menghentikan server dan belum tentu mematikan updater terpisah.

Untuk memastikan pembersihan benar-benar tuntas, periksa dua hal secara terpisah. Pertama, pastikan tidak ada proses app server yang tersisa. Kedua, pastikan updater tidak akan menyalakan dirinya lagi pada siklus berikutnya, dan cara paling andalnya adalah menyetel autoUpdateEnabled ke false di settings.json. Kalau kamu hanya mematikan prosesnya tanpa mengubah setelan itu, start berikutnya yang memenuhi syarat akan menyalakan updater kembali.

Setelah semua langkah itu, jalankan Codex sekali dan tutup semua jendelanya, lalu periksa daftar proses lagi. Kalau tidak ada proses yang tersisa, artinya konfigurasi opt-out sudah bekerja. Kebiasaan memverifikasi setelah perubahan ini penting, karena gejala daemon yang masih hidup tidak terlihat dari perilaku CLI sehari-hari dan baru ketahuan saat memeriksa proses.

Apakah ada cara membatasi daemon tanpa mematikannya?

Ada beberapa pilihan antara, tergantung kebutuhan. Kalau masalahmu hanya soal versi, kamu bisa membiarkan daemon hidup tetapi memastikan pembaruan otomatisnya mati, sehingga versi server tetap mengikuti versi yang kamu pasang. Dengan begitu, kamu tetap mendapat pengalaman sesi yang mulus tanpa kehilangan kontrol versi.

Kalau masalahmu soal jejak proses, kamu bisa memakai flag no-daemon hanya untuk skrip dan otomasi, sementara sesi interaktif tetap memakai daemon. Pola ini cocok untuk mesin build atau runner CI, di mana meninggalkan proses latar justru mengganggu dan sulit dilacak.

Kalau masalahmu soal kebersihan variabel lingkungan, tidak ada setelan yang bisa menutupnya karena README sendiri menyatakan isolasi per klien tidak disediakan. Pilihan realistisnya adalah mematikan daemon sepenuhnya di mesin yang memproses kredensial sensitif, dan hanya menyalakannya di mesin yang tidak memuat rahasia apa pun di lingkungannya.

Yang penting adalah memutuskan berdasarkan risiko yang paling relevan untukmu, bukan mengikuti setelan default. Daemon ini bukan fitur yang salah dengan sendirinya, tetapi ia membawa konsekuensi operasional yang perlu dipilih secara sadar, bukan diterima begitu saja karena menyala otomatis.

FAQ

Apakah daemon ini berbahaya?

Bukan malware, tetapi ia mengubah asumsi operasional. Ada proses yang tetap hidup dan memperbarui dirinya sendiri di luar kendali package manager, dan README-nya sendiri mengakui tidak ada isolasi variabel lingkungan antar sesi.

Bagaimana cara memastikan daemon tidak jalan di mesin saya?

Setel daemon_auto_start ke false di config.toml, lalu matikan updater dengan menyetel autoUpdateEnabled ke false di settings.json pada folder app-server-daemon. Setelah itu periksa kembali daftar proses untuk memastikan tidak ada sisa proses yang masih hidup.

Apakah menghentikan daemon mengganggu fungsi Codex CLI?

Tidak. Codex tetap bisa dipakai sebagai CLI biasa seperti sebelum v0.157.0. Yang hilang hanya fitur latar seperti sesi yang tetap hidup antar jendela, dan bagi sebagian besar pengguna itu tidak esensial.

Kenapa fitur ini dinyalakan secara default?

Kemungkinan karena mendukung pengalaman sesi yang lebih mulus, misalnya melanjutkan pekerjaan antar jendela tanpa memulai ulang server. Namun keputusan menjadikannya default tanpa dokumentasi saklar opt-out itulah yang dikritik di issue.

Apakah Astral atau pihak lain sudah menanggapi?

Issue 34692 yang meminta fitur ini jadi opt-in sudah dibuka sejak 22 Juli 2026 dan masih berstatus open, dengan komentar baru yang masuk pada 12 Oktober. Sampai ada perubahan, perilaku default di v0.162.1 tetap sama seperti saat diperkenalkan.

Untuk melacak perubahan resminya, pantau issue openai/codex nomor 34692 dan halaman configuration reference Codex yang sejauh ini belum memuat entri daemon_auto_start. Versi paket yang dipasang lewat npm bisa diverifikasi langsung di halaman paket @openai/codex, tempat versi terbaru saat tulisan ini dibuat tercatat sebagai 0.162.1. Kalau kamu mengelola Codex untuk tim, anggap v0.157.0 sebagai perubahan pada software apa yang berjalan di mesin, bukan sekadar kenaikan nomor versi.

Rekomendasi Tools & Layanan

Kalau lo mau langsung praktikkan panduan di atas, dua layanan yang gue pake sehari-hari: free trial Alibaba Cloud buat coba-coba tanpa biaya di awal, dan ECS instance 9th-gen kalau udah siap naik ke VPS production.

💬 Komentar (0)

Belum ada komentar. Jadilah yang pertama! 💬

Komentar akan muncul setelah moderasi.