tools.* dan penyiapan penyedia / URL dasar kustom. Untuk agen, saluran, dan kunci konfigurasi tingkat atas lainnya, lihat Referensi konfigurasi.
Alat
Profil alat
tools.profile menetapkan allowlist dasar sebelum tools.allow/tools.deny:
Onboarding lokal menetapkan default konfigurasi lokal baru ke
tools.profile: "coding" saat belum diatur (profil eksplisit yang sudah ada dipertahankan).| Profil | Mencakup |
|---|---|
minimal | hanya session_status |
coding | group:fs, group:runtime, group:web, group:sessions, group:memory, cron, image, image_generate, skill_workshop, video_generate |
messaging | group:messaging, sessions_list, sessions_history, sessions_send, session_status |
full | Tanpa pembatasan (sama seperti tidak diatur) |
Grup alat
| Grup | Alat |
|---|---|
group:runtime | exec, process, code_execution (bash diterima sebagai alias untuk exec) |
group:fs | read, write, edit, apply_patch |
group:sessions | sessions_list, sessions_history, sessions_send, sessions_spawn, sessions_yield, subagents, session_status |
group:memory | memory_search, memory_get |
group:web | web_search, x_search, web_fetch |
group:ui | browser, canvas |
group:automation | heartbeat_respond, cron, gateway |
group:messaging | message |
group:nodes | nodes |
group:agents | agents_list, update_plan |
group:media | image, image_generate, music_generate, video_generate, tts |
group:openclaw | Semua alat bawaan (tidak termasuk plugin penyedia) |
group:plugins | Alat yang dimiliki oleh plugin yang dimuat, termasuk server MCP terkonfigurasi yang diekspos melalui bundle-mcp |
Alat MCP dan plugin di dalam kebijakan alat sandbox
Server MCP terkonfigurasi diekspos sebagai alat milik plugin di bawah id pluginbundle-mcp. Profil alat normal dapat mengizinkannya, tetapi tools.sandbox.tools adalah gerbang tambahan untuk sesi yang disandbox. Jika mode sandbox adalah "all" atau "non-main", sertakan salah satu entri ini dalam allowlist alat sandbox saat alat MCP/plugin harus terlihat:
bundle-mcpuntuk server MCP yang dikelola OpenClaw darimcp.servers- id plugin untuk plugin native tertentu
group:pluginsuntuk semua alat milik plugin yang dimuat- nama alat server MCP persis atau glob server seperti
outlook__send_mailatauoutlook__*saat Anda hanya menginginkan satu server
mcp.servers. Karakter non-[A-Za-z0-9_-] menjadi -, nama yang tidak diawali huruf mendapatkan prefiks mcp-, dan prefiks panjang atau duplikat dapat dipotong atau diberi sufiks; misalnya, mcp.servers["Outlook Graph"] menggunakan glob seperti outlook-graph__*.
openclaw doctor untuk menangkap bentuk ini bagi server yang dikelola OpenClaw di mcp.servers. Server MCP yang dimuat dari manifes plugin bundled atau Claude .mcp.json menggunakan gerbang sandbox yang sama, tetapi diagnostik ini belum menghitung sumber tersebut; gunakan entri allowlist yang sama jika alatnya menghilang dalam giliran yang disandbox.
tools.codeMode
tools.codeMode mengaktifkan permukaan mode kode generik OpenClaw. Saat diaktifkan
untuk run dengan alat, model hanya melihat exec dan wait; alat OpenClaw
normal berpindah ke balik jembatan katalog tools.* di dalam sandbox, dan alat MCP
tersedia melalui namespace MCP yang dihasilkan.
API.list("mcp") dan
API.read("mcp/<server>.d.ts") untuk memeriksa signature bergaya TypeScript sebelum
memanggil MCP.<server>.<tool>(). Lihat Mode kode untuk
kontrak runtime, batasan, dan langkah debugging.
tools.allow / tools.deny
Kebijakan allow/deny alat global (deny menang). Tidak peka huruf besar-kecil, mendukung wildcard *. Diterapkan bahkan saat sandbox Docker nonaktif.
write dan apply_patch adalah id alat terpisah. allow: ["write"] juga mengaktifkan apply_patch untuk model yang kompatibel, tetapi deny: ["write"] tidak menolak apply_patch. Untuk memblokir semua mutasi file, tolak group:fs atau cantumkan setiap alat yang melakukan mutasi secara eksplisit:
tools.byProvider
Membatasi alat lebih lanjut untuk penyedia atau model tertentu. Urutan: profil dasar → profil penyedia → allow/deny.
tools.toolsBySender
Membatasi alat untuk identitas peminta tertentu. Ini adalah defense-in-depth di atas kontrol akses saluran; nilai pengirim harus berasal dari adapter saluran, bukan teks pesan.
channel:<channelId>:<senderId>, id:<senderId>, e164:<phone>, username:<handle>, name:<displayName>, atau "*". Id saluran adalah id kanonis OpenClaw; alias seperti teams dinormalisasi menjadi msteams. Kunci legacy tanpa prefiks diterima sebagai id: saja. Urutan pencocokan adalah channel+id, id, e164, username, name, lalu wildcard.
agents.list[].tools.toolsBySender per agen menimpa kecocokan pengirim global saat cocok, bahkan dengan kebijakan kosong {}.
tools.elevated
Mengontrol akses exec elevated di luar sandbox:
- Override per agen (
agents.list[].tools.elevated) hanya dapat memperketat. /elevated on|off|ask|fullmenyimpan status per sesi; arahan inline berlaku untuk satu pesan.execelevated melewati sandboxing dan menggunakan jalur escape terkonfigurasi (gatewaysecara default, ataunodesaat target exec adalahnode).
tools.exec
tools.loopDetection
Pemeriksaan keamanan loop alat dinonaktifkan secara default. Atur enabled: true untuk mengaktifkan deteksi. Pengaturan dapat didefinisikan secara global di tools.loopDetection dan dioverride per agen di agents.list[].tools.loopDetection.
Riwayat panggilan alat maksimum yang dipertahankan untuk analisis loop.
Ambang pola tanpa kemajuan berulang untuk peringatan.
Ambang berulang yang lebih tinggi untuk memblokir loop kritis.
Ambang penghentian keras untuk run tanpa kemajuan apa pun.
Peringatkan pada panggilan alat yang sama/argumen yang sama secara berulang.
Peringatkan/blokir pada alat polling yang dikenal (
process.poll, command_status, dll.).Peringatkan/blokir pada pola pasangan tanpa kemajuan yang bergantian.
tools.web
tools.media
Mengonfigurasi pemahaman media masuk (gambar/audio/video):
Kolom entri model media
Kolom entri model media
Entri penyedia (
type: "provider" atau dihilangkan):provider: id penyedia API (openai,anthropic,google/gemini,groq, dll.)model: penggantian id modelprofile/preferredProfile: pemilihan profilauth-profiles.json
type: "cli"):command: executable yang dijalankanargs: argumen bertemplat (mendukung{{MediaPath}},{{Prompt}},{{MaxChars}}, dll.;openclaw doctor --fixmemigrasikan placeholder{input}yang tidak berlaku lagi ke{{MediaPath}})
capabilities: daftar opsional (image,audio,video). Default:openai/anthropic/minimax→ gambar,google→ gambar+audio+video,groq→ audio.prompt,maxChars,maxBytes,timeoutSeconds,language: penggantian per entri.- Entri
tools.media.image.timeoutSecondsdan entri model gambartimeoutSecondsyang cocok juga berlaku saat agen memanggil toolimageeksplisit. Untuk pemahaman gambar, timeout ini berlaku pada permintaan itu sendiri dan tidak dikurangi oleh pekerjaan persiapan sebelumnya. - Kegagalan akan fallback ke entri berikutnya.
auth-profiles.json → variabel env → models.providers.*.apiKey.Kolom penyelesaian async:asyncCompletion.directSend: flag kompatibilitas yang tidak berlaku lagi. Tugas media async yang selesai tetap dimediasi sesi peminta sehingga agen menerima hasilnya, memutuskan cara memberi tahu pengguna, dan menggunakan tool pesan saat pengiriman sumber memerlukannya.
tools.agentToAgent
tools.sessions
Mengontrol sesi mana yang dapat ditargetkan oleh tool sesi (sessions_list, sessions_history, sessions_send).
Default: tree (sesi saat ini + sesi yang dibuat olehnya, seperti subagen).
Cakupan visibilitas
Cakupan visibilitas
self: hanya kunci sesi saat ini.tree: sesi saat ini + sesi yang dibuat oleh sesi saat ini (subagen).agent: sesi apa pun yang dimiliki oleh id agen saat ini (dapat mencakup pengguna lain jika Anda menjalankan sesi per pengirim di bawah id agen yang sama).all: sesi apa pun. Penargetan lintas agen tetap memerlukantools.agentToAgent.- Pembatasan sandbox: saat sesi saat ini berada dalam sandbox dan
agents.defaults.sandbox.sessionToolsVisibility="spawned", visibilitas dipaksa menjaditreemeskipuntools.sessions.visibility="all". - Saat bukan
all,sessions_listmenyertakan kolomvisibilityyang ringkas yang menjelaskan mode efektif dan peringatan bahwa beberapa sesi mungkin dihilangkan di luar cakupan saat ini.
tools.sessions_spawn
Mengontrol dukungan lampiran inline untuk sessions_spawn.
Catatan lampiran
Catatan lampiran
- Lampiran memerlukan
enabled: true. - Lampiran subagen dimaterialisasikan ke workspace anak di
.openclaw/attachments/<uuid>/dengan.manifest.json. - Lampiran ACP hanya gambar dan diteruskan secara inline ke runtime ACP setelah batas jumlah file, byte per file, dan total byte yang sama lolos.
- Konten lampiran otomatis disunting dari persistensi transkrip.
- Input Base64 divalidasi dengan pemeriksaan alfabet/padding yang ketat dan guard ukuran pra-dekode.
- Izin file lampiran subagen adalah
0700untuk direktori dan0600untuk file. - Pembersihan subagen mengikuti kebijakan
cleanup:deleteselalu menghapus lampiran;keepmempertahankannya hanya saatretainOnSessionKeep: true.
tools.experimental
Flag tool bawaan eksperimental. Default nonaktif kecuali aturan aktif otomatis GPT-5 strict-agentic berlaku.
planTool: mengaktifkan toolupdate_planterstruktur untuk pelacakan pekerjaan multi-langkah yang tidak trivial.- Default:
falsekecualiagents.defaults.embeddedAgent.executionContract(atau penggantian per agen) diatur ke"strict-agentic"untuk proses OpenAI atau OpenAI Codex keluarga GPT-5. Aturtrueuntuk memaksa tool aktif di luar cakupan tersebut, ataufalseuntuk tetap menonaktifkannya bahkan untuk proses GPT-5 strict-agentic. - Saat diaktifkan, prompt sistem juga menambahkan panduan penggunaan agar model hanya menggunakannya untuk pekerjaan substansial dan menjaga paling banyak satu langkah
in_progress.
agents.defaults.subagents
model: model default untuk sub-agen yang dibuat. Jika dihilangkan, sub-agen mewarisi model pemanggil.allowAgents: allowlist default id agen target yang dikonfigurasi untuksessions_spawnsaat agen peminta tidak menetapkansubagents.allowAgentsmiliknya sendiri (["*"]= target terkonfigurasi apa pun; default: hanya agen yang sama). Entri usang yang konfigurasi agennya telah dihapus ditolak olehsessions_spawndan dihilangkan dariagents_list; jalankanopenclaw doctor --fixuntuk membersihkannya.runTimeoutSeconds: timeout default (detik) untuksessions_spawn.0berarti tanpa timeout.announceTimeoutMs: timeout per panggilan (milidetik) untuk upaya pengiriman announceagentGateway. Default:120000. Percobaan ulang sementara dapat membuat total waktu tunggu announce lebih lama dari satu timeout yang dikonfigurasi.- Kebijakan tool per subagen:
tools.subagents.tools.allow/tools.subagents.tools.deny.
Penyedia kustom dan URL dasar
Plugin penyedia menerbitkan baris katalog modelnya sendiri. Tambahkan penyedia kustom melaluimodels.providers di konfigurasi atau ~/.openclaw/agents/<agentId>/agent/models.json.
Mengonfigurasi baseUrl penyedia kustom/lokal juga merupakan keputusan kepercayaan jaringan yang sempit untuk permintaan HTTP model: OpenClaw mengizinkan origin scheme://host:port persis itu melalui jalur fetch yang dijaga, tanpa menambahkan opsi konfigurasi terpisah atau memercayai origin privat lain.
Autentikasi dan prioritas penggabungan
Autentikasi dan prioritas penggabungan
- Gunakan
authHeader: true+headersuntuk kebutuhan autentikasi kustom. - Ganti root konfigurasi agen dengan
OPENCLAW_AGENT_DIR. - Prioritas penggabungan untuk ID penyedia yang cocok:
- Nilai
baseUrlmodels.jsonagen yang tidak kosong menang. - Nilai
apiKeyagen yang tidak kosong menang hanya saat penyedia tersebut tidak dikelola SecretRef dalam konteks konfigurasi/profil autentikasi saat ini. - Nilai
apiKeypenyedia yang dikelola SecretRef disegarkan dari marker sumber (ENV_VAR_NAMEuntuk referensi env,secretref-manageduntuk referensi file/exec) alih-alih mempertahankan secret yang telah di-resolve. - Nilai header penyedia yang dikelola SecretRef disegarkan dari marker sumber (
secretref-env:ENV_VAR_NAMEuntuk referensi env,secretref-manageduntuk referensi file/exec). apiKey/baseUrlagen yang kosong atau hilang fallback kemodels.providersdalam konfigurasi.contextWindow/maxTokensmodel yang cocok menggunakan nilai yang lebih tinggi antara konfigurasi eksplisit dan nilai katalog implisit.contextTokensmodel yang cocok mempertahankan batas runtime eksplisit saat ada; gunakan ini untuk membatasi konteks efektif tanpa mengubah metadata model native.- Katalog Plugin penyedia disimpan sebagai shard katalog yang dihasilkan dan dimiliki Plugin di bawah state Plugin agen.
- Gunakan
models.mode: "replace"saat Anda ingin konfigurasi menulis ulang sepenuhnyamodels.jsondan shard katalog Plugin aktif. - Persistensi marker bersifat otoritatif terhadap sumber: marker ditulis dari snapshot konfigurasi sumber aktif (pra-resolusi), bukan dari nilai secret runtime yang telah di-resolve.
- Nilai
Detail kolom penyedia
Katalog tingkat atas
Katalog tingkat atas
models.mode: perilaku katalog penyedia (mergeataureplace).models.providers: peta penyedia kustom yang dikunci oleh id penyedia.- Edit aman: gunakan
openclaw config set models.providers.<id> '<json>' --strict-json --mergeatauopenclaw config set models.providers.<id>.models '<json-array>' --strict-json --mergeuntuk pembaruan aditif.config setmenolak penggantian destruktif kecuali Anda meneruskan--replace.
- Edit aman: gunakan
Koneksi penyedia dan autentikasi
Koneksi penyedia dan autentikasi
models.providers.*.api: adaptor permintaan (openai-completions,openai-responses,anthropic-messages,google-generative-ai, dll). Untuk backend/v1/chat/completionsyang di-host sendiri seperti MLX, vLLM, SGLang, dan sebagian besar server lokal yang kompatibel dengan OpenAI, gunakanopenai-completions. Penyedia kustom denganbaseUrltetapi tanpaapimenggunakan defaultopenai-completions; aturopenai-responseshanya ketika backend mendukung/v1/responses.models.providers.*.apiKey: kredensial penyedia (utamakan substitusi SecretRef/env).models.providers.*.auth: strategi autentikasi (api-key,token,oauth,aws-sdk).models.providers.*.contextWindow: jendela konteks native default untuk model di bawah penyedia ini ketika entri model tidak menetapkancontextWindow.models.providers.*.contextTokens: batas konteks runtime efektif default untuk model di bawah penyedia ini ketika entri model tidak menetapkancontextTokens.models.providers.*.maxTokens: batas token output default untuk model di bawah penyedia ini ketika entri model tidak menetapkanmaxTokens.models.providers.*.timeoutSeconds: timeout permintaan HTTP model opsional per penyedia dalam detik, termasuk koneksi, header, body, dan penanganan pembatalan total permintaan.models.providers.*.injectNumCtxForOpenAICompat: untuk Ollama +openai-completions, sisipkanoptions.num_ctxke dalam permintaan (default:true).models.providers.*.authHeader: paksa transport kredensial di headerAuthorizationsaat diperlukan.models.providers.*.baseUrl: URL dasar API upstream.models.providers.*.headers: header statis tambahan untuk perutean proxy/tenant.
Override transport permintaan
Override transport permintaan
models.providers.*.request: override transport untuk permintaan HTTP penyedia model.request.headers: header tambahan (digabungkan dengan default penyedia). Nilai menerima SecretRef.request.auth: override strategi autentikasi. Mode:"provider-default"(gunakan autentikasi bawaan penyedia),"authorization-bearer"(dengantoken),"header"(denganheaderName,value,prefixopsional).request.proxy: override proxy HTTP. Mode:"env-proxy"(gunakan variabel envHTTP_PROXY/HTTPS_PROXY),"explicit-proxy"(denganurl). Kedua mode menerima sub-objektlsopsional.request.tls: override TLS untuk koneksi langsung. Kolom:ca,cert,key,passphrase(semuanya menerima SecretRef),serverName,insecureSkipVerify.request.allowPrivateNetwork: saattrue, izinkan permintaan HTTP penyedia model ke rentang privat, CGNAT, atau serupa melalui guard fetch HTTP penyedia. URL dasar penyedia kustom/lokal sudah memercayai origin tepat yang dikonfigurasi, kecuali origin metadata/link-local, yang tetap diblokir tanpa opt-in eksplisit. Atur ini kefalseuntuk keluar dari kepercayaan origin tepat. WebSocket menggunakanrequestyang sama untuk header/TLS tetapi bukan gate SSRF fetch tersebut. Defaultfalse.
Entri katalog model
Entri katalog model
models.providers.*.models: entri katalog model penyedia eksplisit.models.providers.*.models.*.input: modalitas input model. Gunakan["text"]untuk model khusus teks dan["text", "image"]untuk model gambar/vision native. Lampiran gambar hanya disisipkan ke giliran agen ketika model yang dipilih ditandai mampu menangani gambar.models.providers.*.models.*.contextWindow: metadata jendela konteks model native. Ini mengesampingkancontextWindowtingkat penyedia untuk model tersebut.models.providers.*.models.*.contextTokens: batas konteks runtime opsional. Ini mengesampingkancontextTokenstingkat penyedia; gunakan ketika Anda menginginkan anggaran konteks efektif yang lebih kecil daripadacontextWindownative model;openclaw models listmenampilkan kedua nilai saat berbeda.models.providers.*.models.*.compat.supportsDeveloperRole: petunjuk kompatibilitas opsional. Untukapi: "openai-completions"denganbaseUrlnon-native yang tidak kosong (host bukanapi.openai.com), OpenClaw memaksa ini menjadifalsesaat runtime.baseUrlkosong/dihilangkan mempertahankan perilaku default OpenAI.models.providers.*.models.*.compat.requiresStringContent: petunjuk kompatibilitas opsional untuk endpoint chat khusus string yang kompatibel dengan OpenAI. Saattrue, OpenClaw meratakan arraymessages[].contentteks murni menjadi string biasa sebelum mengirim permintaan.models.providers.*.models.*.compat.strictMessageKeys: petunjuk kompatibilitas opsional untuk endpoint chat ketat yang kompatibel dengan OpenAI. Saattrue, OpenClaw memangkas objek pesan Chat Completions keluar menjadiroledancontentsebelum mengirim permintaan.models.providers.*.models.*.compat.thinkingFormat: petunjuk payload thinking opsional. Gunakan"together"untukreasoning.enabledbergaya Together,"qwen"untukenable_thinkingtingkat atas, atau"qwen-chat-template"untukchat_template_kwargs.enable_thinkingpada server keluarga Qwen yang kompatibel dengan OpenAI yang mendukung kwargs chat-template tingkat permintaan, seperti vLLM. Model Qwen vLLM yang dikonfigurasi mengekspos pilihan biner/think(off,on) untuk format ini.models.providers.*.models.*.compat.requiresReasoningContentOnAssistantMessages: petunjuk kompatibilitas opsional untuk backend Chat Completions bergaya DeepSeek yang mengharuskan pesan asisten sebelumnya mempertahankanreasoning_contentsaat replay. Saattrue, OpenClaw mempertahankan kolom tersebut pada pesan asisten keluar. Gunakan ini saat menghubungkan proxy kustom yang kompatibel dengan DeepSeek yang menolak permintaan setelah reasoning dipangkas. Defaultfalse.
Penemuan Amazon Bedrock
Penemuan Amazon Bedrock
plugins.entries.amazon-bedrock.config.discovery: root pengaturan penemuan otomatis Bedrock.plugins.entries.amazon-bedrock.config.discovery.enabled: aktifkan/nonaktifkan penemuan implisit.plugins.entries.amazon-bedrock.config.discovery.region: region AWS untuk penemuan.plugins.entries.amazon-bedrock.config.discovery.providerFilter: filter provider-id opsional untuk penemuan tertarget.plugins.entries.amazon-bedrock.config.discovery.refreshInterval: interval polling untuk penyegaran penemuan.plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow: jendela konteks fallback untuk model yang ditemukan.plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens: token output maksimum fallback untuk model yang ditemukan.
--custom-image-input untuk memaksa metadata mampu gambar atau --custom-text-input untuk memaksa metadata khusus teks.
Contoh penyedia
Cerebras (GLM 4.7 / GPT OSS)
Cerebras (GLM 4.7 / GPT OSS)
Plugin penyedia eksternal resmi Gunakan
cerebras dapat mengonfigurasi ini melalui openclaw onboard --auth-choice cerebras-api-key. Gunakan konfigurasi penyedia eksplisit hanya saat mengesampingkan default.cerebras/zai-glm-4.7 untuk Cerebras; zai/glm-4.7 untuk Z.AI langsung.Kimi Coding
Kimi Coding
openclaw onboard --auth-choice kimi-code-api-key.Model lokal (LM Studio)
Model lokal (LM Studio)
Lihat Model Lokal. Ringkasnya: jalankan model lokal besar melalui LM Studio Responses API pada perangkat keras serius; pertahankan model hosted yang digabungkan untuk fallback.
MiniMax M3 (langsung)
MiniMax M3 (langsung)
MINIMAX_API_KEY. Pintasan: openclaw onboard --auth-choice minimax-global-api atau openclaw onboard --auth-choice minimax-cn-api. Katalog model menggunakan default M3 dan juga menyertakan varian M2.7. Pada jalur streaming yang kompatibel dengan Anthropic, OpenClaw menonaktifkan thinking MiniMax M2.x secara default kecuali Anda menetapkan thinking sendiri secara eksplisit; MiniMax-M3 (dan M3.x) tetap berada pada jalur thinking adaptif/dihilangkan milik penyedia secara default. /fast on atau params.fastMode: true menulis ulang MiniMax-M2.7 menjadi MiniMax-M2.7-highspeed.Moonshot AI (Kimi)
Moonshot AI (Kimi)
baseUrl: "https://api.moonshot.cn/v1" atau openclaw onboard --auth-choice moonshot-api-key-cn.Endpoint native Moonshot mengiklankan kompatibilitas penggunaan streaming pada transport bersama openai-completions, dan OpenClaw mendasarkannya pada kapabilitas endpoint, bukan hanya id penyedia bawaan.OpenCode
OpenCode
OPENCODE_API_KEY (atau OPENCODE_ZEN_API_KEY). Gunakan ref opencode/... untuk katalog Zen atau ref opencode-go/... untuk katalog Go. Pintasan: openclaw onboard --auth-choice opencode-zen atau openclaw onboard --auth-choice opencode-go.Synthetic (Anthropic-compatible)
Synthetic (Anthropic-compatible)
/v1 (klien Anthropic menambahkannya). Pintasan: openclaw onboard --auth-choice synthetic-api-key.Z.AI (GLM-4.7)
Z.AI (GLM-4.7)
ZAI_API_KEY. Referensi model menggunakan ID penyedia kanonis zai/*. Pintasan: openclaw onboard --auth-choice zai-api-key.- Endpoint umum:
https://api.z.ai/api/paas/v4 - Endpoint coding (default):
https://api.z.ai/api/coding/paas/v4 - Untuk endpoint umum, definisikan penyedia khusus dengan penggantian URL dasar.
Terkait
- Konfigurasi — agen
- Konfigurasi — channel
- Referensi konfigurasi — kunci tingkat atas lainnya
- Alat dan plugin