- Mengaktifkan sandbox dan memilih bagaimana perintah sandboxed disetujui
- Mengonfigurasi jalur dan domain jaringan mana yang dapat dijangkau perintah
- Menggabungkan sandboxing dengan aturan izin dan mode izin
- Memberlakukan sandboxing di seluruh organisasi dengan pengaturan terkelola
Untuk membandingkan pendekatan isolasi lain seperti dev containers, container khusus, dan mesin virtual, lihat Sandbox environments. Untuk mengurangi prompt izin untuk alat selain Bash, lihat permission modes.
Memulai
Sandbox dibangun ke dalam Claude Code dan berjalan di macOS, Linux, dan WSL2. Windows asli tidak didukung. Di Windows, jalankan Claude Code di dalam distribusi WSL2. Di macOS, tidak ada yang perlu diinstal: sandboxing menggunakan kerangka Seatbelt bawaan. Di Linux dan WSL2, sandbox bergantung pada dua paket, yang dibahas dalam Set up Linux and WSL2. Bahkan jika Anda belum menginstalnya, Anda dapat memulai dengan/sandbox, karena panelnya menunjukkan apakah ada yang hilang.
Jalankan /sandbox
Mulai sesi Claude Code dan jalankan perintah Ini membuka panel sandbox dengan tiga tab:
/sandbox:- Mode: pilih bagaimana perintah sandboxed disetujui, dibahas dalam langkah berikutnya
- Overrides: pilih apakah perintah yang gagal di bawah sandbox dapat kembali ke menjalankan unsandboxed. Ini adalah pengaturan
allowUnsandboxedCommands - Config: lihat pengaturan sandbox yang diselesaikan
/sandbox lagi.Pilih mode
Di tab Mode, pilih auto-allow atau regular permissions. Auto-allow menjalankan perintah sandboxed tanpa prompt, dan regular permissions menjaga prompt izin reguler bahkan ketika perintah sandboxed. Lihat Sandbox modes untuk perintah mana yang masih prompt dalam mode auto-allow.
Jalankan perintah Bash
Minta Claude untuk menjalankan perintah, seperti build atau test suite. Secara default, perintah di dalam sandbox hanya dapat menulis ke direktori kerja. Pertama kali perintah memerlukan domain jaringan baru, Claude Code meminta persetujuan.Perintah yang tidak dapat berjalan sandboxed kembali ke alur izin reguler. Untuk memperluas atau mempersempit batas ini, lihat Configure sandboxing.
.claude/settings.local.json, yang berlaku untuk proyek saat ini dan tidak diperiksa ke git. Untuk mengaktifkan sandbox di semua proyek Anda, atur sandbox.enabled ke true dalam pengaturan pengguna Anda di ~/.claude/settings.json. Untuk memberlakukan sandboxing untuk setiap pengembang dalam organisasi, gunakan managed settings.
Set up Linux dan WSL2
Di Linux dan WSL2, sandbox bergantung pada dua paket:bubblewrap: alat sandboxing tanpa privilege yang memberlakukan isolasi filesystemsocat: relay yang digunakan untuk merutekan lalu lintas jaringan melalui proxy sandbox
- Ubuntu/Debian
- Fedora
/sandbox menunjukkan apakah ripgrep, bubblewrap, socat, dan filter seccomp tersedia di platform Anda. Ripgrep disertakan dengan binari Claude Code asli. Filter seccomp bersifat opsional dan menambahkan pemblokiran soket domain Unix. Instal dengan npm install -g @anthropic-ai/sandbox-runtime jika hilang.
Ketika dependensi yang diperlukan hilang, tab Dependencies adalah satu-satunya tab yang ditampilkan sampai Anda menginstalnya. Pemeriksaan dependensi berjalan saat startup, jadi restart Claude Code setelah menginstal paket untuk /sandbox mendeteksinya.
Ubuntu 24.04 dan yang lebih baru: izinkan bubblewrap untuk membuat user namespaces
Ubuntu 24.04 dan yang lebih baru: izinkan bubblewrap untuk membuat user namespaces
Di Ubuntu 24.04 dan yang lebih baru, kebijakan AppArmor default mencegah bubblewrap dari membuat user namespaces yang dibutuhkannya untuk isolasi.Untuk memeriksa apakah lingkungan Anda memberlakukan pembatasan ini, termasuk di dalam WSL2, jalankan Profil hanya berlaku untuk
sysctl kernel.apparmor_restrict_unprivileged_userns. Jika kunci tidak ada atau mengembalikan 0, lewati langkah ini. Jika mengembalikan 1, tambahkan profil AppArmor yang memberikan bwrap kemampuan ini:bwrap itu sendiri, bukan untuk perintah yang berjalan di dalam sandbox. Muat ulang AppArmor untuk menerapkannya:Catatan WSL2
Catatan WSL2
Periksa versi WSL Anda dengan
wsl -l -v dari PowerShell. Jika Anda melihat Sandboxing requires WSL2, distribusi Anda menjalankan WSL1. Tingkatkan ke WSL2 atau jalankan Claude Code tanpa sandboxing.Di WSL2, perintah sandboxed tidak dapat meluncurkan binari Windows seperti cmd.exe, powershell.exe, atau apa pun di bawah /mnt/c/. WSL menyerahkan ini ke host Windows melalui soket Unix, yang sandbox blokir. Jika perintah perlu memanggil binari Windows, tambahkan ke excludedCommands sehingga berjalan di luar sandbox.Mode sandbox
Claude Code menawarkan dua mode sandbox: Mode auto-allow: Perintah Bash akan mencoba berjalan di dalam sandbox dan secara otomatis diizinkan tanpa memerlukan izin. Perintah yang tidak dapat di-sandbox, seperti yang memerlukan akses jaringan ke host yang tidak diizinkan, kembali ke alur izin reguler, di mana Claude Code memeriksa permission rules Anda dan meminta Anda untuk perintah apa pun yang tidak diizinkan oleh aturan tersebut. Bahkan dalam mode auto-allow, hal berikut masih berlaku:- Deny rules eksplisit selalu dihormati
- Perintah
rmataurmdiryang menargetkan/, direktori home Anda, atau jalur sistem kritis lainnya masih memicu prompt izin - Ask rules berlaku untuk perintah yang kembali ke alur izin reguler
dangerouslyDisableSandbox. Perintah yang dicoba kembali berjalan di luar sandbox, sehingga melalui alur izin reguler dan memerlukan persetujuan Anda.
Anda dapat menonaktifkan pintu keluar ini dengan mengatur "allowUnsandboxedCommands": false dalam sandbox settings Anda. Ketika dinonaktifkan, yang ditampilkan tab Overrides /sandbox sebagai Strict sandbox mode, parameter dangerouslyDisableSandbox sepenuhnya diabaikan dan semua perintah harus berjalan sandboxed atau secara eksplisit terdaftar dalam excludedCommands.
Mode auto-allow bekerja secara independen dari pengaturan mode izin Anda. Bahkan jika Anda tidak dalam mode “accept edits”, perintah Bash sandboxed akan berjalan secara otomatis ketika auto-allow diaktifkan. Ini berarti perintah Bash yang memodifikasi file dalam batas sandbox akan dieksekusi tanpa prompt, bahkan ketika alat edit file biasanya memerlukan persetujuan.
Konfigurasi sandboxing
Sesuaikan perilaku sandbox melalui filesettings.json Anda. Lihat Settings untuk referensi konfigurasi lengkap.
Secara default, perintah sandboxed hanya dapat menulis ke direktori kerja saat ini. Jika perintah subprocess seperti kubectl, terraform, atau npm perlu menulis di luar direktori proyek, gunakan sandbox.filesystem.allowWrite untuk memberikan akses ke jalur tertentu:
excludedCommands.
Ketika array filesystem yang sama didefinisikan dalam beberapa settings scopes, array digabungkan: jalur dari setiap scope dikombinasikan, bukan diganti.
Awalan jalur mengontrol bagaimana jalur diselesaikan:
| Awalan | Arti | Contoh |
|---|---|---|
/ | Jalur absolut dari akar filesystem | /tmp/build tetap /tmp/build |
~/ | Relatif terhadap direktori home | ~/.kube menjadi $HOME/.kube |
./ atau tanpa awalan | Relatif terhadap akar proyek untuk pengaturan proyek, atau ke ~/.claude untuk pengaturan pengguna | ./output dalam .claude/settings.json diselesaikan ke <project-root>/output |
//path untuk absolut dan /path untuk relatif proyek. Jalur filesystem sandbox menggunakan konvensi standar: /tmp/build adalah absolut.
Anda juga dapat menolak akses tulis atau baca menggunakan sandbox.filesystem.denyWrite dan sandbox.filesystem.denyRead, dan mengizinkan kembali jalur tertentu dalam wilayah yang ditolak menggunakan sandbox.filesystem.allowRead.
Contoh di bawah memblokir pembacaan dari seluruh direktori home sambil tetap memungkinkan pembacaan dari proyek saat ini. Tempatkan di .claude/settings.json proyek Anda, karena jalur relatif . diselesaikan ke akar proyek hanya ketika konfigurasi berada dalam pengaturan proyek:
. dalam allowRead diselesaikan ke akar proyek karena konfigurasi ini berada dalam pengaturan proyek. Jika Anda menempatkan konfigurasi yang sama dalam ~/.claude/settings.json, . akan diselesaikan ke ~/.claude sebagai gantinya, dan file proyek akan tetap diblokir oleh aturan denyRead.
Cara sandboxing bekerja
Isolasi filesystem
Alat Bash sandboxed membatasi akses sistem file ke direktori tertentu:- Perilaku penulisan default: akses baca dan tulis ke direktori kerja saat ini dan subdirektorinya
- Perilaku pembacaan default: akses baca ke seluruh komputer, kecuali direktori tertentu yang ditolak. Perhatikan bahwa default ini masih memungkinkan pembacaan file kredensial seperti
~/.aws/credentialsdan~/.ssh/. Tambahkan kedenyReaduntuk memblokirnya. - Akses terblokir: tidak dapat memodifikasi file di luar direktori kerja saat ini tanpa izin eksplisit, termasuk file konfigurasi shell seperti
~/.bashrcdan binari sistem di/bin/ - Git worktrees: ketika direktori kerja adalah linked git worktree, sandbox juga memungkinkan penulisan ke direktori
.gitbersama dari repositori utama sehingga perintah sepertigit commitdapat memperbarui refs dan indeks. Penulisan kehooks/danconfigdi dalam direktori tersebut tetap ditolak. - Dapat dikonfigurasi: tentukan jalur yang diizinkan dan ditolak khusus melalui pengaturan
sandbox.filesystem.allowWrite dalam pengaturan Anda. Pembatasan ini diberlakukan pada tingkat OS, sehingga berlaku untuk semua perintah subprocess, termasuk alat seperti kubectl, terraform, dan npm, bukan hanya alat file Claude.
Isolasi jaringan
Akses jaringan dikendalikan melalui server proxy yang berjalan di luar sandbox:- Pembatasan domain: tidak ada domain yang diizinkan sebelumnya. Pertama kali perintah memerlukan domain baru, Claude Code meminta persetujuan. Izinkan domain sebelumnya dengan
allowedDomainsuntuk menghindari prompt. - Lockdown terkelola: jika
allowManagedDomainsOnlydiatur dalam pengaturan terkelola, domain yang tidak diizinkan diblokir secara otomatis alih-alih prompt, dan hanyaallowedDomainsdari pengaturan terkelola yang dihormati. - Dukungan proxy khusus: pengguna tingkat lanjut dapat menerapkan aturan khusus pada lalu lintas keluar
- Cakupan komprehensif: pembatasan berlaku untuk semua skrip, program, dan subprocess yang dihasilkan oleh perintah
Proxy bawaan memberlakukan allowlist berdasarkan hostname yang diminta dan tidak menghentikan atau memeriksa lalu lintas TLS. Lihat Security limitations untuk implikasi desain ini, dan Custom proxy configuration jika model ancaman Anda memerlukan inspeksi TLS.
Penegakan tingkat OS
Alat Bash sandboxed memanfaatkan primitif keamanan sistem operasi:- macOS: menggunakan Seatbelt untuk penegakan sandbox
- Linux: menggunakan bubblewrap untuk isolasi
- WSL2: menggunakan bubblewrap, sama seperti Linux
@anthropic-ai/sandbox-runtime mandiri, yang halaman Sandbox environments mencakup sebagai pendekatan terpisah untuk membungkus seluruh proses Claude Code.
Bagaimana sandboxing berhubungan dengan izin dan mode izin
Sandboxing, permission rules, dan permission modes adalah lapisan komplementer. Bagian di bawah mencakup bagaimana sandbox berinteraksi dengan masing-masing.Aturan izin
Aturan izin dan sandboxing mengontrol hal yang berbeda:- Aturan izin mengontrol alat mana yang dapat digunakan Claude Code dan dievaluasi sebelum alat apa pun berjalan. Mereka berlaku untuk semua alat: Bash, Read, Edit, WebFetch, MCP, dan lainnya.
- Sandboxing menyediakan penegakan tingkat OS yang membatasi apa yang dapat diakses perintah Bash pada tingkat filesystem dan jaringan. Ini hanya berlaku untuk perintah Bash dan proses anak mereka.
| Pengaturan atau aturan | Apa yang dilakukannya |
|---|---|
sandbox.filesystem.allowWrite | Memberikan akses tulis subprocess ke jalur di luar direktori kerja |
sandbox.filesystem.denyWrite dan sandbox.filesystem.denyRead | Memblokir akses subprocess ke jalur tertentu |
sandbox.filesystem.allowRead | Mengizinkan kembali pembacaan jalur tertentu dalam wilayah denyRead |
Aturan izin Edit | Memberikan akses tulis ke jalur tertentu, dengan cara yang sama seperti sandbox.filesystem.allowWrite |
Aturan tolak Read dan Edit | Memblokir akses ke file atau direktori tertentu |
Aturan izin dan tolak WebFetch | Mengontrol akses domain |
Sandbox allowedDomains | Mengontrol domain mana yang dapat dijangkau perintah Bash |
Sandbox deniedDomains | Memblokir domain tertentu bahkan ketika wildcard allowedDomains yang lebih luas akan sebaliknya mengizinkannya |
sandbox.filesystem dan aturan izin digabungkan bersama ke dalam konfigurasi sandbox akhir.
Direktori contoh repositori claude-code mencakup konfigurasi pengaturan pemula untuk skenario penyebaran umum, termasuk contoh khusus sandbox. Gunakan ini sebagai titik awal dan sesuaikan dengan kebutuhan Anda.
Mode izin
/sandbox bukan permission mode. Mode izin memutuskan apakah panggilan alat berjalan dan apakah Anda diminta terlebih dahulu, sementara sandbox membatasi apa yang dapat diakses perintah Bash setelah berjalan. Mereka berbeda dalam apa yang mereka kontrol dan apa yang menggantikan prompt per-aksi:
| Apa yang dikontrol | Apa yang menggantikan prompt | |
|---|---|---|
/sandbox | Apa yang dapat diakses perintah Bash setelah berjalan | Batas sandbox itu sendiri, dalam mode auto-allow |
| Auto mode | Apakah setiap panggilan alat berjalan | Classifier yang meninjau tindakan |
--dangerously-skip-permissions | Apakah setiap panggilan alat berjalan | Tidak ada. Pemeriksaan Protected path juga dilewati; hanya menghapus / atau direktori home Anda masih prompt |
Konfigurasi sandbox untuk organisasi Anda
Administrator dapat memerlukan sandboxing untuk setiap pengguna, mencegah pengembang memperluas kebijakan, dan merutekan lalu lintas sandbox melalui proxy perusahaan.Memberlakukan sandboxing dengan pengaturan terkelola
Untuk memerlukan sandbox untuk setiap pengembang, berikan kuncisandbox melalui managed settings, baik sebagai file yang dikelola oleh MDM Anda atau melalui server-managed settings di Claude.ai.
Konfigurasi pengaturan terkelola berikut mengaktifkan sandbox, menolak untuk memulai Claude Code jika sandbox tidak dapat diinisialisasi, dan mencegah model dari mencoba kembali perintah di luar sandbox:
enabled mengontrol apa yang terjadi ketika sandbox tidak dapat menjalankan perintah:
failIfUnavailable: dependensi yang hilang seperti bubblewrap di Linux memblokir Claude Code dari memulai daripada menampilkan peringatan dan kembali ke eksekusi unsandboxedallowUnsandboxedCommands: false: pintu keluardangerouslyDisableSandboxdiabaikan, sehingga perintah yang gagal di bawah sandbox tidak dapat dicoba kembali di luar itu
excludedCommands untuk alat yang disetujui organisasi apa pun yang harus berjalan tanpa isolasi. Tambahkan entri denyRead untuk direktori kredensial seperti ~/.aws dan ~/.ssh, yang kebijakan pembacaan default masih memungkinkan.
Sandbox tidak berjalan di Windows asli, jadi jika armada Anda mencakup host Windows, batasi konfigurasi ini ke macOS dan Linux atau minta pengguna tersebut menjalankan Claude Code di dalam WSL2 atau container.
Cegah pengembang memperluas kebijakan
Untuk kunci boolean sepertienabled dan failIfUnavailable, Claude Code menggunakan nilai terkelola dan mengabaikan apa pun yang ditetapkan pengembang secara lokal. Untuk kunci array seperti excludedCommands dan allowRead, Claude Code menggabungkan entri dari setiap scope, sehingga pengembang dapat menambahkan entri yang memperluas kebijakan.
Atur allowManagedReadPathsOnly ke true dalam pengaturan terkelola sehingga hanya entri allowRead dari pengaturan terkelola yang dihormati. Entri allowRead pengguna, proyek, dan lokal diabaikan. Ini mencegah pengembang memperluas akses baca di luar jalur yang disetujui organisasi. Untuk mengunci domain jaringan ke nilai terkelola dengan cara yang sama, atur allowManagedDomainsOnly.
excludedCommands tidak memiliki lockdown hanya terkelola yang setara, sehingga pengembang selalu dapat menambahkan entri yang menjalankan perintah tambahan di luar sandbox. Jaga daftar terkelola tetap sempit.
Konfigurasi proxy khusus
Untuk organisasi yang memerlukan keamanan jaringan lanjutan, Anda dapat menerapkan proxy khusus untuk:- Mendekripsi dan memeriksa lalu lintas HTTPS
- Menerapkan aturan penyaringan khusus
- Mencatat semua permintaan jaringan
- Mengintegrasikan dengan infrastruktur keamanan yang ada
Pemecahan masalah
Beberapa perintah gagal di dalam sandbox meskipun bekerja di luar itu. Perbaikan di bawah mencakup kasus paling umum.- Perintah gagal dengan kesalahan host-not-allowed: banyak alat CLI perlu menjangkau host tertentu. Memberikan izin saat diminta menambahkan host ke daftar yang diizinkan sehingga alat berjalan di dalam sandbox di masa depan.
jesthang atau gagal:watchmantidak kompatibel dengan sandbox. Jalankanjest --no-watchmansebagai gantinya.- Go-based CLIs gagal verifikasi TLS di macOS: alat seperti
gh,gcloud, danterraformmungkin gagal verifikasi TLS di bawah Seatbelt. Daftar alat ini dalamexcludedCommandsuntuk menjalankannya di luar sandbox. Jika Anda menggunakanhttpProxyPortdengan proxy MITM dan CA khusus, aturenableWeakerNetworkIsolationketruesebagai gantinya. - Perintah
dockergagal:dockertidak kompatibel dengan sandbox. Tambahkandocker *keexcludedCommandsuntuk menjalankannya di luar sandbox. - Bubblewrap gagal memulai di dalam container: dalam container tanpa privilege, bubblewrap tidak dapat memasang filesystem
/procsegar. AturenableWeakerNestedSandboxketruesehingga sandbox dalam bind-mount/procyang ada dari container sebagai gantinya. Hanya gunakan pengaturan ini ketika container luar sudah menyediakan batas isolasi yang Anda butuhkan, karena mengekspos informasi proses ke perintah sandboxed yang mount/procsegar akan menyembunyikan. - Filter seccomp di Linux: filter seccomp diperlukan untuk memblokir soket domain Unix. Tab Dependencies dalam
/sandboxmenunjukkan apakah tersedia. Jika hilang, jalankannpm install -g @anthropic-ai/sandbox-runtimeuntuk menginstal helper. --dangerously-skip-permissionsgagal sebagai root: flag ini diblokir saat menjalankan sebagai root atau melalui sudo di Linux dan macOS, karena akses root dikombinasikan dengan tidak ada prompt izin dapat memodifikasi file atau layanan apa pun di sistem. Pemeriksaan dilewati secara otomatis di dalam sandbox yang dikenali. Untuk menjalankan secara otonom dalam container, gunakan konfigurasi dev container, yang menjalankan Claude Code sebagai pengguna non-root.
Keterbatasan
Sandboxing mengurangi risiko tetapi bukan batas isolasi lengkap. Tinjau keterbatasan di bawah sebelum mengandalkannya sebagai kontrol keamanan keras.Keterbatasan keamanan
- Penyaringan jaringan: sistem penyaringan jaringan beroperasi dengan membatasi domain yang diizinkan untuk terhubung oleh proses. Proxy bawaan tidak menghentikan atau melakukan inspeksi TLS pada lalu lintas keluar, sehingga isi koneksi terenkripsi tidak diperiksa. Anda bertanggung jawab untuk memastikan bahwa hanya domain tepercaya yang diizinkan dalam kebijakan Anda.
- Eskalasi privilege melalui soket Unix: konfigurasi
allowUnixSocketsdapat secara tidak sengaja memberikan akses ke layanan sistem yang kuat yang dapat menyebabkan bypass sandbox. Misalnya, mengizinkan akses ke/var/run/docker.socksecara efektif memberikan akses ke sistem host melalui soket Docker. Pertimbangkan dengan hati-hati soket Unix apa pun yang Anda izinkan melalui sandbox. - Eskalasi izin filesystem: izin penulisan filesystem yang terlalu luas dapat memungkinkan serangan eskalasi privilege. Mengizinkan penulisan ke direktori yang berisi executable dalam
$PATH, direktori konfigurasi sistem, atau file konfigurasi shell pengguna seperti.bashrcatau.zshrcdapat menyebabkan eksekusi kode dalam konteks keamanan yang berbeda ketika pengguna lain atau proses sistem mengakses file ini. - Kekuatan sandbox Linux: implementasi Linux menyediakan isolasi filesystem dan jaringan yang kuat tetapi mencakup mode
enableWeakerNestedSandboxyang memungkinkannya bekerja di dalam lingkungan Docker tanpa namespace istimewa, atau pada host Linux di mana user namespaces tanpa privilege dinonaktifkan oleh sysctl. Opsi ini secara konsiderabel melemahkan keamanan dan hanya boleh digunakan ketika isolasi tambahan sebaliknya diberlakukan. - File pengaturan dilindungi: sandbox secara otomatis menolak akses tulis ke file
settings.jsonClaude Code di setiap scope dan ke direktori pengaturan terkelola, sehingga perintah sandboxed tidak dapat memodifikasi kebijakan sendiri.
Kompatibilitas platform dan alat
- Dukungan platform: mendukung macOS, Linux, dan WSL2. WSL1 dan Windows asli tidak didukung.
- Overhead kinerja: minimal, tetapi beberapa operasi filesystem mungkin sedikit lebih lambat.
- Kompatibilitas alat: beberapa alat yang memerlukan pola akses sistem tertentu mungkin memerlukan penyesuaian konfigurasi, atau mungkin perlu dijalankan di luar sandbox.
Cakupan
Sandbox mengisolasi subprocess Bash. Alat lain beroperasi di bawah batas yang berbeda:- Alat file bawaan: Read, Edit, dan Write menggunakan sistem izin secara langsung daripada berjalan melalui sandbox. Lihat permissions.
- Penggunaan komputer: ketika Claude membuka aplikasi dan mengontrol layar Anda, itu berjalan di desktop aktual Anda daripada di lingkungan terisolasi. Prompt izin per-aplikasi membatasi setiap aplikasi. Lihat computer use in the CLI atau computer use in Desktop.
- Variabel lingkungan: perintah Bash sandboxed mewarisi lingkungan proses induk secara default, termasuk kredensial apa pun yang ditetapkan di sana. Untuk menghapus kredensial Anthropic dan penyedia cloud dari subprocess, atur
CLAUDE_CODE_SUBPROCESS_ENV_SCRUB. - Subagents: subagents berjalan dalam proses yang sama dengan sesi induk dan menggunakan konfigurasi sandbox yang sama. Perintah Bash di dalam subagent di-sandbox ketika sandboxing diaktifkan dalam sesi induk.
Lihat juga
- Sandbox environments: bandingkan sandbox bawaan dengan dev containers, containers, dan VM
- Security: fitur keamanan komprehensif dan praktik terbaik
- Permissions: konfigurasi izin dan kontrol akses
- Settings: referensi konfigurasi lengkap
- CLI reference: opsi baris perintah