Skills and automation
How do I customize skills without keeping the repo dirty?
How do I customize skills without keeping the repo dirty?
~/.openclaw/skills/<name>/SKILL.md (or add a folder via skills.load.extraDirs in ~/.openclaw/openclaw.json). Precedence: <workspace>/skills -> <workspace>/.agents/skills -> ~/.agents/skills -> ~/.openclaw/skills -> bundled -> skills.load.extraDirs, so managed overrides win over bundled skills without touching git. To install globally but limit visibility to some agents, keep the shared copy in ~/.openclaw/skills and control visibility with agents.defaults.skills / agents.entries.*.skills. Only upstream-worthy edits should go out as PRs against the repo copy.Can I load skills from a custom folder?
Can I load skills from a custom folder?
skills.load.extraDirs in ~/.openclaw/openclaw.json (lowest precedence in the order above). clawhub installs into ./skills by default, which OpenClaw treats as <workspace>/skills on the next session. To limit visibility to certain agents, pair with agents.defaults.skills or agents.entries.*.skills.How can I use different models or settings for different tasks?
How can I use different models or settings for different tasks?
- Cron jobs: isolated jobs can set a
modeloverride per job. - Agents: route tasks to separate agents with different default models, thinking levels, and stream params.
- Current session only:
/model <model> -s(or--session) leaves configured defaults unchanged. - Agent default + current session: Owner/admin
/model <model> -a(or--agent) updates the selected agent. - Global default + current session: Owner/admin
/model <model> -g(or--global) updatesagents.defaults.model.
/model <model> keeps owner/admin configured-default persistence unless
you set the optional model selection scope.Example - same model, different per-agent settings:agents.defaults.models["provider/model"].params. Use agents.entries.*.models["provider/model"].params when one agent needs different settings for that model. Flat agents.entries.*.params applies across that agent’s models and wins over both per-model layers.See Cron jobs, Multi-Agent Routing, Configuration, Slash commands.The bot freezes while doing heavy work. How do I offload that?
The bot freezes while doing heavy work. How do I offload that?
/subagents. Use /status to see whether the Gateway is currently busy.Long tasks and sub-agents both consume tokens; set a cheaper model for sub-agents via agents.defaults.subagents.model if cost matters.Docs: Sub-agents, Background Tasks.How do thread-bound subagent sessions work on Discord?
How do thread-bound subagent sessions work on Discord?
- Spawn with
sessions_spawnusingthread: true(optionallymode: "session"for persistent follow-up). /agentsinspects binding state./session idle <duration|off>and/session max-age <duration|off>control automatic expiry./session unbinddetaches the thread without closing the agent session.
session.threadBindings.enabled (global switch), session.threadBindings.idleHours (default 24, 0 disables), session.threadBindings.maxAgeHours (default 0 = no hard cap), and session.threadBindings.spawnSessions for auto-bind on spawn (default true).Docs: Sub-agents, Discord, Configuration Reference, Slash commands.A subagent finished, but the completion update went to the wrong place or never posted. What should I check?
A subagent finished, but the completion update went to the wrong place or never posted. What should I check?
- Completion-mode subagent delivery prefers a bound thread or conversation route when one exists.
- If the completion origin only carries a channel, OpenClaw falls back to the requester session’s stored route (
lastChannel/lastTo/lastAccountId) so direct delivery can still succeed. - No bound route and no usable stored route: direct delivery can fail and the result falls back to queued session delivery instead of posting immediately.
- Invalid or stale targets can also force queue fallback or final delivery failure.
- If the child’s last visible assistant reply is exactly
NO_REPLY/no_replyorANNOUNCE_SKIP, OpenClaw intentionally suppresses the announce instead of posting stale earlier progress.
openclaw tasks show <lookup> where <lookup> is a task id, run id, or session key.Docs: Sub-agents, Background Tasks, Session Tools.Cron or reminders do not fire. What should I check?
Cron or reminders do not fire. What should I check?
- Confirm cron is enabled (
cron.enabled) andOPENCLAW_SKIP_CRONis not set. - Confirm the Gateway is running 24/7 (no sleep/restarts).
- Verify job timezone (
--tzvs host timezone).
Cron fired, but nothing was sent to the channel. Why?
Cron fired, but nothing was sent to the channel. Why?
--no-deliver/delivery.mode: "none": no runner fallback send is expected.- Missing or invalid announce target (
channel/to): the runner skipped outbound delivery. - Channel auth failures (
unauthorized,Forbidden): the runner tried to deliver but credentials blocked it. - A silent isolated result (
NO_REPLY/no_replyonly) is treated as intentionally non-deliverable, so queued fallback delivery is also suppressed.
message tool when a chat route is available. --announce only controls runner fallback delivery for final text the agent did not already send itself.Debug:Why did an isolated cron run switch models or retry once?
Why did an isolated cron run switch models or retry once?
LiveSessionModelSwitchError, keeping the switched provider/model (and any switched auth-profile override) before retrying.Model-selection precedence: Gmail hook model override (hooks.gmail.model) first, then per-job model, then any stored cron-session model override, then normal agent/default model selection.The retry loop is bounded to the initial attempt plus 2 switch retries; cron then aborts instead of looping forever.Debug:How do I install skills on Linux?
How do I install skills on Linux?
openclaw skills commands or drop skills into your workspace; the macOS Skills UI is not available on Linux. Browse skills at https://clawhub.ai.openclaw skills install writes into the active workspace skills/ directory by default. Add --global to install into the shared managed skills directory for all local agents. Install the separate clawhub CLI only to publish or sync your own skills. Use agents.defaults.skills or agents.entries.*.skills to narrow which agents see shared skills.Can OpenClaw run tasks on a schedule or continuously in the background?
Can OpenClaw run tasks on a schedule or continuously in the background?
- Cron jobs for scheduled or recurring tasks (persist across restarts).
- Heartbeat for main-session periodic checks.
- Isolated jobs for autonomous agents that post summaries or deliver to chats.
Can I run Apple macOS-only skills from Linux?
Can I run Apple macOS-only skills from Linux?
metadata.openclaw.os plus required binaries, and only load when eligible on the Gateway host. On Linux, darwin-only skills (apple-notes, apple-reminders, things-mac) will not load unless you override the gating.Three supported patterns:Option A - run the Gateway on a Mac (simplest). Run the Gateway where the macOS binaries exist, then connect from Linux in remote mode or over Tailscale. Skills load normally because the Gateway host is macOS.Option B - use a macOS node (no SSH). Run the Gateway on Linux, pair a macOS node (menubar app), and set Node Run Commands to “Always Ask” or “Always Allow” on the Mac. OpenClaw treats macOS-only skills as eligible when required binaries exist on the node; the agent runs them via the nodes tool. With “Always Ask,” approving “Always Allow” in the prompt adds that command to the allowlist.Option C - proxy macOS binaries over SSH (advanced). Keep the Gateway on Linux, but make the required CLI binaries resolve to SSH wrappers that run on a Mac, then override the skill to allow Linux so it stays eligible.- Create an SSH wrapper for the binary (example:
memofor Apple Notes): - Put the wrapper on
PATHon the Linux host (for example~/bin/memo). - Override the skill metadata (workspace or
~/.openclaw/skills) to allow Linux: - Start a new session so the skills snapshot refreshes.
Do you have a Notion or HeyGen integration?
Do you have a Notion or HeyGen integration?
- Custom skill / plugin: best for reliable API access (both have APIs).
- Browser automation: works without code but is slower and more fragile.
skills/ directory; use --global for all local agents, or configure agents.defaults.skills / agents.entries.*.skills to limit visibility. Some skills expect Homebrew-installed binaries; on Linux that means Linuxbrew.See Skills, Skills config, ClawHub.How do I use my existing signed-in Chrome with OpenClaw?
How do I use my existing signed-in Chrome with OpenClaw?
user browser profile, which attaches through Chrome DevTools MCP:existing-session / user profiles versus the managed openclaw profile:click,type,hover,scrollIntoView,drag, andselectrequire snapshot refs, not CSS selectors.- Upload hooks require
reforinputRef, one file at a time, no CSSelement. responsebody, PDF export, download interception, and batch actions still require the managed browser path.