#how to fix

1 messages · Page 1 of 1 (latest)

unreal galleonBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> âś… Mark Solution

quasi turretBOT
#

If you’re seeing a “shell commands failing” notice, it usually means the exec tool (the thing that runs shell commands) is erroring out — but there are a few totally different root causes.

Can you paste all three so I can point to the exact fix?

  1. openclaw --version
  2. OS (macOS? Linux? Windows/WSL?)
  3. The exact error text when a shell command fails (1–2 lines is enough)

Common causes we’ve seen:

  • macOS Tahoe/Sequoia: spawn EBADF → exec fails instantly. Workaround people use: run the gateway/exec on a headless Linux node host (even on the same machine) and route exec through that, or sometimes a full reboot clears it.
  • Tool allowlist blocking exec → if you enabled tools.allow, make sure it includes exec (and not typos / unknown entries).
  • Gateway running under launchd with different env/config → works in terminal, fails as a service because it’s loading different .env/config.

Docs for the general checklist: https://docs.openclaw.ai/gateway/troubleshooting

Drop the version + error line and I’ll narrow it down fast.

tame jacinth
#

version 2026.2.26 os mac and the ui told me it was failing no error message

quasi turretBOT
#

That “shell commands failing” banner is basically: the exec/system.run tool can’t successfully run commands right now (either it’s being denied by policy/approvals or it’s crashing at the OS/process level). The Control UI often doesn’t show the underlying error inline, so you have to grab it from logs.

On macOS, the fastest way to get the real reason is the troubleshooting ladder from the docs:

openclaw status
openclaw gateway status
openclaw logs --follow
openclaw doctor
openclaw channels status --probe

Then, try one shell-command action again (whatever you did that triggered the banner) while openclaw logs --follow is running, and you should see a concrete line like:

  • SYSTEM_RUN_DENIED: approval required or ... allowlist miss → it’s exec approvals / allowlist, not a crash
    Docs: https://docs.openclaw.ai/tools/exec-approvals
  • NODE_BACKGROUND_UNAVAILABLE → you’re running it via a node and the node app is backgrounded
#

Docs: https://docs.openclaw.ai/nodes/troubleshooting

  • spawn EBADF (macOS) or similar → OS/runtime issue (we’ll need the exact log line + your macOS version)

If you paste just the 5–15 log lines around the first failure (from openclaw logs --follow) + your macOS version (e.g. 14.x / 15.x), I can tell you which bucket you’re in and the exact fix.

tame jacinth
#

I dont care to be doing all that just jow do I allow all the tools to be used?

quasi turretBOT
#

There are two separate gates:

1) “Allow all tools” (so the model is even allowed to call them)

In your openclaw.json, make sure you’re not restricting tools via tools.profile, tools.allow, tools.deny (or per‑agent overrides).

Simplest “everything on”:

{
tools: {
profile: "full", // or just delete tools.profile entirely
allow: ["*"],
deny: [],
},
}
#

Notes:

Then restart the gateway:

openclaw gateway restart

2) “Shell commands” specifically (exec approvals on macOS)

Even if tools are allowed, shell commands can still be blocked by Exec Approvals (common on macOS).

Fastest “stop blocking exec” path:
Control UI → Nodes → Exec approvals (pick Gateway or your Mac node) → set:

  • Security = full
  • Ask = off
    → Save
tame jacinth
#

its working now what about when i get tool is not available?

quasi turretBOT
#

“Tool is not available” is almost always policy/config, not a runtime crash.

It means: that tool wasn’t included in the toolset OpenClaw sent to the model (so the model literally can’t call it).

Common reasons:

  1. Tool allow/deny/profile is restricting it
  • tools.profile set to minimal / coding / messaging
  • tools.allow doesn’t include it (or you used a typo like discord.message / web.fetch instead of real tool names / groups)
  • tools.deny includes it (deny always wins)
  • or a per-agent override under agents.list[].tools.*
  1. Provider-specific restriction
  • tools.byProvider can silently narrow tools for a specific provider/model.
  1. It’s a plugin tool that isn’t loaded
  • Some tool names only exist if the plugin is installed/enabled.
#

Fast “I don’t want to think about it” config is:

  • tools.profile: "full"
  • tools.allow: ["*"]
  • tools.deny: []
    (and make sure you didn’t also set restrictive agents.list[].tools... overrides)

Docs: https://docs.openclaw.ai/tools

If you paste the exact “tool is not available” line and the tool name (e.g. browser, web_fetch, message, exec, etc.), I can tell you which of the above buckets it is in one reply.

tame jacinth
#

it just says
Tool Output

Tool not found