- Alat yang mengisolasi agen AI lokal agar tidak bisa mengubah sistem di luar lingkungannya melalui sandbox native macOS
- Semua agen berjalan di lingkungan sandbox terpisah, sehingga tidak dapat mengakses home directory pengguna atau proyek lain
- Menerapkan model akses deny-first, sehingga hanya direktori yang diizinkan secara eksplisit yang bisa dibaca dan ditulis
- Instalasi selesai dengan satu skrip Bash saja, dan bisa langsung dijalankan tanpa build atau dependensi tambahan
- Fitur pembuatan profil berbasis LLM dapat mengotomatisasi konfigurasi sandbox-exec dengan hak minimum
Ringkasan
- Agent Safehouse adalah sistem sandboxing khusus macOS yang melindungi agar agen AI yang berjalan secara lokal tidak merusak file sistem
- “Go full
--yolo. We've got you.” “Move fast, break nothing”
- Mencegah risiko eksekusi perintah tak terduga akibat sifat probabilistik LLM
- Semua agen utama dapat berjalan sepenuhnya di dalam sandbox tanpa memengaruhi sistem di luar
- Mengadopsi model akses deny-first, yang secara default memblokir semua akses dan hanya mengizinkan jalur yang disetujui secara eksplisit
- Contoh:
~/my-project diizinkan baca/tulis, ~/.ssh, ~/.aws, ~/other-repos ditolak
Instalasi dan menjalankan
- Instalasi selesai dengan satu kali unduh skrip shell
- Ambil skrip dengan perintah
curl, simpan ke ~/.local/bin/safehouse, lalu berikan izin eksekusi
- Setelah itu, jalankan agen yang diinginkan dengan perintah
safehouse
- Contoh:
safehouse claude --dangerously-skip-permissions
- Secara default, Safehouse memberikan izin baca/tulis ke direktori kerja saat ini (git root) dan akses baca-saja ke direktori toolchain
Contoh verifikasi sandbox
- Akses ke file sensitif diblokir di level kernel
- Saat menjalankan
safehouse cat ~/.ssh/id_ed25519, akan muncul error “Operation not permitted”
- Direktori proyek lain (
~/other-project) tidak terlihat
- Direktori proyek saat ini tetap bisa diakses seperti biasa
Otomatisasi dan pembuatan profil
- Dengan menambahkan fungsi shell, semua agen dapat dijalankan di dalam Safehouse secara default
- Contoh: definisikan fungsi
safe() di .zshrc atau .bashrc, lalu sandboxing otomatis untuk perintah claude, codex, amp, gemini
- Untuk menjalankan tanpa sandbox, panggil dalam bentuk
command claude
- Menyediakan fitur pembuatan profil berbasis LLM
- Model seperti Claude, Codex, Gemini menganalisis template Safehouse untuk membuat profil sandbox-exec dengan hak minimum
- Disimpan di jalur
~/.config/sandbox-exec.profile berdasarkan informasi home directory dan toolchain
- Mencakup izin akses ke direktori kerja saat ini dan perintah pintas per agen
Keamanan dan makna penggunaan
- Melindungi agar agen lokal berbasis LLM tidak melakukan penghapusan file atau perubahan sistem yang tidak disengaja
- Memanfaatkan kontrol akses di level kernel macOS untuk menyediakan lingkungan eksekusi yang aman secara default
- Berbasis satu skrip sehingga mudah diintegrasikan ke workflow pengembang
1 komentar
Komentar Hacker News
Saya tidak menyangka proyek yang saya buat akan dipublikasikan secepat ini
1️⃣ Saya lebih suka agen yang berjalan langsung secara lokal. Bukan di container atau server jarak jauh, melainkan di mesin saya sendiri yang sudah saya atur dengan rinci, jadi rasanya lebih tenang
2️⃣ Ini pada dasarnya adalah generator kebijakan untuk sandbox-exec. Tidak ada dependensi, tidak ada virtualisasi. Sebagai gantinya, saya menghabiskan banyak waktu mencari izin minimum yang dibutuhkan tiap agen untuk melakukan hal-hal seperti pembaruan otomatis, integrasi keychain, menempel gambar, dan sebagainya. Hasil investigasinya dirangkum di agent-safehouse.dev/docs/agent-investigations
3️⃣ Tidak perlu memakai seluruh proyeknya. Dengan Policy Builder saja, Anda sudah bisa membuat kebijakan sandbox-exec dan memakainya di dotfiles
Saya pernah melihat dokumen kebijakan sandbox sebelumnya, tetapi ini pertama kalinya saya melihatnya dalam bentuk aplikasi yang siap langsung dipakai
Meski begitu, ada beberapa hal yang kurang nyaman — akses ke
.gitconfigdan.gitignoredi direktori home dibatasi, dan karena pembatasan akses proses, saya tidak bisa menyuruh Claude menjalankan perintah sepertilldbataupkill. Akan bagus kalau ada kontrol izin yang lebih rinciSaya sudah menelusuri situs dan skripnya, dan tidak menemukan masalah khusus. Adakah hal yang perlu diwaspadai yang belum terdokumentasi?
Akan lebih baik jika didistribusikan dalam bentuk tarball. Tarball lebih bisa dipercaya karena saya bisa memeriksa isinya sendiri dan memverifikasi apakah itu dibuat otomatis oleh CI
Senang melihat proyek seperti ini, dan menurut saya sandboxing adalah tantangan terbesar saat ini
Pengguna awal mungkin akan sembarangan menjalankan agen secara lokal, tetapi dalam jangka panjang atau di lingkungan perusahaan, itu jelas tidak akan berhasil
Kita harus menangani skenario yang lebih kompleks, melampaui sekadar kontrol jaringan, file, dan izin eksekusi, seperti pengujian browser atau pembuatan resource cloud
Pada akhirnya, kita membutuhkan pendekatan praktis yang mengintegrasikan keamanan, biaya, dan kontrol izin
Saya memakai pendekatan di mana daemon lokal menerbitkan JWT berumur pendek agar agen tidak menangani kunci secara langsung. Ini cocok untuk akses API, tetapi pada level sistem file, masih saja bisa membuat instance EC2 tanpa batas
Masalahnya adalah sulit melakukan evaluasi komparatif terhadap berbagai sandbox
Ini tampaknya adalah wrapper untuk sandbox-exec, dan akhir-akhir ini banyak wrapper seperti ini bermunculan
Yang benar-benar dibutuhkan adalah dokumen verifikasi keandalan dan pengujian otomatis. Kebanyakan sandbox kekurangan dokumentasi
Untuk bisa dipercaya, dibutuhkan dokumentasi rinci dan bukti bahwa semuanya benar-benar bekerja
Profil sandbox-exec untuk tiap agen dipisahkan di folder profiles GitHub, sehingga mudah ditinjau
Saya juga menjalankan pengujian E2E dengan agen yang sesungguhnya
Bahkan tanpa wrapper Safehouse, Anda tetap bisa membuat kebijakan minimum sendiri dengan Policy Builder
Saya juga menyediakan file instruksi agar LLM bisa menulis profil sandbox
Ini adalah skrip wrapper untuk sandbox-exec. Bagus karena punya banyak preset yang sudah disusun dengan baik
90% dari sandbox-exec adalah menetapkan cakupan yang benar, dan 90% sisanya adalah memahaminya
Tapi akan lebih baik jika sandboxing bisa dilakukan dengan metode overlay atau copy-on-write. Saya cukup butuh lingkungan sementara yang dimodifikasi, bukan
.bashrcsaya sendiriOverlay FS memang sulit di macOS, tetapi saya mengatasinya dengan membatasi akses di luar CWD menjadi hanya-baca dan mengarahkan pekerjaan ke folder sementara
Mendukung ekspos port TCP/UDP dan berbagi dengan anggota tim. Lihat tautan GitHub
Ini memungkinkan akses aman ke file yang diabaikan Git. Tautan Treebeard
Fakta menarik: sandbox-exec secara resmi sudah berstatus deprecated sejak macOS Sierra (2016)
Meski begitu, alat ini masih tetap berguna. App Sandbox dari Apple tidak cocok untuk aturan kustom seperti ini
Semoga Apple tidak benar-benar menghapusnya
Ada juga proyek bernama Sandvault. Pendekatannya menggabungkan sandbox-exec dengan sistem pengguna Unix
Tiap agen diberi akun pengguna nonprivileged terpisah, lalu berinteraksi lewat sudo, SSH, dan direktori bersama
Tautan GitHub Sandvault
Saya membuat aplikasi GUI untuk macOS agar sandbox-exec bisa dikelola secara visual
Ini juga mencakup pemfilteran jaringan per domain dan fitur deteksi secret
multitui.com
Membagikan cara menjalankan kode Claude di dalam container Apple menggunakan perintah container dari Apple
Lingkungan disiapkan dengan urutan
container system start→container run→container exec, lalu Node.js dan Claude dipasangSaya penasaran mengapa menjalankan agen secara lokal dianggap lebih baik.
Bagi kebanyakan orang, eksekusi jarak jauh sepertinya lebih efisien — karena tidak perlu selalu dinyalakan
Selain itu, bisa menghindari biaya langganan
Keamanannya sedang diperkuat, dan sudah cukup cocok untuk workflow AI
Tautan GitHub pixels
Saya penasaran apakah “clunker” adalah slang baru untuk “clanker”. Teman dari teman saya, Roku, yang bertanya
Waktunya pas sekali karena saya sedang kesulitan dengan masalah sandboxing