/v1/* yang kompatibel dengan OpenAI, autentikasi bearer dengan rahasia bersama diperlakukan sebagai akses operator tepercaya untuk seluruh gateway.
POST /tools/invoke- Port yang sama dengan Gateway (multipleks WS + HTTP):
http://<gateway-host>:<port>/tools/invoke - Ukuran maksimum default isi permintaan: 2 MB
Autentikasi
Menggunakan konfigurasi autentikasi Gateway. Jalur autentikasi HTTP yang umum:- autentikasi rahasia bersama (
gateway.auth.mode="token"atau"password"):Authorization: Bearer <token-or-password> - autentikasi HTTP tepercaya yang membawa identitas (
gateway.auth.mode="trusted-proxy"): rutekan melalui proksi sadar-identitas yang dikonfigurasi dan biarkan proksi tersebut menyisipkan header identitas yang diperlukan - autentikasi terbuka pada ingress privat (
gateway.auth.mode="none"): header autentikasi tidak diperlukan
mode="token"menggunakangateway.auth.token(atauOPENCLAW_GATEWAY_TOKEN).mode="password"menggunakangateway.auth.password(atauOPENCLAW_GATEWAY_PASSWORD).mode="trusted-proxy"mengharuskan permintaan HTTP berasal dari sumber proksi tepercaya yang dikonfigurasi; proksi local loopback pada host yang sama memerlukangateway.auth.trustedProxy.allowLoopback = truesecara eksplisit.- Pemanggil internal pada host yang sama yang melewati proksi dapat menggunakan
gateway.auth.password/OPENCLAW_GATEWAY_PASSWORDsebagai fallback langsung lokal. Adanya bukti headerForwarded,X-Forwarded-*, atauX-Real-IPakan tetap mempertahankan permintaan pada jalur proksi tepercaya. - Jika
gateway.auth.rateLimitdikonfigurasi dan terjadi terlalu banyak kegagalan autentikasi, endpoint mengembalikan429denganRetry-After.
Batas keamanan (penting)
Perlakukan endpoint ini sebagai permukaan dengan akses operator penuh untuk instans gateway.- Autentikasi bearer HTTP di sini bukan model cakupan sempit per pengguna.
- Token/kata sandi Gateway yang valid untuk endpoint ini harus diperlakukan seperti kredensial pemilik/operator.
- Untuk mode autentikasi rahasia bersama (
tokendanpassword), endpoint memulihkan cakupan default operator penuh yang normal meskipun pemanggil mengirim headerx-openclaw-scopesyang lebih sempit. - Autentikasi rahasia bersama juga memperlakukan pemanggilan alat langsung pada endpoint ini sebagai giliran dari pengirim-pemilik.
- Mode HTTP tepercaya yang membawa identitas (autentikasi proksi tepercaya, atau
gateway.auth.mode="none"pada ingress privat) mematuhix-openclaw-scopesjika tersedia dan jika tidak, kembali ke kumpulan cakupan default operator yang normal. - Pertahankan endpoint ini hanya pada local loopback/tailnet/ingress privat; jangan mengeksposnya secara langsung ke internet publik.
Isi permintaan
tool/name(string, wajib): nama alat yang akan dipanggil.namediprioritaskan jika keduanya dikirim.action(string, opsional): digabungkan ke dalamargs.actionjika skema alat mendukung propertiactiondanargsbelum menetapkannya.args(objek, opsional): argumen khusus alat.sessionKey(string, opsional): kunci sesi target. Jika dihilangkan atau"main", Gateway menggunakan kunci sesi utama yang dikonfigurasi (mematuhisession.mainKeydan agen default, atauglobaldalam cakupan sesi global).agentId(string, opsional): menyelesaikan kunci sesi untuk agen tersebut. Menghasilkan kesalahan400jika bertentangan dengansessionKeyeksplisit yang sudah dipetakan ke agen lain.idempotencyKey(string, opsional): digunakan untuk menghasilkan ID pemanggilan alat yang stabil bagi pemanggilan tersebut.dryRun(boolean, opsional): dicadangkan untuk penggunaan mendatang; saat ini diabaikan.
Perilaku kebijakan + perutean
Ketersediaan alat difilter melalui rantai kebijakan yang sama dengan yang digunakan oleh agen Gateway:tools.profile/tools.byProvider.profiletools.allow/tools.byProvider.allowagents.<id>.tools.allow/agents.<id>.tools.byProvider.allow- kebijakan grup (jika kunci sesi dipetakan ke grup atau kanal)
- kebijakan subagen (ketika memanggil dengan kunci sesi subagen)
- Persetujuan eksekusi adalah pagar pengaman operator, bukan batas otorisasi terpisah untuk endpoint HTTP ini. Jika suatu alat dapat dijangkau di sini melalui autentikasi Gateway + kebijakan alat,
/tools/invoketidak menambahkan permintaan persetujuan tambahan per panggilan. - Jika
execdapat dijangkau di sini, perlakukan sebagai permukaan shell yang dapat mengubah keadaan. Menolakwrite,edit,apply_patch, atau alat tulis sistem berkas melalui HTTP tidak membuat eksekusi shell menjadi hanya-baca. - Jangan bagikan kredensial bearer Gateway dengan pemanggil yang tidak tepercaya. Jika Anda memerlukan pemisahan lintas batas kepercayaan, jalankan gateway terpisah (idealnya pada pengguna OS/host yang terpisah).
cron, gateway, dan nodes juga hanya untuk pemilik: bahkan di luar daftar penolakan default ini, pemanggil yang bukan pemilik tidak dapat memanggilnya pada permukaan ini.
Sesuaikan daftar penolakan umum melalui gateway.tools:
gateway.tools.allow adalah penggantian paparan, bukan peningkatan cakupan. Dalam mode HTTP yang membawa identitas, cron, gateway, dan nodes tetap tidak tersedia bagi pemanggil tanpa identitas pemilik/admin (operator.admin), meskipun tercantum dalam gateway.tools.allow. Autentikasi bearer rahasia bersama tetap mengikuti aturan operator tepercaya penuh di atas.
Untuk membantu kebijakan grup menyelesaikan konteks, Anda dapat menetapkan secara opsional:
x-openclaw-message-channel: <channel>(contoh:slack,telegram)x-openclaw-account-id: <accountId>(ketika terdapat beberapa akun)x-openclaw-message-to: <target>(target pengiriman untuk kebijakan alat pesan)x-openclaw-thread-id: <threadId>(konteks utas untuk kebijakan alat pesan)