zeroclaw-labs/zeroclaw · warning · DiagItem

No CLI tools found in PATH

Error message

No CLI tools found in PATH

What it means

A `zeroclaw doctor` warning from `check_cli_tools`: `zeroclaw_runtime::tools::discover_cli_tools(&[], &[])` found zero supported CLI tools on PATH. ZeroClaw lets agents shell out to discovered tools (jq, git, curl, etc.); with none available, tool-augmented workflows silently lose that surface. The daemon itself still runs.

Source

Thrown at crates/zeroclaw-runtime/src/doctor/mod.rs:1781

            crate::i18n::get_required_cli_string_with_args(
                "cli-doctor-systemd-linger-disabled",
                &[("user", user.as_str())],
            ),
        ),
        crate::service::SystemdUserLinger::Unknown => DiagItem::warn(
            cat,
            crate::i18n::get_required_cli_string("cli-doctor-systemd-linger-unknown"),
        ),
    }
}

fn check_cli_tools(items: &mut Vec<DiagItem>) {
    let cat = "cli-tools";

    let discovered = crate::tools::discover_cli_tools(&[], &[]);

    if discovered.is_empty() {
        items.push(DiagItem::warn(cat, "No CLI tools found in PATH"));
    } else {
        for cli in &discovered {
            let version_info = cli
                .version
                .as_deref()
                .map(|v| truncate_for_display(v, COMMAND_VERSION_PREVIEW_CHARS))
                .unwrap_or_else(|| "unknown version".to_string());
            items.push(DiagItem::ok(
                cat,
                format!("{} ({}) — {}", cli.name, cli.category, version_info),
            ));
        }
        items.push(DiagItem::ok(
            cat,
            format!("{} CLI tools discovered", discovered.len()),
        ));
    }
}

View on GitHub (pinned to 88bb9c8533)

Solutions

  1. Install at least one supported CLI tool into the image/host (e.g. `jq`, `git`, `curl`).
  2. If tools are installed but not found, fix PATH for the context doctor runs in (unit `Environment=PATH=...`, container ENV).
  3. For API-only setups with no shelling-out intended, accept the warning.

Example fix

# before: doctor -> "No CLI tools found in PATH"

# after (Debian/Ubuntu image)
apt-get update && apt-get install -y --no-install-recommends jq git curl
Defensive patterns

Strategy: fallback

Validate before calling

if zeroclaw_runtime::tools::discover_cli_tools(&[], &[]).is_empty() {
    eprintln!("no CLI tools on PATH — tool-based agent skills will be unavailable");
}

Prevention

When it happens

Trigger: Running `zeroclaw doctor` in an environment where none of the tools zeroclaw knows how to discover are on PATH — minimal containers, hardened server images, or a systemd unit with a stripped PATH.

Common situations: Deployment images pruned to the minimum; PATH not including `/usr/local/bin` in service contexts; developers relying purely on provider APIs and not noticing the missing tooling.

Related errors


AI-assisted analysis of zeroclaw-labs/zeroclaw@88bb9c8533 (2026-08-23). Data as JSON: /api/errors/ba14afbce40df62e. Report an issue: GitHub.