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

  1. List installed plugins to confirm the exact name: 'officecli plugins list'.
  2. Provide the absolute path to the plugin executable.
  3. 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

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.