iOfficeAI/OfficeCLI · error · CliException
plugin_not_found
plugin_not_found
Error message
Plugin not found: '{target}' What it means
The 'plugins info' command resolves the plugin by name (case-insensitive match against the plugin registry) or by path (absolute/relative existing executable with a readable manifest). This fires when neither resolution path yields a plugin.
Source
Thrown at src/officecli/CommandBuilder.Plugins.cs:139
}
private static Command BuildPluginsInfoCommand(Option<bool> jsonOption)
{
var nameArg = new Argument<string>("name")
{
Description = "Plugin name or path to its executable",
};
var cmd = new Command("info", "Show the full manifest for a single plugin");
cmd.Add(nameArg);
cmd.Add(jsonOption);
cmd.SetAction(result => { var json = result.GetValue(jsonOption); return SafeRun(() =>
{
var target = result.GetValue(nameArg) ?? "";
var resolved = ResolveByNameOrPath(target);
if (resolved is null)
throw new CliException($"Plugin not found: '{target}'")
{
Code = "plugin_not_found",
Suggestion = "Run `officecli plugins list` to see installed plugins, or provide the absolute path to the plugin executable.",
};
// Re-read the manifest raw rather than re-serializing from our typed
// class: this preserves any extra fields the plugin emits beyond
// what PluginManifest knows about, so `plugins info` is faithful to
// the plugin's actual --info output.
using var p = new System.Diagnostics.Process
{
StartInfo = new System.Diagnostics.ProcessStartInfo
{
FileName = resolved.ExecutablePath,
Arguments = "--info",
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,View on GitHub (pinned to 1ced45e900)
Solutions
- List installed plugins to confirm the exact name: 'officecli plugins list'.
- Provide the absolute path to the plugin executable.
- Reinstall/register the plugin if it should be present.
Example fix
// before officecli plugins info pdfto # typo // after officecli plugins list officecli plugins info pdf-to-docx
Defensive patterns
Strategy: validation
Validate before calling
var resolved = PluginRegistry.EnumerateAll()
.FirstOrDefault(p => string.Equals(p.Manifest.Name, name, StringComparison.OrdinalIgnoreCase));
if (resolved is null && !File.Exists(name))
throw new ArgumentException($"Unknown plugin '{name}'; run 'plugins list'."); Type guard
static bool PluginResolvable(string target) =>
PluginRegistry.EnumerateAll().Any(p =>
string.Equals(p.Manifest.Name, target, StringComparison.OrdinalIgnoreCase))
|| (File.Exists(target) && PluginRegistry.TryReadManifest(target, out _)); Prevention
- Always cross-check names against 'plugins list'.
- Pin plugins by absolute path in CI to avoid registry drift.
- Names match case-insensitively; paths must point at the executable.
When it happens
Trigger: 'officecli plugins info <name>' where <name> is not installed; or a path that does not exist or is not a valid plugin executable.
Common situations: Typo in the plugin name; plugin not installed in the registry path; pointing at a stale path after moving the plugin.
Related errors
AI-assisted analysis of iOfficeAI/OfficeCLI@1ced45e900 (2026-08-13).
Data as JSON: /api/errors/92b16eace22bb6d5.
Report an issue: GitHub.