Keamanan
Pi adalah agen pengkodean lokal. Ini berjalan dengan izin dari akun pengguna yang memulainya, dan memperlakukan file yang dapat ditulis oleh pengguna tersebut seperti berada di dalam batas kepercayaan lokal yang sama.
Kepercayaan Proyek
Kepercayaan proyek mengontrol apakah pi memuat pengaturan lokal proyek, sumber daya, paket, dan ekstensi. Ini bukan sandbox dan tidak membatasi apa yang diminta model untuk dilakukan alat setelah Anda mulai bekerja di direktori.
Pi menganggap proyek memiliki sumber daya yang memerlukan kepercayaan ketika menemukan salah satu dari ini dari direktori kerja saat ini:
.pi/settings.json.pi/extensions,.pi/skills,.pi/prompts, atau.pi/themes.pi/SYSTEM.mdatau.pi/APPEND_SYSTEM.md- proyek
.agents/skillsdi direktori saat ini atau direktori leluhur
Direktori .pi yang kosong tidak dihitung sebagai sumber daya proyek yang memerlukan kepercayaan.
Ketika sesi interaktif dimulai dalam sebuah proyek dengan sumber daya yang memerlukan kepercayaan dan tidak ada keputusan tersimpan untuk direktori saat ini atau direktori induk, pi mengikuti defaultProjectTrust dari pengaturan global. Nilai defaultnya adalah "ask", yang menanyakan apakah akan memercayai proyek saat UI tersedia. Keputusan tersimpan disimpan oleh direktori kanonik di ~/.pi/agent/trust.json, dan keputusan tersimpan terdekat pada jalur saat ini atau jalur induk berlaku sebelum default global.
Mempercayai suatu proyek memungkinkan pi memuat sumber daya proyek yang memerlukan kepercayaan, termasuk:
.pi/settings.json.pisumber daya seperti ekstensi, keterampilan, prompt templates, tema, dan file prompt sistem- paket proyek yang hilang dikonfigurasi melalui pengaturan proyek
- ekstensi proyek-lokal dan ekstensi yang dikelola paket proyek
Menurunnya kepercayaan mengabaikan sumber daya yang dilindungi. File konteks seperti AGENTS.override.md, AGENTS.md, dan CLAUDE.md dimuat terlepas dari kepercayaan proyek kecuali pemuatan konteks dinonaktifkan. Sebelum kepercayaan diselesaikan, pi hanya memuat context files, ekstensi pengguna/global, dan CLI -e ekstensi. Ekstensi pengguna/global dan CLI dapat menangani peristiwa project_trust; ekstensi pertama yang mengembalikan keputusan ya/tidak adalah pemilik keputusan tersebut.
Mode non-interaktif (-p, --mode json, dan --mode rpc) tidak menampilkan prompt kepercayaan. Tanpa keputusan perwalian tersimpan yang dapat diterapkan, defaultProjectTrust: "ask" dan "never" mengabaikan sumber daya tersebut, sementara "always" memercayai sumber daya tersebut. Gunakan --approve/-a atau --no-approve/-na untuk mengganti kepercayaan proyek untuk satu kali proses.
Tidak Ada Kotak Pasir Bawaan
Pi tidak termasuk sandbox bawaan. Alat bawaan dapat membaca file, menulis file, mengedit file, dan menjalankan perintah shell dengan izin proses pi. Extensions adalah TypeScript modul yang dijalankan dengan izin yang sama. Penginstalan paket, perintah shell, server bahasa, perintah pengujian, dan alat pengembang lainnya berperilaku seperti proses lokal biasa.
Ini disengaja. Pi dirancang untuk beroperasi pada pohon sumber lokal, menggunakan rantai alat proyek, dan berintegrasi dengan lingkungan pengembangan pengguna yang ada. Sebagian proses sandbox akan mudah disalahpahami sebagai batas keamanan namun tetap bergantung pada shell host, sistem file, manajer paket, kredensial, dan kode ekstensi. Isolasi nyata perlu datang dari sistem operasi atau batas virtualisasi/wadah.
Kepercayaan proyek hanyalah penjaga pemuatan masukan. Ini mencegah repositori mengubah pengaturan atau ekstensi pi secara diam-diam sebelum Anda menyetujuinya. Itu tidak membuat kode yang tidak tepercaya, perintah yang tidak tepercaya, atau keluaran model yang tidak tepercaya menjadi aman. Injeksi cepat dari file repositori, komentar, dokumentasi, context files, atau keluaran build diperkirakan merupakan risiko agen lokal dan tidak dapat dicegah dengan pi.
Menjalankan Pekerjaan yang Tidak Dipercaya atau Tidak Dipantau
Untuk repositori yang tidak tepercaya, kode yang dihasilkan tidak ingin Anda pantau secara ketat, atau otomatisasi tanpa pengawasan, jalankan pi di lingkungan yang tertampung. Gunakan kontainer, VM, mikro-VM, sandbox jarak jauh, atau sandbox yang dikontrol kebijakan dengan hanya file dan kredensial yang diperlukan untuk tugas tersebut.
Pola umum didokumentasikan di Containerization:
- jalankan seluruh proses
pidi dalam wadah/sandbox - jalankan host pi sambil merutekan eksekusi alat bawaan ke Gondolin mikro-VM
- pasang hanya jalur ruang kerja yang harus diakses agen
- hindari pemasangan host
~/.pi/agentkecuali kontainer harus mengakses sesi host, pengaturan, dan kredensial - lulus persyaratan minimum API key atau menggunakan kredensial berumur pendek
- membatasi akses jaringan ketika tugas tidak memerlukannya
- meninjau perbedaan dan keluaran sebelum menyalin hasilnya kembali ke sistem tepercaya
Jika Anda mengikat-mount ruang kerja host untuk membaca/menulis, menulis dari dalam kontainer, atau VM masih dapat mengubah file host. Gunakan mount read-only atau salin file ke dalam dan keluar dari sandbox ketika Anda memerlukan perlindungan yang lebih kuat dari penulisan yang tidak diinginkan.
Melaporkan Masalah Keamanan
Untuk melaporkan masalah keamanan, ikuti repositori Security Policy. Jangan membuka terbitan publik untuk laporan yang sensitif terhadap keamanan.
Perilaku agen lokal yang diharapkan, kurangnya sandbox bawaan, injeksi cepat dari konten yang tidak tepercaya, dan perilaku ekstensi atau keterampilan yang dipasang pengguna umumnya berada di luar batas keamanan kecuali jika laporan menunjukkan bypass batas hak istimewa yang nyata atau menunjukkan bagaimana pi memberikan akses yang belum dimiliki pengguna lokal.