multica-ai/multica · error

get Private Plugin status: %w

Error message

get Private Plugin status: %w

What it means

First of two identical-message wraps in runPluginStatus (cmd_plugin.go:310): the single-argument form `multica plugin status <key>` failed on its direct GET /api/workspaces/{id}/plugins/private/{url.PathEscape(key)} request. Distinct from the second occurrence (574) which covers the no-arg 'list all then filter' path — same message, different failing call.

Source

Thrown at server/cmd/multica/cmd_plugin.go:310

	return printPluginRows(cmd, plugins)
}

func runPluginStatus(cmd *cobra.Command, args []string) error {
	if len(args) == 1 {
		workspaceID, err := pluginWorkspaceID(cmd)
		if err != nil {
			return err
		}
		client, err := newAPIClient(cmd)
		if err != nil {
			return err
		}
		client.WorkspaceID = workspaceID
		ctx, cancel := cli.APIContext(context.Background())
		defer cancel()
		var plugin map[string]any
		if err := client.GetJSON(ctx, "/api/workspaces/"+workspaceID+"/plugins/private/"+url.PathEscape(args[0]), &plugin); err != nil {
			return fmt.Errorf("get Private Plugin status: %w", err)
		}
		output, _ := cmd.Flags().GetString("output")
		if output == "json" {
			return cli.PrintJSON(cmd.OutOrStdout(), plugin)
		}
		return printPluginRows(cmd, []map[string]any{plugin})
	}
	plugins, err := fetchPrivatePlugins(cmd)
	if err != nil {
		return fmt.Errorf("get Private Plugin status: %w", err)
	}
	output, _ := cmd.Flags().GetString("output")
	if output == "json" {
		return cli.PrintJSON(cmd.OutOrStdout(), plugins)
	}
	return printPluginRows(cmd, plugins)
}

View on GitHub (pinned to 2c0912b6ec)

Solutions

  1. List what actually exists: `multica plugin list --workspace <id>` and copy the exact plugin_key.
  2. Confirm you targeted the right workspace (the install and status commands must use the same --workspace).
  3. Re-login/fix token if the wrapped error is 401/403; check server if it is a connection error.

Example fix

// before
multica plugin status my-plugin   // get Private Plugin status: 404 not found (key uses full form)

// after
multica plugin list --workspace main          # shows plugin_key com.example.my-plugin
multica plugin status com.example.my-plugin --workspace main
Defensive patterns

Strategy: validation

Validate before calling

plugins, err := fetchPrivatePlugins(cmd)
if err != nil { return err }
keys := map[string]bool{}
for _, p := range plugins { keys[strVal(p, "plugin_key")] = true }
if !keys[wantKey] { return fmt.Errorf("plugin %q not installed", wantKey) }

Try / catch

if err := statusCmd.Run(); err != nil {
    if strings.Contains(err.Error(), "404") { /* key typo or not yet installed */ }
    if strings.Contains(err.Error(), "403") { /* token scope */ }
}

Prevention

When it happens

Trigger: Requesting a plugin key that does not exist in the workspace (404); token without read permission (403); server unreachable; workspace ID resolved but deleted server-side.

Common situations: Checking status before install completed; typo in the plugin key; querying the wrong workspace via --workspace; agent hasn't reconciled the plugin yet.

Related errors


AI-assisted analysis of multica-ai/multica@2c0912b6ec (2026-08-15). Data as JSON: /api/errors/dc07fd268d812ac3. Report an issue: GitHub.