openclaw policy
openclaw policy disediakan oleh Plugin Policy bawaan. Ini merupakan lapisan
kesesuaian perusahaan di atas pengaturan OpenClaw yang sudah ada, bukan sistem
konfigurasi kedua. Anda menulis persyaratan di policy.jsonc; OpenClaw mengamati
ruang kerja aktif sebagai bukti; Policy melaporkan penyimpangan melalui doctor --lint.
Policy tidak memberlakukan panggilan alat atau menulis ulang perilaku runtime pada
saat permintaan, dan tidak mengesahkan penyimpanan kredensial per agen seperti
auth-profiles.json.
Policy memeriksa saluran yang dikonfigurasi, server MCP, penyedia model, postur
SSRF jaringan, akses ingress/saluran, eksposur Gateway dan postur perintah node,
probe perutean pesan yang ditulis,
akses ruang kerja agen, postur sandbox, postur penanganan data, postur penyedia
rahasia/profil autentikasi, dan metadata alat yang diatur (TOOLS.md).
Gunakan ini ketika ruang kerja memerlukan pernyataan yang tahan lama dan dapat
diperiksa seperti “Telegram tidak boleh diaktifkan” atau “alat yang diatur harus
mendeklarasikan metadata risiko dan pemilik.” Jika Anda hanya memerlukan perilaku
lokal tanpa pengesahan atau deteksi penyimpangan, konfigurasi biasa sudah cukup.
Mulai cepat
policy.jsonc tidak ada, sehingga doctor dapat
melaporkan artefak yang hilang alih-alih melewati pemeriksaan secara diam-diam.
Tulis policy.jsonc secara manual; ini tidak dihasilkan dari pengaturan saat
ini. Setiap bagian tingkat atas merupakan namespace aturan: pemeriksaan hanya
berjalan ketika ada aturan konkret di bawahnya (bagian atau kunci yang tidak
didukung gagal sebagai policy/policy-jsonc-invalid alih-alih diabaikan secara diam-diam).
Contoh minimal yang mencakup setiap bagian yang didukung:
- Menghilangkan
gateway.bindsaat melarang pengikatan non-loopback berarti Anda menerima nilai default runtime; tetapkangateway.bind: "loopback"untuk kesesuaian ketat. - Untuk agen hanya-baca, tetapkan
modesandbox keallataunon-mainpada default/agen yang berlaku danworkspaceAccesskenoneatauro. Mode sandbox yang tidak ada atauofftidak memenuhi kebijakan hanya-baca. agents.workspace.denyToolsmenerimaexec,process,write,edit,apply_patch. Grup penolakan alat konfigurasigroup:fs(mutasi file) dangroup:runtime(shell/proses) memenuhi postur yang setara.- Pemeriksaan persetujuan eksekusi membaca artefak
exec-approvals.jsonaktif hanya ketika ada aturanexecApprovals; artefak yang hilang atau tidak valid merupakan bukti yang tidak dapat diamati, bukan kelulusan sintetis. - Bukti rahasia dan profil autentikasi hanya mencatat postur penyedia/sumber dan
metadata SecretRef, tidak pernah nilai mentah. Policy tidak membaca atau mengesahkan
penyimpanan kredensial per agen seperti
auth-profiles.json. - Bukti penanganan data hanya berupa postur tingkat konfigurasi (mode redaksi, tombol pengambilan telemetri, mode pemeliharaan sesi, pengaturan pengindeksan transkrip). Ini tidak memeriksa log, ekspor telemetri, transkrip, atau file memori, dan hasil bersih tidak membuktikan bahwa tidak ada data pribadi atau rahasia di dalamnya.
- Probe perutean menggunakan kembali resolver pengikatan runtime OpenClaw. Bukti perutean hanya mencatat id probe, agen yang diresolusi, jenis kecocokan, dan metadata pengikatan yang disunting. Bukti ini tidak pernah mencatat pengidentifikasi rekan, akun, guild, tim, atau peran. Menambahkan bagian perutean secara sengaja mengubah hash kebijakan dan pengesahan; kebijakan tanpa perutean mempertahankan bentuk bukti yang ada.
Referensi aturan Policy
Setiap aturan di bawah bersifat opsional; pemeriksaan hanya berjalan ketika aturan tersebut ada. Status yang diamati adalah konfigurasi OpenClaw atau metadata ruang kerja yang sudah ada.Overlay tercakup
Gunakanscopes.<scopeName> ketika agen atau saluran tertentu memerlukan kebijakan
yang lebih ketat daripada garis dasar tingkat atas. Nama cakupan hanyalah label;
pencocokan menggunakan selektor di dalam cakupan. Overlay bersifat aditif: aturan
global tetap berjalan, dan aturan tercakup dapat menambahkan temuannya sendiri
terhadap bukti yang sama.
Jika entri
agentIds tidak ada di agents.list[], OpenClaw
mengevaluasi aturan tercakup terhadap postur global/default yang diwarisi untuk
id agen runtime tersebut alih-alih melewatinya.
sandbox.containers.*) hanya diperiksa terhadap bukti
yang dapat diekspos oleh backend sandbox agen yang cocok. Jika backend tidak
dapat mengamati aturan yang Anda aktifkan untuknya, Policy melaporkan
policy/sandbox-container-posture-unobservable alih-alih meluluskannya; cakupkan aturan kontainer ke grup
agen yang menggunakan backend yang dapat mengeksposnya.
ingress.session.requireDmScope tingkat atas tetap global; session.dmScope bukan bukti
yang dapat diatribusikan ke saluran, sehingga tidak dapat dicakup oleh
channelIds.
Setiap cakupan yang ada di policy.jsonc harus valid dan dapat diberlakukan.
Saluran
Server MCP
Penyedia model
Jaringan
Perutean pesan
ID probe harus unik. Sebuah rute mendukung
channel, accountId opsional,
peer, parentPeer, guildId, teamId, dan memberRoleIds. Jenis peer adalah
direct, group, dan channel. matchedBy dapat berisi satu atau beberapa jenis
kecocokan runtime, termasuk binding.peer, binding.account, binding.channel,
atau default.
Pemeriksaan perutean hanya merupakan pemeriksaan kesesuaian. Pemeriksaan ini tidak mengubah startup,
pengiriman pesan, prioritas pengikatan, atau perilaku fallback. Temuan memerlukan
peninjauan operator karena perubahan pengikatan secara otomatis dapat mengalihkan
pesan privat.
Akses masuk dan saluran
Gateway
gateway.nodes.denyCommands adalah aturan superset penolakan yang persis dan peka huruf besar-kecil.
Gunakan saat kebijakan harus membuktikan bahwa perintah node berhak istimewa secara eksplisit
ditolak oleh konfigurasi OpenClaw. Deployment yang sengaja mengizinkan perintah
node berhak istimewa harus memperbarui policy.jsonc setelah peninjauan, alih-alih hanya
mengandalkan gateway.nodes.allowCommands.
Ruang kerja agen
Postur sandbox
Kebijakan memperlakukan
sandbox.mode yang tidak ada sebagai nilai default implisitnya, off, sehingga
sandbox.requireMode melaporkan sandbox baru atau belum dikonfigurasi sebagai berada di luar
daftar izin seperti ["all"].
Penanganan data
Rahasia
Persetujuan eksekusi
Pemeriksaan persetujuan eksekusi membaca artefak runtimeexec-approvals.json:
~/.openclaw/exec-approvals.json secara default, atau
$OPENCLAW_STATE_DIR/exec-approvals.json ketika OPENCLAW_STATE_DIR ditetapkan.
Aturan postur di bawah execApprovals.defaults.* atau execApprovals.agents.*
mewajibkan bukti artefak yang dapat dibaca; artefak yang tidak ada atau tidak valid dilaporkan sebagai
bukti yang tidak dapat diamati, bukan kelulusan berdasarkan upaya terbaik. Setelah dapat dibaca, bidang yang
dihilangkan mewarisi default runtime: defaults.security yang tidak ada adalah full, dan
keamanan agen yang tidak ada mewarisi default tersebut. Bukti mencakup defaults,
agents.*, agents.*.allowlist[].pattern, argPattern opsional, postur efektif
autoAllowSkills, dan sumber entri — tidak pernah berupa jalur/token soket,
commandText, lastUsedCommand, jalur yang di-resolve, atau stempel waktu.
Contoh: wajibkan artefak persetujuan, tolak nilai bawaan yang permisif, dan izinkan
hanya postur persetujuan exec yang telah direview untuk agen tertentu.
Profil autentikasi
Metadata alat
Postur alat
Jalankan pemeriksaan
Jalankan pemeriksaan khusus kebijakan selama penulisan:policy check hanya menjalankan kumpulan pemeriksaan kebijakan dan menghasilkan bukti, temuan,
serta hash atestasi. Temuan yang sama juga muncul dalam
openclaw doctor --lint ketika Plugin Policy diaktifkan.
Bandingkan berkas kebijakan operator dengan garis dasar yang telah ditulis:
policy compare memeriksa sintaks berkas kebijakan terhadap sintaks berkas kebijakan; perintah ini
tidak memeriksa status runtime, bukti, kredensial, atau rahasia. Perintah ini menggunakan
metadata aturan yang sama dengan yang mengatur overlay tercakup: daftar izin harus tetap sama atau
lebih sempit, daftar penolakan harus tetap sama atau lebih luas, boolean wajib harus mempertahankan
nilainya, string berurutan hanya boleh bergerak menuju ujung yang lebih ketat dari
urutan yang dikonfigurasi, dan daftar persis harus cocok. Garis dasar dapat berupa
kebijakan yang ditulis organisasi; kebijakan yang diperiksa boleh menambahkan nilai yang lebih ketat atau
aturan tambahan. Aturan tingkat teratas yang diperiksa dapat memenuhi aturan garis dasar tercakup ketika
sama ketat atau lebih ketat. Nama cakupan tidak harus cocok antarberkas;
perbandingan dikunci berdasarkan pemilih (agentIds/channelIds) dan bidang.
Untuk probe perutean, setiap id probe garis dasar harus dipertahankan dengan rute
dan agen yang diharapkan yang sama. Kebijakan yang diperiksa boleh menambahkan probe atau mempersempit matchedBy, tetapi
menghapus probe, mengubah rute atau agennya, atau memperluas jenis kecocokan yang diterima
merupakan kebijakan yang lebih lemah.
Perbandingan bersih (--json):
policy check --json yang bersih menyertakan hash stabil yang dapat dicatat oleh operator atau
pengawas:
Konfigurasikan kebijakan
Konfigurasi kebijakan berada di bawahplugins.entries.policy.config.
Atur
plugins.entries.policy.config.enabled ke false untuk menonaktifkan pemeriksaan
kebijakan bagi suatu ruang kerja tanpa menghapus Plugin.
Terima status kebijakan
Contoh keluaran JSON:attestation.policy.hash mengidentifikasi artefak aturan yang dibuat. evidence
mencatat status OpenClaw yang diamati dan digunakan oleh pemeriksaan, serta
workspace.hash mengidentifikasi payload bukti tersebut. findingsHash mengidentifikasi
kumpulan temuan yang tepat. checkedAt mencatat waktu pemeriksaan dijalankan.
attestationHash mengidentifikasi klaim stabil (hash kebijakan, hash bukti,
hash temuan, dan status bersih/kotor) dan sengaja mengecualikan checkedAt,
sehingga status kebijakan yang sama selalu menghasilkan hash pengesahan yang sama. Bersama-sama,
keempat nilai ini membentuk tuple audit untuk satu pemeriksaan kebijakan.
Jika Gateway atau supervisor menggunakan kebijakan untuk memblokir, menyetujui, atau memberi anotasi pada
tindakan runtime, komponen tersebut harus mencatat hash pengesahan dari pemeriksaan bersih
terakhir. checkedAt tetap berada dalam output JSON untuk log audit, tetapi bukan bagian dari
hash stabil.
Siklus hidup untuk menerima status kebijakan:
- Buat atau tinjau
policy.jsonc. - Jalankan
openclaw policy check --json. - Jika bersih, catat
attestation.policy.hashsebagaiexpectedHash. - Catat
attestation.attestationHashsebagaiexpectedAttestationHash. - Jalankan kembali
openclaw doctor --lintdalam CI atau gerbang rilis.
expectedAttestationHash yang berubah.
Mengaktifkan atau meningkatkan versi aturan agents.workspace menambahkan bukti agentWorkspace
ke hash ruang kerja dan hash pengesahan; tinjau bukti baru dan
perbarui hash pengesahan yang diterima setelah mengaktifkannya. Mengaktifkan atau meningkatkan versi
aturan postur alat menambahkan bukti toolPosture dengan cara yang sama.
openclaw policy watch menjalankan kembali pemeriksaan dan melaporkan saat bukti saat ini tidak
lagi cocok dengan expectedAttestationHash:
--once dalam CI atau skrip yang memerlukan satu evaluasi penyimpangan. Tanpa
--once, secara default pemeriksaan dilakukan setiap dua detik; gunakan --interval-ms untuk mengubah
interval.
Temuan
Sebuah temuan dapat menyertakan
target (hal yang diamati di ruang kerja dan
tidak sesuai) maupun requirement (aturan yang ditulis yang menjadikannya temuan).
Keduanya saat ini merupakan string alamat oc://, tetapi nama bidang menjelaskan peran
kebijakan, bukan format alamat.
Contoh temuan:
Perbaikan
doctor --lint dan policy check bersifat hanya-baca.
doctor --fix hanya mengedit pengaturan ruang kerja yang dikelola kebijakan ketika
workspaceRepairs diaktifkan secara eksplisit; jika tidak, pemeriksaan melaporkan apa yang
akan diperbaiki dan membiarkan pengaturan tidak berubah.
Dalam versi ini, perbaikan dapat menonaktifkan saluran yang ditolak oleh channels.denyRules dan
menerapkan perbaikan penyempitan otomatis yang tercantum di bawah. Aktifkan workspaceRepairs
hanya setelah berkas kebijakan ditinjau, karena aturan yang valid dapat mengubah
konfigurasi ruang kerja:
- tetapkan
tools.elevated.enabled=falseketika kebijakan global melarang alat dengan hak istimewa - tambahkan ID alat wajib-tolak yang hilang ke
tools.denyatauagents.list[].tools.denyketika kebijakan mengharuskan alat tersebut ditolak - tetapkan tombol alih
gateway.controlUi.*yang tidak aman kefalse - tetapkan
gateway.mode=localketika kebijakan menolak mode Gateway jarak jauh - tetapkan jalur
gateway.http.endpoints.*.enabledyang dilaporkan kefalseketika kebijakan menolak titik akhir API HTTP Gateway - tetapkan jalur
groupPolicymasuk saluran yang dilaporkan keallowlistketika kebijakan menolak masuknya grup terbuka - tetapkan jalur
requireMentionmasuk saluran yang dilaporkan ketrueketika kebijakan mewajibkan penyebutan grup - tetapkan
logging.redactSensitive=toolsketika kebijakan mewajibkan penyamaran pencatatan sensitif - tetapkan
diagnostics.otel.captureContent=false, ataudiagnostics.otel.captureContent.enabled=falseuntuk pengaturan pengambilan telemetri berbentuk objek, ketika kebijakan menolak pengambilan konten telemetri
tools.deny root yang diwarisi, karena menambahkan alat wajib tersebut ke konfigurasi root akan memengaruhi
lebih dari target kebijakan terbatas cakupan. Perbaikan wajib-tolak lokal agen dapat memperbarui
jalur agents.list[].tools.deny yang dilaporkan.
Perbaikan masuk saluran terbatas cakupan dilewati ketika temuan melaporkan
channels.defaults.* yang diwarisi, karena mengubah pengaturan bawaan saluran bersama akan memengaruhi
lebih dari target kebijakan terbatas cakupan. Temuan daftar yang diizinkan untuk pengambilan URL HTTP Gateway
tetap harus ditangani secara manual karena perbaikan otomatis tidak dapat memilih nilai daftar
URL titik akhir yang diizinkan dengan benar.
Temuan bind Gateway dan perintah node tetap memerlukan peninjauan. Ketika
policy/gateway-non-loopback-bind atau policy/gateway-node-command-denied
dapat dipetakan ke jalur konfigurasi, doctor --fix melaporkan usulan
perubahan gateway.bind atau gateway.nodes.denyCommands sebagai panduan
pratinjau yang dilewati. Perubahan tersebut tidak diterapkan, dan temuan tidak dianggap
telah diperbaiki sampai operator meninjau dan memperbarui konfigurasi atau kebijakan.