Plugin guides
Broker rahasia 1Password
Broker rahasia 1Password
Plugin onepassword yang disertakan menyediakan satu alat yang dikendalikan kebijakan bagi agen untuk
membaca kumpulan bidang 1Password yang telah dikurasi. Plugin ini dinonaktifkan secara default dan tidak
melakukan apa pun hingga plugins.entries.onepassword.config tersedia.
Ini adalah alat agen, bukan penyedia SecretRef. Alat ini tidak menyuntikkan variabel lingkungan atau me-resolve rahasia konfigurasi OpenClaw.
Model keamanan
- Hanya autentikasi akun layanan. Token tetap berada dalam file kredensial lokal
dan tidak pernah diterima dalam
openclaw.json. - Hanya registri yang dikurasi. Agen dapat mencantumkan slug yang dikonfigurasi, tetapi plugin tidak pernah menginventarisasi vault 1Password.
- Kebijakan
auto,approve, ataudenyper slug. - Izin persetujuan kedaluwarsa. Nilai yang di-cache tidak pernah melewati kebijakan saat ini.
- Setiap upaya akses dicatat dalam status SQLite bersama milik OpenClaw. Baris audit mencakup alasan yang diberikan; pastikan alasan tidak sensitif. Broker tidak pernah menyalin nilai yang diambil atau token layanan ke dalam baris audit.
- Setelah eksekusi alat saat ini, persistensi transkrip milik OpenClaw
mengganti nilai
getyang berhasil dengan metadata yang disunting. - Nilai tersebut terlihat oleh model untuk eksekusi itu. Jika model menyalinnya ke dalam pemanggilan alat atau balasan berikutnya, catatan terpisah tersebut berada di luar hook persistensi plugin ini. Pertahankan kebijakan tetap sempit dan jangan meminta model mengulangi suatu nilai.
- Plugin memanggil
opsatu kali untuk setiap cache miss. Plugin tidak mencoba ulang batas laju atau kegagalan lainnya. - Setiap pemanggilan
opberjalan dengan lingkungan minimal yang menonaktifkan integrasi aplikasi desktop 1Password (OP_LOAD_DESKTOP_APP_SETTINGS=false,OP_BIOMETRIC_UNLOCK_ENABLED=false), sehingga aplikasi 1Password yang terinstal pada host Gateway tidak pernah memicu dialog biometrik atau izin macOS.
Berikan akses baca kepada akun layanan hanya untuk vault dan item yang didaftarkan dalam konfigurasi plugin.
Sebelum memulai
Anda memerlukan:
- CLI 1Password (
op) yang terinstal pada host Gateway - akun layanan 1Password dengan akses ke item yang dipilih
- file token khusus akun layanan
Aktifkan plugin yang disertakan:
openclaw plugins enable onepasswordBuat direktori dan file token di bawah direktori status OpenClaw:
mkdir -p ~/.openclaw/credentials/onepasswordchmod 700 ~/.openclaw/credentials/onepasswordprintf '%s' "$OP_SERVICE_ACCOUNT_TOKEN" > \ ~/.openclaw/credentials/onepassword/service-account-tokenchmod 600 ~/.openclaw/credentials/onepassword/service-account-tokenunset OP_SERVICE_ACCOUNT_TOKENSaat OPENCLAW_STATE_DIR ditetapkan, ganti ~/.openclaw dengan direktori tersebut.
Plugin memperingatkan satu kali saat file token dapat dibaca atau ditulis oleh grup atau
pengguna lain.
Mengonfigurasi rahasia terdaftar
Tambahkan konfigurasi plugin ke openclaw.json:
{ "plugins": { "entries": { "onepassword": { "enabled": true, "config": { "vault": "Automation", "defaultPolicy": "approve", "cacheTtlSeconds": 300, "grantTtlHours": 720, "opTimeoutMs": 15000, "items": { "repository-token": { "item": "Repository automation token", "field": "credential", "policy": "approve", "description": "Token for repository automation", }, "model-key": { "item": "Model provider key", "vault": "Agent credentials", "policy": "auto", }, }, }, }, }, },}Slug menggunakan huruf kecil, angka, dan tanda hubung, diawali dengan huruf atau
angka, serta memuat paling banyak 64 karakter. Registri dapat memuat hingga 32
slug; deskripsi dapat memuat hingga 200 karakter. field menerima satu label
atau ID bidang, tidak boleh memuat koma, dan nilai default-nya adalah credential.
vault tingkat item menggantikan vault default. opBin dapat menetapkan jalur
absolut ke executable op; jika tidak, plugin me-resolve op dari PATH.
Judul item tidak boleh diawali dengan tanda hubung.
Menggunakan alat agen
Nama alatnya adalah onepassword.
Cantumkan slug terdaftar:
{ "action": "list" }Hasilnya hanya memuat slug, deskripsi, kebijakan, dan apakah izin tetap aktif. Hasil tersebut tidak pernah memuat nilai rahasia dan tidak mengkueri 1Password.
Minta satu rahasia:
{ "action": "get", "slug": "repository-token", "reason": "Authenticate the requested repository operation"}reason wajib diisi, tidak boleh kosong, dan dibatasi hingga 300 karakter.
get yang berhasil mengembalikan nilai beserta slug, judul item, dan
label bidang yang dikonfigurasi.
Skema alat juga mendeklarasikan parameter internal authorizationNonce. Lapisan
kebijakan menyuntikkannya setelah mengevaluasi permintaan untuk menyerahkan otorisasi
kepada pemanggilan alat yang mengeksekusi. Jangan pernah menetapkannya secara manual: hook kebijakan menimpa
setiap nilai yang diberikan, dan nilai yang tidak dikenal menyebabkan permintaan gagal.
Tingkat kebijakan dan persetujuan
auto: segera ambil dan audit permintaan.deny: blokir dan audit permintaan.approve: gunakan izin tetap yang belum kedaluwarsa, atau minta manusia untuk mengizinkan sekali, selalu mengizinkan, atau menolak.
Izinkan sekali hanya mengotorisasi pemanggilan alat saat ini. Selalu izinkan menulis izin tetap
untuk agen dan slug tersebut ke SQLite; agen lain harus mendapatkan
persetujuan masing-masing. OpenClaw menawarkan selalu izinkan hanya saat pemanggil memiliki identitas agen
yang konkret. Izin tersebut kedaluwarsa setelah grantTtlHours, dengan nilai default 720 jam.
Persetujuan yang tidak diselesaikan atau kehabisan waktu akan menolak permintaan; waktu tunggu persetujuan
maksimum adalah 600 detik. Plugin menyimpan hingga 1.024 izin tetap; pada
batas tersebut, izin terlama dikeluarkan dan agennya harus menyetujui akses berikutnya.
Setiap otorisasi yang dievaluasi hanya dapat digunakan satu kali dan diserahkan kepada pemanggilan alat yang mengeksekusi melalui status SQLite bersama, sehingga penyerahan tersebut juga berfungsi saat lebih dari satu instans plugin aktif dalam proses Gateway. Otorisasi yang tidak digunakan kedaluwarsa setelah jendela persetujuan 600 detik.
Cache dalam memori memiliki nilai default 300 detik dan dibatasi oleh registri slug
yang dikonfigurasi. Tetapkan cacheTtlSeconds ke 0 untuk menonaktifkannya. Kebijakan dievaluasi
sebelum setiap pencarian cache, dan cache hit diaudit. Pemuatan ulang konfigurasi runtime
berlaku pada setiap batas kebijakan dan eksekusi; menonaktifkan plugin atau
menghapus, menolak, atau mengubah target slug akan membatalkan otorisasi tertunda dan
nilai yang di-cache.
Memeriksa status dan riwayat audit
Tampilkan kesiapan dan jumlah registri:
openclaw onepassword statusPerintah ini melaporkan apakah file token tersedia, apakah op berhasil di-resolve beserta jalurnya,
jumlah item terdaftar, dan jumlah per kebijakan. Perintah ini tidak pernah membaca atau mencetak
token maupun nilai rahasia.
Tampilkan 50 baris audit terbaru:
openclaw onepassword auditopenclaw onepassword audit --limit 100Baris diurutkan dari yang terbaru dan menampilkan stempel waktu, agen, slug, hasil, errorCode
saat upaya gagal, serta alasan yang dipotong. Alasan disimpan sebagaimana
diberikan; broker tidak pernah menambahkan nilai yang diambil ke log audit.
Perilaku CLI 1Password
Setiap cache miss menjalankan op item get dengan item, vault, dan pemilih
bidang persis yang dikonfigurasi, output JSON, batas waktu terbatas, dan --cache=false. Proses anak
hanya menerima bidang tersebut, bukan item lengkap. Hanya
OP_SERVICE_ACCOUNT_TOKEN dan HOME yang tersedia dalam lingkungan proses anak.
Plugin melakukan satu upaya. Error RATE_LIMITED harus ditangani dengan menunggu
sebelum permintaan agen berikutnya; plugin tidak membuat perulangan percobaan ulang
otomatis.
Kode error
Upaya yang gagal memuat satu kode error tertutup dalam hasil alat dan baris audit.
Error akses 1Password:
| Kode | Arti |
|---|---|
TOKEN_MISSING |
File token tidak tersedia atau kosong |
OP_NOT_FOUND |
Binary op tidak dapat di-resolve |
ITEM_NOT_FOUND |
Item yang dikonfigurasi tidak ada dalam vault |
FIELD_NOT_FOUND |
Bidang yang dikonfigurasi tidak ada pada item; label yang tersedia dicantumkan |
RATE_LIMITED |
Batas laju akun layanan 1Password tercapai |
AUTH_FAILED |
Autentikasi akun layanan gagal |
TIMEOUT |
op melampaui opTimeoutMs |
OP_ERROR |
Kegagalan op lainnya atau output tidak valid |
Error kebijakan dan validasi:
| Kode | Arti |
|---|---|
INVALID_ACTION, INVALID_REASON, INVALID_SLUG |
Permintaan gagal dalam validasi input |
UNKNOWN_SLUG |
Slug tidak ada dalam registri yang dikonfigurasi |
TOOL_CALL_ID_MISSING |
Pemanggilan tiba tanpa ID pemanggilan alat |
POLICY_NOT_EVALUATED |
Tidak ada otorisasi yang cocok untuk pemanggilan ini; permintaan tidak disetujui kebijakan |
POLICY_CHANGED |
Konfigurasi berubah antara persetujuan dan eksekusi |
GRANT_EXPIRED |
Izin tetap kedaluwarsa sebelum eksekusi |
APPROVAL_CANCELLED |
Proses dibatalkan saat persetujuan masih tertunda |