{"record":{"id":"cf039c8770cfb2cc","repo":"github/copilot-sdk","slug":"invalid-askuservariant-q-expected-q-q-or-uns","errorCode":null,"errorMessage":"invalid AskUserVariant %q: expected %q, %q, or unset","messagePattern":"invalid AskUserVariant %q: expected %q, %q, or unset","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"go/client.go","lineNumber":829,"sourceCode":"\tif len(callbacks) == 0 {\n\t\treturn config, nil\n\t}\n\n\twireConfig := &SystemMessageConfig{\n\t\tMode:     config.Mode,\n\t\tContent:  config.Content,\n\t\tSections: wireSections,\n\t}\n\treturn wireConfig, callbacks\n}\n\nfunc hasManagedSettings(enableManagedSettings *bool, managedSettings *ManagedSettings) bool {\n\treturn (enableManagedSettings != nil && *enableManagedSettings) || managedSettings != nil\n}\n\nfunc validateAskUserVariant(variant AskUserVariant) error {\n\tif variant != \"\" && variant != AskUserVariantLegacy && variant != AskUserVariantElicitation {\n\t\treturn fmt.Errorf(\"invalid AskUserVariant %q: expected %q, %q, or unset\", variant, AskUserVariantLegacy, AskUserVariantElicitation)\n\t}\n\treturn nil\n}\n\nfunc (c *Client) CreateSession(ctx context.Context, config *SessionConfig) (*Session, error) {\n\tif config == nil {\n\t\tconfig = &SessionConfig{}\n\t}\n\tif config.GitHubToken != \"\" && config.GitHubTokenProvider != nil {\n\t\treturn nil, fmt.Errorf(\"GitHubToken and GitHubTokenProvider cannot be used together\")\n\t}\n\tif err := validateAskUserVariant(config.AskUserVariant); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := c.ensureConnected(ctx); err != nil {\n\t\treturn nil, err\n\t}","sourceCodeStart":811,"sourceCodeEnd":847,"githubUrl":"https://github.com/github/copilot-sdk/blob/cd8cf15dc3f9e762615790aaed0a771a0f392755/go/client.go#L811-L847","documentation":"validateAskUserVariant enforces that SessionConfig.AskUserVariant is either unset, AskUserVariantLegacy, or AskUserVariantElicitation. Any other string is rejected with this error before a session is created.","triggerScenarios":"Passing an arbitrary/typo'd string in config.AskUserVariant to Client.CreateSession or ResumeSessionWithOptions.","commonSituations":"Typo like \"elicitaton\" or \"legacy-mode\"; constructing the value dynamically from user input; SDK version change adding new variants not yet known to the caller.","solutions":["Set AskUserVariant to one of the exported constants: AskUserVariantLegacy or AskUserVariantElicitation.","Leave AskUserVariant as the zero value (\"\") for default behavior.","Check the SDK version for the set of valid variants and update your value accordingly."],"exampleFix":"// before\ncfg.AskUserVariant = \"elicitation-mode\"\n// after\ncfg.AskUserVariant = AskUserVariantElicitation","handlingStrategy":"validation","validationCode":"if v := cfg.AskUserVariant; v != \"\" && v != AskUserVariantLegacy && v != AskUserVariantElicitation { return fmt.Errorf(\"invalid AskUserVariant %q\", v) }","typeGuard":"func validAskUserVariant(v AskUserVariant) bool { return v == \"\" || v == AskUserVariantLegacy || v == AskUserVariantElicitation }","tryCatchPattern":"if err := validateAskUserVariant(cfg.AskUserVariant); err != nil { return err }","preventionTips":["Always use exported constants, never raw strings","Leave AskUserVariant unset for default","Re-validate after SDK upgrades"],"tags":["go","validation","enum"],"backgroundTag":"invalid-enum-value","analyzedSha":"cd8cf15dc3f9e762615790aaed0a771a0f392755","analyzedAt":"2026-09-09T18:32:31.973Z","contentChangedAt":"2026-09-09T18:32:31.973Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}