{ "title": "Skills Config", "content": "All skills-related configuration lives under `skills` in `~/.openclaw/openclaw.json`.\n\n* `allowBundled`: optional allowlist for **bundled** skills only. When set, only\n bundled skills in the list are eligible (managed/workspace skills unaffected).\n* `load.extraDirs`: additional skill directories to scan (lowest precedence).\n* `load.watch`: watch skill folders and refresh the skills snapshot (default: true).\n* `load.watchDebounceMs`: debounce for skill watcher events in milliseconds (default: 250).\n* `install.preferBrew`: prefer brew installers when available (default: true).\n* `install.nodeManager`: node installer preference (`npm` | `pnpm` | `yarn` | `bun`, default: npm).\n This only affects **skill installs**; the Gateway runtime should still be Node\n (Bun not recommended for WhatsApp/Telegram).\n* `entries.`: per-skill overrides.\n\n* `enabled`: set `false` to disable a skill even if it’s bundled/installed.\n* `env`: environment variables injected for the agent run (only if not already set).\n* `apiKey`: optional convenience for skills that declare a primary env var.\n\n* Keys under `entries` map to the skill name by default. If a skill defines\n `metadata.openclaw.skillKey`, use that key instead.\n* Changes to skills are picked up on the next agent turn when the watcher is enabled.\n\n### Sandboxed skills + env vars\n\nWhen a session is **sandboxed**, skill processes run inside Docker. The sandbox\ndoes **not** inherit the host `process.env`.\n\n* `agents.defaults.sandbox.docker.env` (or per-agent `agents.list[].sandbox.docker.env`)\n* bake the env into your custom sandbox image\n\nGlobal `env` and `skills.entries..env/apiKey` apply to **host** runs only.", "code_samples": [], "headings": [ { "level": "h2", "text": "Fields", "id": "fields" }, { "level": "h2", "text": "Notes", "id": "notes" }, { "level": "h3", "text": "Sandboxed skills + env vars", "id": "sandboxed-skills-+-env-vars" } ], "url": "llms-txt#skills-config", "links": [] }