multica-ai/multica · error

list Private Plugins: %w

Error message

list Private Plugins: %w

What it means

Wrap in runPluginList (cmd_plugin.go:286): `multica plugin list` failed while fetching the workspace's private plugins — either in workspace resolution (pluginWorkspaceID -> requireWorkspaceID or API lookup of the --workspace slug/prefix) or in the GET to /api/workspaces/{id}/plugins/private performed by fetchPrivatePlugins.

Source

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

	return response.Plugins, nil
}

func printPluginRows(cmd *cobra.Command, plugins []map[string]any) error {
	rows := make([][]string, 0, len(plugins))
	for _, plugin := range plugins {
		rows = append(rows, []string{
			strVal(plugin, "plugin_key"), strVal(plugin, "desired_version"), strVal(plugin, "lifecycle_status"),
			strVal(plugin, "trust_tier"), strVal(plugin, "uploader_id"),
		})
	}
	cli.PrintTable(cmd.OutOrStdout(), []string{"PLUGIN", "VERSION", "STATUS", "TRUST", "UPLOADER"}, rows)
	return nil
}

func runPluginList(cmd *cobra.Command, _ []string) error {
	plugins, err := fetchPrivatePlugins(cmd)
	if err != nil {
		return fmt.Errorf("list Private Plugins: %w", err)
	}
	output, _ := cmd.Flags().GetString("output")
	if output == "json" {
		return cli.PrintJSON(cmd.OutOrStdout(), plugins)
	}
	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
		}

View on GitHub (pinned to 2c0912b6ec)

Solutions

  1. Pass an explicit workspace: `multica plugin list --workspace <id-or-slug>`.
  2. Verify the workspace exists: `multica workspace list` (or the /api/workspaces endpoint) and correct the stored/supplied value.
  3. Re-login if auth is the wrapped cause; check server health for 5xx/connection errors.

Example fix

// before
multica plugin list   // list Private Plugins: workspace "mai" is ambiguous

// after
multica workspace list
multica plugin list --workspace main
Defensive patterns

Strategy: validation

Validate before calling

if wsID == "" {
    return fmt.Errorf("no workspace: pass --workspace or configure a default")
}

Try / catch

if err := listCmd.Run(); err != nil {
    if strings.Contains(err.Error(), "list Private Plugins") {
        // check workspace resolution vs API failure via wrapped cause
    }
}

Prevention

When it happens

Trigger: No --workspace flag and no resolvable current workspace context; --workspace slug/prefix matches nothing or is ambiguous; GET returns 401/403/5xx; server unreachable.

Common situations: Fresh checkout with no workspace configured; workspace was deleted after the CLI stored its ID; typo in the slug; token from another workspace.

Related errors


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