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
- 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.
- Fix or remove it: `chmod +x <path>/forc-xyz` if legitimate, otherwise delete the stale file.
- 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
- Install plugins via fuelup/cargo install instead of copying binaries by hand.
- After copying a plugin across machines, chmod +x and run `<plugin> -h` once.
- Keep personal bin dirs clean of leftover forc-* artifacts from interrupted installs.
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
- Failed to run forc plugins
- Could not get plugin info: {}
- Failed to execute ps command
- Failed to execute tasklist command
- unable to find the user home directory
AI-assisted analysis of FuelLabs/sway@47e5e902fa (2026-08-16).
Data as JSON: /api/errors/bf98c69dc00184da.
Report an issue: GitHub.