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
- Print the offending value and list AskUserVariant.values() to see accepted strings.
- Correct the spelling/casing to match a documented variant.
- Upgrade the SDK if the variant is from a newer protocol version.
- 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
- Normalize user/model-supplied variant strings before fromValue
- Validate at deserialization boundaries so errors surface early
- Pin SDK version to the server protocol version
- Add an exhaustive test enumerating all accepted variant strings
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
- Unknown AgentMode value: + value
- Unknown AutoTier value: + value
- Unknown MessageSource value: + value
- Required parameter ' + param.name() + ' is missing from…
- Unknown ToolDefer value: + value
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)