Windows sandbox

Windows sandbox

Konfigurasikan dan pecahkan masalah sandbox Codex native di Windows

Gunakan Codex di Windows dengan aplikasi desktop ChatGPT native, CLI, atau ekstensi IDE.

Aplikasi desktop ChatGPT di Windows mendukung alur kerja inti seperti obrolan paralel, worktree, tugas terjadwal, fungsionalitas Git, browser bawaan, pratinjau berkas, plugin, dan skill.

Aplikasi dapat berjalan secara native di PowerShell dengan sandbox Windows tanpa memerlukan WSL atau mesin virtual. Dengan demikian, Codex tetap berada dalam alur kerja native Windows sekaligus memberlakukan batasan izin sistem file dan jaringan.

Untuk instalasi perusahaan, lihat Panduan Penerapan Windows.

Gunakan aplikasi desktop ChatGPT di WindowsBekerja lintas proyek, jalankan percakapan secara paralel, dan tinjau hasil di satu tempat dengan aplikasi native Windows.

Codex mendukung tiga implementasi sandbox Windows:

  • mxc: Sandbox yang direkomendasikan untuk perangkat Windows yang kompatibel. Menggunakan isolasi proses native tanpa penyiapan yang memerlukan persetujuan administrator, akun Windows tambahan, atau aturan firewall lokal.
  • elevated: Opsi cadangan lama yang diutamakan saat MXC tidak tersedia atau dinonaktifkan. Memerlukan penyiapan yang disetujui administrator. Perintah di dalam sandbox berjalan tanpa hak administrator.
  • unelevated: Opsi cadangan lama saat penyiapan dengan hak administrator tidak tersedia dan kebijakan organisasi mengizinkannya. Memiliki isolasi jaringan yang lebih lemah daripada elevated dan tidak mendukung jalur yang akses bacanya ditolak.

Mengonfigurasi Windows sandbox

Sandbox Windows menerapkan izin sistem file dan jaringan yang aktif untuk perintah beserta proses turunannya. Profil izin menentukan jalur mana yang dapat dibaca atau ditulis dan apakah akses jaringan diizinkan. Kebijakan persetujuan secara terpisah mengatur kapan Codex meminta untuk menjalankan perintah dengan akses lebih luas. Lihat sandbox dan persetujuan.

Aktifkan MXC

Aplikasi desktop secara otomatis mengutamakan MXC untuk akun konsumen jika perangkat mendukungnya. Untuk deployment perusahaan atau penggunaan CLI mandiri, Anda dapat mengaktifkan perilaku yang sama dengan konfigurasi di bawah ini.

Dalam config.toml:

[features]
prefer_mxc = true

Dengan prefer_mxc = true, Codex menggunakan MXC untuk perintah Windows jika perangkat dan kebijakan mendukungnya. Jika tidak, Codex menggunakan alur pemilihan dan penyiapan implementasi lama yang sudah ada.

Untuk perusahaan dengan dukungan perangkat atau kebijakan yang beragam, tetap tetapkan windows.sandbox ke implementasi lama yang diizinkan organisasi Anda, yaitu elevated atau unelevated, sebagai opsi cadangan.

Administrator dapat mendistribusikan konfigurasi ini sebagai default atau mewajibkan features.prefer_mxc = true melalui requirements.toml. Keduanya mengizinkan penggunaan opsi cadangan lama. Lihat konfigurasi terkelola untuk mengetahui perbedaan antara default dan persyaratan.

Pertahankan MXC dalam keadaan nonaktif

Untuk mencegah penggunaan MXC di organisasi Anda, tambahkan ini ke berkas terkelola requirements.toml:

[windows]
allow_mxc = false

Pengaturan ini memblokir pemilihan MXC otomatis maupun windows.sandbox = "mxc" yang eksplisit. Pengaturan dan persyaratan sandbox lama yang sudah ada tetap berlaku.

Kompatibilitas MXC

Host harus sudah memiliki kemampuan Microsoft Execution Containers (MXC) yang diperlukan, yang sedang diluncurkan Microsoft ke perangkat Windows 11. Microsoft memperkenalkan isolasi proses MXC di Windows 11 24H2 (build 26100.9278) dan 25H2 (build 26200.9278). Gunakan perintah di bawah ini untuk memverifikasi dukungan MXC pada perangkat Anda.

Pada Codex CLI 0.162.0 dan versi yang lebih baru, Anda dapat menguji MXC untuk satu perintah tanpa mengubah pilihan sandbox yang tersimpan. Dari direktori proyek Anda, jalankan:

codex -c windows.sandbox=mxc sandbox --include-managed-config --permission-profile :workspace -- cmd.exe /d /c echo MXC_OK
$LASTEXITCODE

Keluaran yang diharapkan adalah MXC_OK dan kode keluar 0. Pengujian ini memeriksa apakah perintah dapat dimulai dengan profil izin ruang kerja dan persyaratan terkelola.

Pemilihan windows.sandbox = "mxc" secara eksplisit gagal jika kemampuan native yang diperlukan tidak tersedia atau kebijakan memblokir MXC.

Perhatikan batasan kompatibilitas berikut:

  • Jaringan terkelola memerlukan allow_local_binding = true yang berlaku secara efektif. MXC mengizinkan koneksi ke dan dari layanan pada loopback host. Aturan domain proksi tetap berlaku untuk lalu lintas yang melalui proksi, tetapi pemeriksaan tambahan proksi terhadap tujuan jaringan privat dihapus.
  • Proses anak yang masih berjalan berhenti saat perintah latar depan selesai. Uji alur kerja yang bergantung pada server pengembangan yang berjalan secara terlepas.
  • Glob penolakan baca menggunakan berkas yang cocok saat setiap proses dalam sandbox dimulai, seperti pada Linux dan WSL. Berkas yang cocok dan dibuat kemudian tetap dapat dibaca oleh proses yang sedang berjalan tersebut jika izin lainnya mengizinkan akses. Shell, skrip, pemantau, dan server pengembangan yang berjalan lama mempertahankan snapshot tersebut selama masa hidupnya, bukan selama seluruh sesi Codex. Lihat waktu evaluasi glob penolakan baca.

Mengonfigurasi opsi cadangan lama

Pilih implementasi cadangan di config.toml:

[windows]
sandbox = "elevated" # or "unelevated"

elevated adalah opsi cadangan lama yang diutamakan. Implementasi ini menggunakan akun pengguna sandbox khusus dengan hak akses lebih rendah, batas izin sistem file, aturan firewall, dan perubahan kebijakan lokal yang diperlukan untuk perintah yang berjalan di sandbox.

Seperti MXC, elevated mendata kecocokan glob penolakan baca saat setiap proses dalam sandbox dimulai. Berkas yang cocok dan dibuat kemudian tetap dapat dibaca oleh proses yang sedang berjalan tersebut jika izin lainnya mengizinkan akses. Lihat waktu evaluasi glob penolakan baca untuk mengetahui dampaknya pada proses yang berjalan lama.

unelevated adalah opsi cadangan lama. Implementasi ini menjalankan perintah dengan token Windows terbatas yang berasal dari akun pengguna Anda saat ini, menerapkan batas sistem file berbasis ACL, dan menggunakan kontrol luring pada tingkat lingkungan sebagai pengganti aturan firewall khusus pengguna luring. Implementasi ini menyediakan isolasi jaringan yang lebih lemah daripada elevated dan tidak mendukung jalur yang akses bacanya ditolak, tetapi tetap berguna saat penyiapan yang disetujui administrator diblokir oleh kebijakan lokal atau perusahaan.

Gunakan MXC jika perangkat dan kebijakan mendukungnya. Jika tidak, utamakan elevated, dengan unelevated sebagai opsi cadangan kedua.

Administrator perusahaan dapat membatasi implementasi sandbox lama yang dapat digunakan Codex melalui requirements.toml:

[windows]
allowed_sandbox_implementations = ["elevated"]

Contoh ini mengizinkan elevated dan mencegah peralihan ke unelevated sebagai opsi cadangan. Pengaturan ini tidak membatasi mxc ketika MXC tersedia. Persyaratan izin dan jaringan terkelola lainnya tetap berlaku. Untuk mengizinkan kedua implementasi lama, sertakan kedua nilai; Codex mengutamakan elevated ketika tidak ada mode yang dipilih.

Lihat referensi requirements.toml untuk mengetahui nilai yang didukung. Untuk memblokir MXC juga, gunakan persyaratan windows.allow_mxc yang terpisah.

Secara default, kedua mode sandbox lama juga menggunakan desktop privat untuk isolasi UI yang lebih kuat.

Penyediaan oleh tim TI untuk sandbox elevated lama

Untuk karyawan tanpa hak administrator lokal, tim TI dapat menginstal CLI dan menyiapkan sandbox elevated sebelum karyawan memulai Codex. Dari proses deployment berhak istimewa administrator, jalankan:

codex sandbox setup --elevated --user 'DOMAIN\alice' --codex-home 'C:\Users\alice\.codex'

Ganti identitas dan jalur tersebut dengan identitas Windows karyawan dan CODEX_HOME. Perintah ini membaca konfigurasi pengguna tersebut, menyiapkan sandbox, dan menyimpan windows.sandbox = "elevated". Karyawan kemudian menjalankan Codex dari terminal biasa.

Izin sandbox

Matriks versi Windows

Versi Windows Tingkat dukungan Catatan
Windows 11 Direkomendasikan Dasar terbaik untuk Codex di Windows. Gunakan ini jika Anda menyeragamkan penerapan perusahaan.
Windows 10 terbaru dan diperbarui sepenuhnya Upaya terbaik Dapat berfungsi, tetapi kurang andal dibandingkan Windows 11. Untuk Windows 10, Codex bergantung pada dukungan konsol modern, termasuk ConPTY. Dalam praktiknya, diperlukan Windows 10 versi 1809 atau lebih baru.
Build Windows 10 yang lebih lama Tidak direkomendasikan Lebih mungkin tidak memiliki komponen konsol yang diperlukan seperti ConPTY dan lebih mungkin gagal dalam penyiapan perusahaan.

Asumsi lingkungan tambahan:

  • winget harus tersedia. Jika tidak ada, perbarui Windows atau instal Windows Package Manager sebelum menyiapkan Codex.
  • Sandbox lama elevated bergantung pada penyiapan yang disetujui administrator.
  • Beberapa perangkat yang dikelola perusahaan memblokir langkah penyiapan yang diperlukan meskipun versi OS-nya sendiri memenuhi syarat.
  • MXC juga memerlukan kemampuan bawaan yang dijelaskan dalam Kompatibilitas MXC; matriks ini tidak memastikan ketersediaan MXC pada perangkat tertentu.

Memeriksa akses baca sandbox

Saat perintah tidak dapat membaca direktori, periksa profil izin yang aktif, persyaratan terkelola, dan izin file Windows. Di CLI, gunakan /status dan /debug-config untuk memeriksa sesi dan konfigurasi yang aktif. Minta administrator Anda meninjau pembatasan terkelola alih-alih menonaktifkan sandbox.

Gunakan sandbox native Windows secara default. Pilih WSL ketika Anda memerlukan alat native Linux, alur kerja Anda sudah berada di WSL2, atau implementasi native Windows yang tersedia tidak memenuhi kebutuhan Anda.

Pemecahan masalah dan FAQ

Jika Anda memecahkan masalah pada komputer Windows terkelola, mulailah dengan memeriksa mode sandbox native, versi Windows, dan setiap kesalahan kebijakan yang ditampilkan Codex. Untuk MXC, periksa kompatibilitas dan kebijakan jaringan yang berlaku. Masalah sandbox lama dapat berasal dari penyiapan, hak masuk, atau izin sistem berkas.

Penyiapan sandbox lama saya gagal

Jika Codex tidak dapat menyelesaikan penyiapan sandbox elevated, penyebab paling umum adalah:

  • permintaan UAC Windows atau administrator ditolak,
  • komputer tidak mengizinkan pembuatan pengguna atau grup lokal,
  • komputer tidak mengizinkan perubahan aturan firewall,
  • komputer memblokir hak masuk yang diperlukan pengguna sandbox,
  • atau kebijakan perusahaan lain memblokir sebagian alur penyiapan.

Yang dapat dicoba:

  1. Coba lagi penyiapan sandbox elevated dan setujui permintaan administrator jika lingkungan Anda mengizinkannya.
  2. Jika laptop perusahaan Anda memblokirnya, tanyakan kepada tim IT apakah komputer tersebut mengizinkan penyiapan yang disetujui administrator untuk pembuatan pengguna/grup lokal, konfigurasi firewall, dan hak masuk pengguna sandbox yang diperlukan.
  3. Jika penyiapan masih gagal dan kebijakan terkelola mengizinkannya, gunakan unelevated selama masalah tersebut diselidiki.

Codex mengalihkan saya ke sandbox tanpa elevasi

Implementasi unelevated dapat dipilih dalam konfigurasi atau digunakan sebagai opsi cadangan ketika penyiapan elevated tidak tersedia.

  • Codex masih dapat berjalan dalam mode sandbox.
  • Mode ini tetap menerapkan batas sistem berkas berbasis ACL, tetapi tidak menggunakan batas pengguna sandbox terpisah dari elevated dan memiliki isolasi jaringan yang lebih lemah.
  • Ini merupakan cadangan yang berguna, tetapi bukan konfigurasi perusahaan jangka panjang yang direkomendasikan.

Untuk laptop perusahaan terkelola, periksa kompatibilitas MXC terlebih dahulu. Jika MXC tidak tersedia atau dinonaktifkan, minta tim IT Anda menyiapkan elevated.

Saya melihat kesalahan Windows 1385

Jika perintah dalam sandbox gagal dengan kesalahan 1385, Windows menolak jenis masuk yang diperlukan pengguna sandbox untuk memulai perintah.

Dalam praktiknya, hal ini biasanya berarti Codex berhasil membuat pengguna sandbox, tetapi kebijakan Windows masih mencegah pengguna tersebut menjalankan perintah dalam sandbox.

Yang harus dilakukan:

  1. Tanyakan kepada tim TI apakah kebijakan perangkat memberikan hak masuk yang diperlukan kepada pengguna sandbox yang dibuat Codex.
  2. Bandingkan perbedaan kebijakan grup atau OU jika masalah hanya memengaruhi beberapa komputer atau tim.
  3. Jika Anda harus segera melanjutkan pekerjaan, gunakan sandbox unelevated sementara masalah kebijakan diselidiki.
  4. Kirim CODEX_HOME/.sandbox/sandbox.log bersama versi Windows Anda dan deskripsi singkat kegagalan.

Codex memperingatkan bahwa beberapa folder dapat ditulis oleh Everyone

Codex mungkin memperingatkan bahwa beberapa folder dapat ditulis oleh Everyone.

Jika Anda melihat peringatan ini, izin Windows pada folder tersebut terlalu luas sehingga sandbox tidak dapat melindunginya sepenuhnya.

Yang harus dilakukan:

  1. Tinjau folder yang dicantumkan Codex dalam peringatan.
  2. Hapus akses tulis Everyone dari folder tersebut jika sesuai untuk lingkungan Anda.
  3. Mulai ulang Codex atau jalankan kembali penyiapan sandbox setelah izin tersebut diperbaiki.

Jika Anda tidak yakin cara mengubah izin tersebut, mintalah bantuan tim TI.

Perintah dalam sandbox tidak dapat mengakses jaringan

Beberapa obrolan Codex sengaja dijalankan tanpa akses jaringan keluar, bergantung pada mode izin yang digunakan.

Jika tugas gagal karena tidak dapat mengakses jaringan:

  1. Periksa apakah tugas tersebut memang seharusnya berjalan dengan jaringan dinonaktifkan.
  2. Jika Anda mengharapkan akses jaringan, mulai ulang Codex dan coba lagi.
  3. Jika masalah terus terjadi, kumpulkan log sandbox agar tim dapat memeriksa apakah komputer berada dalam status sandbox sebagian atau rusak.

Sandbox sebelumnya berfungsi lalu berhenti

Hal ini dapat terjadi setelah:

  • memindahkan repo atau ruang kerja,
  • mengubah izin komputer,
  • mengubah kebijakan Windows,
  • atau perubahan konfigurasi sistem lainnya.

Yang dapat dicoba:

  1. Mulai ulang Codex.
  2. Untuk MXC, ulangi pemeriksaan kompatibilitas dan periksa kebijakan jaringan yang berlaku. Untuk implementasi lama elevated, coba siapkan sandbox lagi.
  3. Jika sandbox lama diperlukan dan kebijakan terkelola mengizinkannya, gunakan unelevated sebagai alternatif sementara.
  4. Kumpulkan log sandbox untuk ditinjau.

Saya perlu mengirim diagnostik ke OpenAI

Jika Anda masih mengalami masalah, kirim:

  • CODEX_HOME/.sandbox/sandbox.log

Akan membantu jika Anda juga menyertakan:

  • deskripsi singkat tentang tindakan yang ingin Anda lakukan,
  • implementasi yang dipilih: mxc, elevated, atau unelevated,
  • setiap pesan kesalahan yang ditampilkan di aplikasi,
  • apakah Anda melihat 1385 atau kesalahan Windows atau PowerShell lainnya,
  • nomor build Windows Anda,
  • dan apakah Anda menggunakan Windows 11 atau Windows 10.

Jangan kirim:

  • isi CODEX_HOME/.sandbox-secrets/

Ekstensi IDE terinstal tetapi tidak merespons

Sistem Anda mungkin tidak memiliki alat pengembangan C++, yang diperlukan oleh beberapa dependensi native:

  • Visual Studio Build Tools (beban kerja C++)
  • Microsoft Visual C++ Redistributable (x64)
  • Dengan winget, jalankan winget install --id Microsoft.VisualStudio.2022.BuildTools -e

Kemudian mulai ulang VS Code sepenuhnya setelah instalasi.