Untuk model keamanan yang lebih luas, lihat Security. Untuk penerapan Agent SDK, lihat Secure deployment.
Bandingkan pendekatan sandboxing
Dua pendekatan pertama dalam tabel di bawah berjalan pada sistem operasi host tanpa container. Sisanya menempatkan Claude Code di dalam container atau mesin virtual.
Sandboxed Bash tool bawaan di Claude Code dan membatasi perintah Bash. Alat file bawaan, server MCP, dan hooks masih berjalan langsung di host Anda. Setiap pendekatan lain dalam tabel menempatkan seluruh proses Claude Code di dalam batas isolasi, sehingga alat file, server MCP, dan hooks juga dibatasi.
Pilih pendekatan
Cocokkan tujuan Anda dengan baris di bawah, kemudian baca bagian detail yang mengikuti.Bagaimana isolasi berhubungan dengan mode izin
Mode izin memutuskan apakah panggilan alat berjalan dan apakah Anda diminta terlebih dahulu. Isolasi membatasi apa yang dapat diakses perintah setelah berjalan. Keduanya bekerja bersama: ketika mode izin membiarkan tindakan berjalan tanpa bertanya kepada Anda, batas isolasi membatasi apa yang dapat dijangkau tindakan tersebut. Ketika Anda melewatkan--dangerously-skip-permissions, Claude bertindak tanpa bertanya kepada Anda terlebih dahulu. Tindakan yang tidak ada mode auto-approve masih berlaku.
Tanpa prompt untuk menangkap kesalahan, batas isolasi yang Anda pilih adalah apa yang melindungi sistem Anda. Selalu jalankan sesi --dangerously-skip-permissions di dalam container, VM, atau sandbox runtime, sehingga alat file, server MCP, dan hooks juga berada di dalam batas. Pada Linux dan macOS, Claude Code menolak untuk memulai dengan flag ini ketika berjalan sebagai root, jadi jalankan container, VM, atau sandbox runtime sebagai pengguna non-root.
Mode otomatis menggantikan prompt dengan pengklasifikasi yang meninjau tindakan. Pengklasifikasi adalah kontrol per-tindakan, bukan batas isolasi, sehingga batas isolasi masih menambah pertahanan berlapis untuk berjalan tanpa pengawasan, dan tidak diperlukan seperti halnya untuk --dangerously-skip-permissions.
Sandboxed Bash tool sendiri hanya membatasi perintah shell, sehingga tidak cukup untuk berjalan sepenuhnya tanpa pengawasan di kedua mode. Anda dapat melapisi pendekatan: menjalankan sandboxed Bash tool di dalam container atau VM memberi Anda pembatasan perintah tingkat OS di atas batas lingkungan luar. Untuk bagaimana sandbox Bash itu sendiri berinteraksi dengan aturan izin dan mode, lihat How sandboxing relates to permissions and permission modes.
Sandboxed Bash tool
Opsi ini tidak mendukung Windows asli. Pada host Windows, gunakan WSL2 atau salah satu pendekatan container atau VM di bawah.
/sandbox untuk membuka panel sandbox dan pilih mode. Panduan Sandboxing mencakup mode persetujuan, batas default, dan cara memperluas atau mempersempit.
Sandbox per-perintah tidak mencakup semua yang berjalan dalam sesi:
- Alat bawaan lainnya seperti Read, Edit, dan WebFetch berjalan di dalam proses Claude Code dan tidak menjalankan kode arbitrer. Aturan izin untuk path atau domain membatasi mereka sebagai gantinya.
- Server MCP dan command hooks adalah proses terpisah yang berjalan tanpa batasan pada host.
Sandbox runtime
Paket@anthropic-ai/sandbox-runtime membungkus seluruh proses dalam isolasi Seatbelt atau bubblewrap yang sama yang digunakan sandbox Bash bawaan. Menjalankan Claude Code melalui runtime membatasi tool, hook, dan server MCP dalam sesi, serta perintah shell. Runtime adalah research preview beta, dan format konfigurasinya mungkin berubah seiring paket berkembang.
Bagian ini mencakup apa yang Anda konfigurasikan dan apa yang diberlakukan runtime sendiri. Untuk men-deploy runtime dalam aplikasi Agent SDK, lihat panduan deployment aman.
Siapkan dan luncurkan runtime
Di Linux dan WSL2, runtime bergantung pada paketbubblewrap dan socat yang sama dengan sandbox bawaan, ditambah ripgrep, yang Claude Code bundel tetapi runtime mandiri menyelesaikannya dari PATH Anda. Instal bubblewrap dan socat seperti yang dijelaskan dalam Siapkan Linux dan WSL2, dan ripgrep dari manajer paket distribusi Anda. Di macOS Anda tidak memerlukan paket tambahan. Runtime menggunakan sandbox Seatbelt bawaan di sana.
Secara default runtime menolak akses jaringan dan membatasi penulisan ke serangkaian kecil jalur runtime bawaan, jadi konfigurasikan sebelum meluncurkan Claude Code melaluinya. Letakkan konfigurasi Anda di ~/.srt-settings.json, atau dalam file yang Anda berikan dengan --settings. README paket mendokumentasikan skema konfigurasi.
Izinkan akses tulis ke setidaknya:
- Direktori proyek Anda.
- Jalur konfigurasi Claude Code
~/.claudedan~/.claude.json. - Direktori tempat Claude Code menulis file runtime. Kecuali Anda menetapkan
CLAUDE_CODE_TMPDIR, direktori tersebut adalah:- Linux dan WSL2:
/tmp - macOS:
/private/tmp./tmpadalah symlink ke direktori tersebut, dan Seatbelt memeriksa jalur yang telah di-resolve.
- Linux dan WSL2:
api.anthropic.com, atau endpoint penyedia yang dikonfigurasi. Pada penyedia pihak ketiga, pertahankanapi.anthropic.comjuga: pemeriksaan keamanan domain WebFetch masih memanggilnya secara default kecuali Anda menetapkanskipWebFetchPreflight: true.claude.aidanplatform.claude.com, yang diperlukan OAuth sign-in dan penyegaran token. Jalankan yang diautentikasi dengan kunci API dapat menghilangkan keduanya.
npx dan berikan claude sebagai perintah untuk dibungkus:
Apa yang diblokirkan runtime sendiri
Runtime memblokir penulisan risiko tertinggi tanpa konfigurasi apa pun dari Anda:denyWritediutamakan daripadaallowWrite.- Di akar proyek, runtime menolak
.git/hooks, menolak.git/configkecuali Anda menetapkanfilesystem.allowGitConfig: true, dan menolak.mcp.json,.claude/commands,.claude/agents, dan file startup shell. - Di macOS, penolakan ini diperiksa ketika penulisan terjadi, jadi mereka juga mencakup file bersarang dan repositori yang dibuat selama sesi.
- Di Linux dan WSL2, runtime membangun daftar penolakan sekali saat peluncuran. Ini secara andal mencakup akar proyek, melakukan pemindaian dangkal upaya terbaik untuk salinan bersarang yang ada pada saat itu, dan tidak mencakup apa pun yang dibuat sesi nanti, seperti
git init,git clone, atau scaffolding. BagianmandatoryDenySearchDepthREADME menjelaskan semantik pemindaian yang tepat. - Jika
~/.srt-settings.jsontidak ada dan Anda tidak melewatkan--settings, runtime tetap dimulai. Runtime memblokir akses jaringan dan membatasi penulisan ke jalur runtime bawaan seperti/tmp/claude,~/.npm/_logs, dan~/.claude/debug. Jangan anggap awal yang bersih sebagai bukti pengaturan Anda dimuat. - Jika file pengaturan ada tetapi kosong, tidak dapat dibaca, atau tidak valid, runtime menolak untuk memulai, baik itu
~/.srt-settings.jsonatau file yang Anda lewatkan dengan--settings. Runtime juga menolak untuk memulai jika file--settingstidak ada.
denyWrite. Sesi yang disandbox yang dapat menulisnya dapat mempertahankan hook, aturan izin, atau server MCP yang berjalan tanpa sandbox lain kali Anda meluncurkan Claude Code.
Setelah menjalankan tanpa pengawasan
Tinjau jalur yang Anda pertahankan dapat ditulis. Di Linux dan WSL2, juga tinjau apa pun yang dibuat sesi.Dev containers
Dev container menjalankan Claude Code di dalam Docker container yang dikelola VS Code atau editor kompatibel, dengan proyek Anda dipasang di dalamnya. Anda dapat menentukan milik Anda sendiri dengan direktori.devcontainer/ di repositori Anda.
Repositori claude-code menerbitkan contoh dev container dengan firewall iptables default-deny sebagai titik awal. Salin ke repositori Anda dan sesuaikan daftar allowlist firewall, gambar dasar, dan versi Claude Code yang disematkan agar sesuai dengan lingkungan Anda. Karena firewall memblokir egress yang tidak disetujui, konfigurasi seperti ini mendukung menjalankan Claude Code dengan --dangerously-skip-permissions untuk pekerjaan tanpa pengawasan.
Custom container
Anda dapat menjalankan Claude Code di gambar Docker atau OCI container apa pun dengan kebijakan jaringan Anda sendiri, volume yang dipasang, dan profil seccomp. Ini adalah jalur paling umum untuk organisasi dengan infrastruktur container yang ada atau runner CI. Beberapa layanan sandbox terkelola dan eksekusi jarak jauh dapat menampung container untuk Anda. Daftar periksa yang sama berlaku seperti untuk container apa pun yang Anda operasikan: tinjau apa yang dipasang dapat ditulis, kredensial dan token apa yang dapat dijangkau di dalamnya, dan apa yang diizinkan kebijakan egress jaringan. Anda dapat melapisi sandbox Bash bawaan di dalam container untuk pembatasan per-perintah. Container yang tidak istimewa memerlukanenableWeakerNestedSandbox, yang dijelaskan dalam Bubblewrap gagal dimulai di dalam container.
Virtual machine
Mesin virtual khusus menyediakan pemisahan terkuat, dengan kernel sendiri dan, dalam penerapan cloud atau microVM, hardware virtual sendiri. Opsi termasuk instance cloud, hypervisor lokal, dan microVM seperti Firecracker. Gunakan pendekatan ini ketika Anda mengevaluasi kode yang tidak terpercaya, ketika kebijakan keamanan Anda memerlukan pemisahan tingkat kernel antara agen dan host, atau ketika tidak ada pendekatan tingkat host yang memenuhi persyaratan kepatuhan Anda. Docker Sandboxes menyediakan microVM dengan daemon Docker sendiri dan sinkronisasi workspace, yang dapat menjalankan Claude Code pada host apa pun dengan Docker Sandboxes terinstal. Ini adalah produk gratis dan mandiri dari Docker yang tidak memerlukan Docker Desktop.Cloud sessions
A cloud session runs in an isolated, Anthropic-managed virtual machine. A network proxy enforces a default allowlist, and a separate proxy holds your GitHub token outside the sandbox while issuing scoped credentials for repository access inside it. Sessions your organization routes to a self-hosted environment run on infrastructure you provision instead, where isolation, egress control, and git credentials are your deployment’s responsibility. Use this approach when you want full VM isolation without provisioning infrastructure yourself, or when you are delegating tasks from a device that does not have a local development environment. It requires a Claude subscription. Unless you launch from the CLI, you also need a connected GitHub account so the sandbox can clone your repository. When you launch from the CLI with--cloud, Claude Code can bundle and upload your local repository instead. See Use Claude Code in the cloud for plan availability and GitHub authentication options.
Enforce isolation across an organization
Pengembang individual dapat memilih pendekatan sandboxing apa pun di halaman ini. Apa yang dapat diterapkan organisasi, dan dengan alat mana, tergantung pada pendekatan:- Built-in Bash sandbox: satu-satunya pendekatan yang diterapkan Claude Code sendiri. Berikan kunci pengaturan
sandboxmelalui managed settings, baik sebagai file yang dikelola oleh MDM Anda atau melalui server-managed settings di Claude.ai. Lihat Enforce sandboxing with managed settings untuk kunci yang akan digunakan dan cara mencegah pengembang memperluas kebijakan. - Dev containers: komit contoh dev container ke repositori Anda untuk standardisasi lingkungan di seluruh tim. Ini adalah konvensi daripada batas penegakan, karena Claude Code tidak memerlukan container. Jika pengembang tidak boleh dapat menjalankan Claude Code di luar, terapkan dengan alat manajemen perangkat organisasi Anda atau alat allowlisting perangkat lunak.
- Custom containers and VMs: distribusikan Claude Code melalui gambar yang disetujui dan gunakan alat manajemen perangkat organisasi Anda atau alat allowlisting perangkat lunak untuk mencegah instalasi di luar.
Lihat juga
Halaman-halaman ini mencakup detail konfigurasi dan kebijakan untuk pendekatan sandboxing di halaman ini.- Sandboxing: konfigurasikan alat Bash bersandbox bawaan
- Dev container: container pengembangan Docker yang telah dikonfigurasi sebelumnya
- Security: model keamanan Claude Code lengkap
- Secure deployment: panduan isolasi untuk aplikasi Agent SDK
- Settings: semua kunci konfigurasi sandbox, termasuk pengiriman pengaturan terkelola