Hmbown/CodeWhale · error
plugin Agent component is unavailable
Error message
plugin Agent component is unavailable: {} What it means
This error is thrown by load_plugin_agent_profiles_from_component when a Fleet plugin component binary (a Path passed to the loader) does not exist on disk, so the plugin's Agent profiles cannot be loaded. The loader checks the component path with an existence check before executing it; when the check fails it wraps the path display in this anyhow error. It indicates a plugin registration/configuration problem, not a profile file parsing problem (those get their own errors).
Solutions
- Verify the component path exists: run `ls <component>`; if missing, rebuild or reinstall the plugin binary.
- Fix the plugin component path in the user's plugin configuration (absolute path or correct relative-to-config-dir path).
- Rebuild the plugin with the project's build command so the artifact is present at the configured path.
- Remove the plugin entry from configuration if the plugin is no longer wanted.
Example fix
// before
plugins = [{ name = "myfleet", component = "target/release/fleet-myfleet" }]
// after
plugins = [{ name = "myfleet", component = "/home/user/.local/bin/fleet-myfleet" }] # path that actually exists Defensive patterns
Strategy: validation
Validate before calling
// Rust
if !component.exists() {
return Err(anyhow!("plugin component missing: {}", component.display()));
}
let profiles = load_with_personal_dir_and_plugins(dir, &plugins)?; Type guard
fn component_exists(p: &std::path::Path) -> bool { p.is_file() } Prevention
- Rebuild plugins before sessions that depend on them and verify artifact paths exist.
- Use absolute paths for plugin components in configuration.
- Prune plugin entries whose binaries are no longer produced by the build.
When it happens
Trigger: Calling load_with_personal_dir_and_plugins with a plugin entry whose component path points to a nonexistent file: the plugin directory exists but the component executable was deleted, renamed, not built, or the configured path has a typo or wrong relative base.
Common situations: User config lists a Fleet plugin whose binary was removed by a clean rebuild; plugin path resolved relative to a directory other than the one assumed; packaging missed the component binary; stale plugin cache referencing an old artifact path.
Understand the failure class
Background: "File not found" and ENOENT errors: why libraries can't find a file that should exist — this error's family across 50 libraries.
Related errors
- Fleet alert secret is not configured
- plugin registry workspace does not match MCP pool workspace
- selected Fleet ' ' ( ) is invalid or unreadable; inspect…
- Skill ` ` is registered at but that file no longer exists…
- 127
AI-assisted analysis of Hmbown/CodeWhale@73e0f67d83 (2026-09-22).
Data as JSON: /api/errors/deee73ada13e9495.
Report an issue: GitHub.
Appendix: source
Thrown at crates/tui/src/fleet/profile.rs:310
Ok(mut profile) => {
profile.origin = ProfileOrigin::Plugin;
(vec![profile], Vec::new())
}
Err(error) => {
let identity = load_agent_profile_identity_file(component).ok();
(
Vec::new(),
vec![AgentProfileLoadIssue::new(
component,
identity.as_ref().map(|identity| identity.id.as_str()),
ProfileOrigin::Plugin,
format!("{error:#}"),
)],
)
}
}
} else {
return Err(anyhow!(
"plugin Agent component is unavailable: {}",
component.display()
));
};
for profile in &mut profiles {
profile.plugin_authority = Some(authority.clone());
}
Ok((profiles, issues))
}
/// Read only the identity-bearing fields from workspace profiles for the
/// authoring collision gate. Unknown legacy fields are harmless here because
/// no profile behavior is loaded or executed from this representation.
pub fn load_workspace_agent_profile_identities(
workspace: impl AsRef<Path>,
) -> Result<Vec<AgentProfileIdentity>> {
let dir = workspace.as_ref().join(WORKSPACE_AGENT_PROFILE_DIR);
load_agent_profile_identities_from_dir(dir)View on GitHub (pinned to 73e0f67d83)