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
- List what actually exists: `multica plugin list --workspace <id>` and copy the exact plugin_key.
- Confirm you targeted the right workspace (the install and status commands must use the same --workspace).
- 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
- Copy plugin_key verbatim from `plugin list` output rather than typing it.
- Use the same --workspace value for install and status.
- Poll status only after install reports success.
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.