FuelLabs/sway · error

Could not get plugin description.

Error message

Could not get plugin description.

What it means

`forc plugins` enumerates executables named forc-* on PATH and, for each, runs `<plugin> -h` to extract the second stdout line as its description (parse_description_for_plugin). format_print_description invokes this for every discovered plugin even without --describe. This expect panics when the plugin process cannot be spawned at all — the binary exists on PATH but is not runnable.

Source

Thrown at forc/src/cli/commands/plugins.rs:95

            for path in plugin.1 {
                println_warning(&format!("   {}", path.display()));
            }
        }
    }
    Ok(())
}

/// Find a plugin's description
///
/// Given a canonical plugin path, returns the description included in the `-h` opt.
/// Returns a generic description if a description cannot be found
fn parse_description_for_plugin(plugin: &Path) -> String {
    use std::process::Command;
    let default_description = "No description found for this plugin.";
    let proc = Command::new(plugin)
        .arg("-h")
        .output()
        .expect("Could not get plugin description.");

    let stdout = String::from_utf8_lossy(&proc.stdout);

    // If the plugin doesn't support a -h flag
    match stdout.split('\n').nth(1) {
        Some(x) => {
            if x.is_empty() {
                default_description.to_owned()
            } else {
                x.to_owned()
            }
        }
        None => default_description.to_owned(),
    }
}

/// # Panics
///

View on GitHub (pinned to 47e5e902fa)

Solutions

  1. Locate the offending entry: `IFS=:; for d in $PATH; do ls -la "$d"/forc-* 2>/dev/null; done` and inspect for non-executable or broken files.
  2. Fix or remove it: `chmod +x <path>/forc-xyz` if legitimate, otherwise delete the stale file.
  3. Reinstall the plugin through fuelup/cargo so a valid executable lands on PATH.

Example fix

# before
$ chmod -x ~/.local/bin/forc-explore
$ forc plugins
thread 'main' panicked: Could not get plugin description.
# after
$ chmod +x ~/.local/bin/forc-explore
$ forc plugins   # lists plugins
Defensive patterns

Strategy: validation

Validate before calling

# verify every forc-* on PATH is executable and runs -h before listing
IFS=:
for d in $PATH; do
  for p in "$d"/forc-*; do
    [ -e "$p" ] || continue
    [ -x "$p" ] || { echo "not executable: $p" >&2; exit 1; }
    "$p" -h >/dev/null 2>&1 || { echo "cannot run: $p" >&2; exit 1; }
  done
done

Prevention

When it happens

Trigger: A PATH directory contains a forc-* file without the executable bit; a broken shebang pointing at a missing interpreter; a plugin binary built for a different OS/architecture; permission denied (noexec mount, ACL). Running `forc plugins` then panics while probing the first broken entry.

Common situations: Hand-copied plugin binaries (scp without +x); nix/store or network-mounted PATH entries with dangling symlinks; multi-arch dev machines mixing macOS and Linux plugin builds; leftover forc-* artifacts from interrupted installs.

Related errors


AI-assisted analysis of FuelLabs/sway@47e5e902fa (2026-08-16). Data as JSON: /api/errors/bf98c69dc00184da. Report an issue: GitHub.