{"record":{"id":"4dff0f6fb9d1fc51","repo":"multica-ai/multica","slug":"get-issue-w","errorCode":null,"errorMessage":"get issue: %w","messagePattern":"get issue: %w","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/cmd/multica/cmd_issue.go","lineNumber":822,"sourceCode":"}\n\nfunc runIssueGet(cmd *cobra.Command, args []string) error {\n\tclient, err := newAPIClient(cmd)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tctx, cancel := cli.APIContext(context.Background())\n\tdefer cancel()\n\n\tissueRef, err := resolveIssueRef(ctx, client, args[0])\n\tif err != nil {\n\t\treturn fmt.Errorf(\"resolve issue: %w\", err)\n\t}\n\n\tvar issue map[string]any\n\tif err := client.GetJSON(ctx, \"/api/issues/\"+issueRef.ID, &issue); err != nil {\n\t\treturn fmt.Errorf(\"get issue: %w\", err)\n\t}\n\n\toutput, _ := cmd.Flags().GetString(\"output\")\n\tif output == \"table\" {\n\t\tactors := loadActorDisplayLookup(ctx, client)\n\t\tassignee := formatAssignee(issue, actors)\n\t\tstartDate := strVal(issue, \"start_date\")\n\t\tif startDate != \"\" && len(startDate) >= 10 {\n\t\t\tstartDate = startDate[:10]\n\t\t}\n\t\tdueDate := strVal(issue, \"due_date\")\n\t\tif dueDate != \"\" && len(dueDate) >= 10 {\n\t\t\tdueDate = dueDate[:10]\n\t\t}\n\t\theaders := []string{\"KEY\", \"TITLE\", \"STATUS\", \"PRIORITY\", \"ASSIGNEE\", \"START DATE\", \"DUE DATE\", \"DESCRIPTION\"}\n\t\trows := [][]string{{\n\t\t\tissueDisplayKey(issue),\n\t\t\tstrVal(issue, \"title\"),","sourceCodeStart":804,"sourceCodeEnd":840,"githubUrl":"https://github.com/multica-ai/multica/blob/2c0912b6ec764b373d44eeea1e80f0d9f11ab417/server/cmd/multica/cmd_issue.go#L804-L840","documentation":"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).","triggerScenarios":"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).","commonSituations":"Race between list/get scripts and cleanup jobs; long-lived tokens expiring mid-batch; permissions differing per issue in shared workspaces.","solutions":["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.","Re-run `multica issue list` to confirm the issue still exists in the current workspace.","For batch scripts, handle per-issue failures without aborting the whole batch."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"# distinguish deleted (404, don't retry) from transient (5xx, retry)\n for i in 1 2 3; do\n   out=$(multica issue get \"$REF\" 2>&1) && break\n   case \"$out\" in *404*|*401*|*403*) echo \"$out\" >&2; exit 1;; esac\n   sleep $((i*2))\n done\n echo \"$out\"","preventionTips":["In concurrent environments, re-resolve refs if a get suddenly 404s.","Handle per-issue failures in batch scripts without aborting the run."],"tags":["cli","network","http","issue-get"],"backgroundTag":null,"analyzedSha":"2c0912b6ec764b373d44eeea1e80f0d9f11ab417","analyzedAt":"2026-08-15T13:25:18.241Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}