Skills Config
Most skills loader/install configuration lives underskills in
~/.openclaw/openclaw.json. Agent-specific skill visibility lives under
agents.defaults.skills and agents.list[].skills.
agents.defaults.imageGenerationModel
plus the core image_generate tool. skills.entries.* is only for custom or
third-party skill workflows.
If you select a specific image provider/model, also configure that provider’s
auth/API key. Typical examples: GEMINI_API_KEY or GOOGLE_API_KEY for
google/*, OPENAI_API_KEY for openai/*, and FAL_KEY for fal/*.
Examples:
- Native Nano Banana-style setup:
agents.defaults.imageGenerationModel.primary: "google/gemini-3.1-flash-image-preview" - Native fal setup:
agents.defaults.imageGenerationModel.primary: "fal/fal-ai/flux/dev"
Agent skill allowlists
Use agent config when you want the same machine/workspace skill roots, but a different visible skill set per agent.agents.defaults.skills: shared baseline allowlist for agents that omitagents.list[].skills.- Omit
agents.defaults.skillsto leave skills unrestricted by default. agents.list[].skills: explicit final skill set for that agent; it does not merge with defaults.agents.list[].skills: []: expose no skills for that agent.
Fields
- Built-in skill roots always include
~/.openclaw/skills,~/.agents/skills,<workspace>/.agents/skills, and<workspace>/skills. allowBundled: optional allowlist for bundled skills only. When set, only bundled skills in the list are eligible (managed, agent, and workspace skills unaffected).load.extraDirs: additional skill directories to scan (lowest precedence).load.watch: watch skill folders and refresh the skills snapshot (default: true).load.watchDebounceMs: debounce for skill watcher events in milliseconds (default: 250).install.preferBrew: prefer brew installers when available (default: true).install.nodeManager: node installer preference (npm|pnpm|yarn|bun, default: npm). This only affects skill installs; the Gateway runtime should still be Node (Bun not recommended for WhatsApp/Telegram).openclaw setup --node-manageris narrower and currently acceptsnpm,pnpm, orbun. Setskills.install.nodeManager: "yarn"manually if you want Yarn-backed skill installs.
entries.<skillKey>: per-skill overrides.agents.defaults.skills: optional default skill allowlist inherited by agents that omitagents.list[].skills.agents.list[].skills: optional per-agent final skill allowlist; explicit lists replace inherited defaults instead of merging.
enabled: setfalseto disable a skill even if it’s bundled/installed.env: environment variables injected for the agent run (only if not already set).apiKey: optional convenience for skills that declare a primary env var. Supports plaintext string or SecretRef object ({ source, provider, id }).
Notes
- Keys under
entriesmap to the skill name by default. If a skill definesmetadata.openclaw.skillKey, use that key instead. - Load precedence is
<workspace>/skills→<workspace>/.agents/skills→~/.agents/skills→~/.openclaw/skills→ bundled skills →skills.load.extraDirs. - Changes to skills are picked up on the next agent turn when the watcher is enabled.
Sandboxed skills + env vars
When a session is sandboxed, skill processes run inside Docker. The sandbox does not inherit the hostprocess.env.
Use one of:
agents.defaults.sandbox.docker.env(or per-agentagents.list[].sandbox.docker.env)- bake the env into your custom sandbox image
env and skills.entries.<skill>.env/apiKey apply to host runs only.