multica-ai/multica · error

issue id is required

Error message

issue id is required

What it means

Returned by resolveIssueRef when the issue reference argument trims to an empty string. Issues have their own resolver because they accept two canonical forms (issue key like MUL-1852, or full dashed UUID); an empty value satisfies neither.

Source

Thrown at server/cmd/multica/cmd_id_resolver.go:147

// resolveIssueRef accepts only the two canonical issue references:
//
//   - the human-facing issue key, e.g. "MUL-1852" (validated by
//     looksLikeIssueIdentifier and resolved server-side);
//   - the full UUID in dashed canonical form (validated by uuidRegexp).
//
// Short UUID prefixes (e.g. "1881abcd") were briefly supported but are no
// longer — on large workspaces the CLI had to page the entire issue list
// client-side to disambiguate, causing 14–35s timeouts (GH #4701). Since
// `MUL-123` already covers every human use case for an issue reference, the
// short-prefix path is removed instead of being moved server-side. Other
// resources without a human-readable key (autopilots, projects, labels,
// task runs, workspaces, ...) continue to accept short UUID prefixes; see
// resolveIDByPrefix.
func resolveIssueRef(ctx context.Context, client *cli.APIClient, input string) (resolvedID, error) {
	trimmed := strings.TrimSpace(input)
	if trimmed == "" {
		return resolvedID{}, fmt.Errorf("issue id is required")
	}

	if looksLikeIssueIdentifier(trimmed) {
		return fetchIssueRef(ctx, client, trimmed)
	}
	if uuidRegexp.MatchString(trimmed) {
		return fetchIssueRef(ctx, client, trimmed)
	}

	// Detect the common "I copied a truncated UUID" case and give a
	// tailored hint. normalizeUUIDPrefix succeeds for any input that is
	// ≥4 hex chars (after stripping dashes), which matches what the old
	// resolver used to accept as a prefix.
	if _, err := normalizeUUIDPrefix(trimmed); err == nil {
		return resolvedID{}, fmt.Errorf(
			"issue ref %q looks like a short UUID prefix; short prefixes are no longer supported for issues. "+
				"Use the issue key (e.g. MUL-123) shown by `multica issue list`, or pass the full UUID (run a list command with --full-id to copy it)",
			input,

View on GitHub (pinned to 2c0912b6ec)

Solutions

  1. Pass the issue key (e.g. MUL-123) or the full UUID shown by multica issue list
  2. Guard call sites with non-empty checks or "${VAR:?issue id is required}"
  3. If the id should come from prior command output, verify that command succeeded first

Example fix

# before
multica issue show ""

# after
multica issue show MUL-1852  # or the full UUID
Defensive patterns

Strategy: validation

Validate before calling

ref := strings.TrimSpace(input)
if ref == "" {
    return errors.New("issue id is required")
}
// proceed with multica issue show "$ref"

Prevention

When it happens

Trigger: Calling an issue command with an empty or whitespace-only reference: multica issue show "" or a flag fed by an unset variable.

Common situations: Scripts forwarding unset variables; CI parameters left empty; command templates where the issue placeholder was never filled in.

Related errors


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