multica-ai/multica · error
resolve subscriber %q: %w
Error message
resolve subscriber %q: %w
What it means
Wraps any failure from resolveAssignee while resolving one --subscriber reference for an autopilot trigger. The inner error carries the actual cause: the GET request to look up the assignee failed, or the reference matched no member (resolveAssignee is constrained to assigneeKinds{member: true} here). The %q shows which ref failed.
Source
Thrown at server/cmd/multica/cmd_autopilot.go:751
path := "/api/autopilots/" + autopilotRef.ID + "/triggers/" + triggerRef.ID
if err := client.DeleteJSON(ctx, path); err != nil {
return fmt.Errorf("delete trigger: %w", err)
}
fmt.Printf("Trigger %s deleted.\n", triggerRef.ID)
return nil
}
func resolveAutopilotSubscriberInputs(ctx context.Context, client *cli.APIClient, refs []string) ([]map[string]string, error) {
inputs := make([]map[string]string, 0, len(refs))
seen := map[string]struct{}{}
memberOnly := assigneeKinds{member: true}
for _, ref := range refs {
if strings.TrimSpace(ref) == "" {
return nil, fmt.Errorf("--subscriber cannot be empty")
}
userType, userID, err := resolveAssignee(ctx, client, ref, memberOnly)
if err != nil {
return nil, fmt.Errorf("resolve subscriber %q: %w", ref, err)
}
if userType != "member" {
return nil, fmt.Errorf("subscriber %q resolved to %s; autopilot subscribers must be members", ref, userType)
}
if _, ok := seen[userID]; ok {
continue
}
seen[userID] = struct{}{}
inputs = append(inputs, map[string]string{
"user_type": "member",
"user_id": userID,
})
}
return inputs, nil
}
// ---------------------------------------------------------------------------
// HelpersView on GitHub (pinned to 2c0912b6ec)
Solutions
- Check the wrapped error text: 'no match' means the ref is wrong — verify the member exists with `multica member list`.
- If the wrapped error is a transport/auth failure, refresh the session (`multica auth login` or equivalent) and retry.
- Ensure the reference is a member, not an agent or team — subscriber resolution is member-only by assigneeKinds{member: true}.
Example fix
# before multica autopilot trigger create --name t1 --subscriber jn doe # after multica autopilot trigger create --name t1 --subscriber "jdoe@example.com"
Defensive patterns
Strategy: validation
Validate before calling
# verify the member exists before creating the trigger
multica member list --output json | jq -e --arg s "$SUB" '.[] | select(.email == $s or .id == $s)' >/dev/null \
|| { echo "subscriber $SUB is not a resolvable member" >&2; exit 2; }
multica autopilot trigger create --name t1 --subscriber "$SUB" Try / catch
if err := runAutopilotCreate(); err != nil {
var re *cli.RunError
if errors.As(err, &re) && strings.HasPrefix(re.Msg, "resolve subscriber") {
// extract ref from message, verify membership, surface actionable hint
}
return err
} Prevention
- Pre-validate subscriber refs against `member list` in scripts so failures happen with your own context.
- Pin scripts to member emails rather than display names; emails change less often.
When it happens
Trigger: `multica autopilot trigger create --subscriber <ref>` where <ref> is neither an existing member's email/ID nor resolvable in the current workspace; or the API lookup request itself fails (auth expired, server unreachable).
Common situations: Typo'd or stale username/email after a member left the workspace; using an agent or team reference as a subscriber (only members allowed); expired CLI session token.
Related errors
- list agents: %w
- get agent: %w
- get source agent: %w
- source agent has no runtime; pass --runtime-id to choose a t
- copy agent: %w
AI-assisted analysis of multica-ai/multica@2c0912b6ec (2026-08-15).
Data as JSON: /api/errors/3b50ced7abc3f384.
Report an issue: GitHub.