#[non_exhaustive]pub enum PluginError {
Show 20 variants
InvalidManifest(String),
InvalidName {
name: String,
reason: String,
},
DisallowedMcpCommand {
id: String,
command: String,
},
SkillNameConflictWithManaged {
name: String,
},
SkillNameConflictWithBundled {
name: String,
},
SkillNameConflictWithPlugin {
name: String,
plugin: String,
},
UnsafeOverlay {
key: String,
},
SkillEntryMissing {
path: PathBuf,
},
NotFound {
name: String,
},
InvalidSource {
path: String,
reason: String,
},
Io {
path: PathBuf,
source: Error,
},
Toml(Error),
TomlSer(Error),
SemanticViolation {
skill: String,
reason: String,
},
IntegrityCheckFailed {
expected: String,
actual: String,
},
DownloadFailed {
url: String,
reason: String,
},
DependencyRequired {
name: String,
dependents: String,
hints: String,
},
DependencyCycle {
name: String,
cycle: String,
},
MissingDependency {
name: String,
dependency: String,
},
InsecureUrl(String),
}Expand description
Errors that can occur during plugin install, remove, or list operations.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
InvalidManifest(String)
The plugin manifest (plugin.toml) is missing or cannot be parsed.
InvalidName
The plugin name is invalid (empty, contains path separators, or reserved).
DisallowedMcpCommand
A plugin MCP entry declares a command not in mcp.allowed_commands.
SkillNameConflictWithManaged
A plugin skill name conflicts with an existing managed (user) skill.
SkillNameConflictWithBundled
A plugin skill name conflicts with a compile-time bundled skill.
SkillNameConflictWithPlugin
A plugin skill name conflicts with a skill from another installed plugin.
UnsafeOverlay
A plugin’s [config] section contains a key not in the tighten-only safelist.
SkillEntryMissing
A [[skills]] path entry does not contain a valid SKILL.md file.
NotFound
The plugin directory does not exist or cannot be read.
InvalidSource
The plugin source path or URL is invalid.
Io
A filesystem operation failed.
Toml(Error)
TOML serialization/deserialization error.
TomlSer(Error)
TOML serialization error.
SemanticViolation
The SKILL.md semantic compliance scan rejected the skill.
Raised for Stage-1 regex matches treated as blocking in the ephemeral install
context (add_remote_ephemeral). Stage-2 LLM scan returns a string error
via the command layer, not this variant.
IntegrityCheckFailed
SHA-256 digest of a downloaded archive does not match the expected value.
Returned by crate::manager::PluginManager::add_remote when the caller
supplies an expected_sha256 and the download does not match.
Do not install or extract the archive — it may have been tampered with.
DownloadFailed
HTTP download of a remote plugin archive failed.
DependencyRequired
Attempted to remove or disable a plugin that other enabled plugins depend on.
Fields
DependencyCycle
A dependency cycle was detected while enabling a plugin.
Fields
MissingDependency
A declared dependency plugin is not installed.
Fields
InsecureUrl(String)
The URL supplied to --plugin-url uses a non-HTTPS scheme.
Only https:// is accepted for ephemeral plugin loading. http:// and
any other scheme are rejected to prevent MITM attacks against session-scoped
plugin archives (security invariant INV-EPH-1).
Trait Implementations§
Source§impl Debug for PluginError
impl Debug for PluginError
Source§impl Display for PluginError
impl Display for PluginError
Source§impl Error for PluginError
impl Error for PluginError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()