github/copilot-sdk · error · IllegalArgumentException

Unknown AskUserVariant value: + value

Error message

Unknown AskUserVariant value: + value

What it means

AskUserVariant.fromValue converts a protocol string into its AskUserVariant enum constant. When the input matches none of the known variant values, it throws IllegalArgumentException. It exists to reject unrecognized ask-user prompt variants early rather than silently misclassifying them.

Solutions

  1. Print the offending value and list AskUserVariant.values() to see accepted strings.
  2. Correct the spelling/casing to match a documented variant.
  3. Upgrade the SDK if the variant is from a newer protocol version.
  4. Catch IllegalArgumentException around fromValue and fall back to a default variant for resilience against future values.

Example fix

// before
AskUserVariant v = AskUserVariant.fromValue(payload.variant);

// after
AskUserVariant v;
try {
    v = AskUserVariant.fromValue(payload.variant);
} catch (IllegalArgumentException e) {
    v = AskUserVariant.DEFAULT;
}
Defensive patterns

Strategy: validation

Validate before calling

static boolean isKnownAskUserVariant(String v) {
    for (AskUserVariant x : AskUserVariant.values()) {
        if (x.name().equalsIgnoreCase(v)) return true;
    }
    return false;
}

Try / catch

try {
    variant = AskUserVariant.fromValue(value);
} catch (IllegalArgumentException e) {
    variant = AskUserVariant.DEFAULT;
}

Prevention

When it happens

Trigger: Calling AskUserVariant.fromValue with an unknown string — a typo, wrong casing, or a variant added in a newer protocol/SDK version than the one in use.

Common situations: Deserializing RPC payloads from a newer server; hard-coded variant strings that drifted from the enum; user-configurable prompt variants validated only at runtime.

Understand the failure class

Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.

Related errors


AI-assisted analysis of github/copilot-sdk@cd8cf15dc3 (2026-09-09). Data as JSON: /api/errors/a747def8fdb116ec. Report an issue: GitHub.

Appendix: source

Thrown at java/sdk/src/main/java/com/github/copilot/rpc/AskUserVariant.java:57

     *
     * @param value
     *            the wire-format value
     * @return the matching variant, or {@code null} when {@code value} is
     *         {@code null}
     * @throws IllegalArgumentException
     *             if the value is not {@code legacy} or {@code elicitation}
     */
    @JsonCreator
    public static AskUserVariant fromValue(String value) {
        if (value == null) {
            return null;
        }
        for (AskUserVariant variant : values()) {
            if (variant.value.equals(value)) {
                return variant;
            }
        }
        throw new IllegalArgumentException("Unknown AskUserVariant value: " + value);
    }
}

View on GitHub (pinned to cd8cf15dc3)