multica-ai/multica · error

get issue: %w

Error message

get issue: %w

What it means

The issue reference resolved, but the GET to /api/issues/{id} itself failed. Unlike the pull-requests variant the ID here is inserted without url.PathEscape, but resolution has already produced a server-issued ID, so the failure is again transport, auth, or an HTTP error status (e.g. the issue disappeared between resolution and fetch, returning 404).

Source

Thrown at server/cmd/multica/cmd_issue.go:822

}

func runIssueGet(cmd *cobra.Command, args []string) error {
	client, err := newAPIClient(cmd)
	if err != nil {
		return err
	}

	ctx, cancel := cli.APIContext(context.Background())
	defer cancel()

	issueRef, err := resolveIssueRef(ctx, client, args[0])
	if err != nil {
		return fmt.Errorf("resolve issue: %w", err)
	}

	var issue map[string]any
	if err := client.GetJSON(ctx, "/api/issues/"+issueRef.ID, &issue); err != nil {
		return fmt.Errorf("get issue: %w", err)
	}

	output, _ := cmd.Flags().GetString("output")
	if output == "table" {
		actors := loadActorDisplayLookup(ctx, client)
		assignee := formatAssignee(issue, actors)
		startDate := strVal(issue, "start_date")
		if startDate != "" && len(startDate) >= 10 {
			startDate = startDate[:10]
		}
		dueDate := strVal(issue, "due_date")
		if dueDate != "" && len(dueDate) >= 10 {
			dueDate = dueDate[:10]
		}
		headers := []string{"KEY", "TITLE", "STATUS", "PRIORITY", "ASSIGNEE", "START DATE", "DUE DATE", "DESCRIPTION"}
		rows := [][]string{{
			issueDisplayKey(issue),
			strVal(issue, "title"),

View on GitHub (pinned to 2c0912b6ec)

Solutions

  1. Read the wrapped error's HTTP status: 404 → the issue was deleted, re-resolve from a fresh list; 401/403 → fix token/scope; 5xx/connection → restore server and retry.
  2. Re-run `multica issue list` to confirm the issue still exists in the current workspace.
  3. For batch scripts, handle per-issue failures without aborting the whole batch.
Defensive patterns

Strategy: retry

Try / catch

# distinguish deleted (404, don't retry) from transient (5xx, retry)
 for i in 1 2 3; do
   out=$(multica issue get "$REF" 2>&1) && break
   case "$out" in *404*|*401*|*403*) echo "$out" >&2; exit 1;; esac
   sleep $((i*2))
 done
 echo "$out"

Prevention

When it happens

Trigger: Running `multica issue get <ref>` with valid auth but the server unreachable; token expired; the issue deleted by a concurrent session after resolution (404); insufficient permission on that specific issue (403).

Common situations: Race between list/get scripts and cleanup jobs; long-lived tokens expiring mid-batch; permissions differing per issue in shared workspaces.

Related errors


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