multica-ai/multica · error
resolve project: %w
Error message
resolve project: %w
What it means
Wrap in runProjectGet (cmd_project.go:271): resolveProjectID failed to turn args[0] (an ID, slug, or ID prefix per cmd_id_resolver.go:341) into a concrete project ID before any fetch happened. Resolution typically lists/searches projects to match the prefix or slug, so both 'no match', 'ambiguous prefix', and the underlying search request failing surface here.
Source
Thrown at server/cmd/multica/cmd_project.go:271
created,
})
}
cli.PrintTable(os.Stdout, headers, rows)
return nil
}
func runProjectGet(cmd *cobra.Command, args []string) error {
client, err := newAPIClient(cmd)
if err != nil {
return err
}
ctx, cancel := cli.APIContext(context.Background())
defer cancel()
projectRef, err := resolveProjectID(ctx, client, args[0])
if err != nil {
return fmt.Errorf("resolve project: %w", err)
}
var project map[string]any
if err := client.GetJSON(ctx, "/api/projects/"+projectRef.ID, &project); err != nil {
return fmt.Errorf("get project: %w", err)
}
// Breadcrumb to the resources sub-collection. Goes to stderr so JSON on
// stdout stays parseable; the `resource_count` field on the response is
// the programmatic equivalent. JSON numbers decode as float64.
if n, _ := project["resource_count"].(float64); n > 0 {
fmt.Fprintf(os.Stderr, "%d resource(s) attached — run `multica project resource list %s` to view.\n",
int64(n), strVal(project, "id"))
}
output, _ := cmd.Flags().GetString("output")
if output == "table" {
actors := loadActorDisplayLookup(ctx, client)View on GitHub (pinned to 2c0912b6ec)
Solutions
- Get the full ID first: `multica project list --full-id`, then use the complete ID.
- If the error says ambiguous, lengthen the prefix until it is unique.
- Confirm the project still exists and you have access to its workspace.
Example fix
# before multica project get 3f2a # resolve project: ambiguous prefix # after multica project list --full-id multica project get 3f2a91c4-8e77-4b66-a1d2-0f5c9a8b7d31
Defensive patterns
Strategy: validation
Validate before calling
projects := listProjectsJSON(client) // full IDs
matches := filterByPrefixOrSlug(projects, ref)
if len(matches) == 0 { return fmt.Errorf("no project matches %q", ref) }
if len(matches) > 1 { return fmt.Errorf("ambiguous %q: %d matches", ref, len(matches)) } Try / catch
if err := getCmd.Run(); err != nil {
if strings.Contains(err.Error(), "resolve project") {
// resolution failed: re-list with --full-id and retry with the exact ID
}
} Prevention
- Always list with --full-id before scripting get/update/delete.
- Use full UUIDs, not prefixes, in automation.
- Resolve once, reuse the resolved ID for subsequent calls in the same script.
When it happens
Trigger: Passing a project ID prefix that matches zero projects ('not found') or several ('ambiguous'); passing a slug that was renamed/deleted; the resolution API call itself erroring (auth/network).
Common situations: Copy-pasting a truncated ID from table output that prints shortened IDs (note the --full-id flag on list); project deleted by a teammate; typos in slugs.
Related errors
- resolve trigger: %w
- invalid status %q; valid values: %s
- list projects: %w
- get project: %w
- --title is required
AI-assisted analysis of multica-ai/multica@2c0912b6ec (2026-08-15).
Data as JSON: /api/errors/0320c522bf00c998.
Report an issue: GitHub.