{"record":{"id":"8784f54ce32264b9","repo":"XTLS/Xray-core","slug":"vless-settings-please-add-set-decryption-none","errorCode":null,"errorMessage":"VLESS settings: please add/set \"decryption\":\"none\" to every settings","messagePattern":"VLESS settings: please add/set \"decryption\":\"none\" to every settings","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"infra/conf/vless.go","lineNumber":152,"sourceCode":"\t\tpadding := 0\n\t\tfor _, r := range s[3:] {\n\t\t\tif len(r) < 20 {\n\t\t\t\tpadding += len(r) + 1\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif b, _ := base64.RawURLEncoding.DecodeString(r); len(b) != 32 && len(b) != 64 {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\tconfig.Decryption = config.Decryption[27+len(s[2]):]\n\t\tif padding > 0 {\n\t\t\tconfig.Padding = config.Decryption[:padding-1]\n\t\t\tconfig.Decryption = config.Decryption[padding:]\n\t\t}\n\t\treturn true\n\t}() && config.Decryption != \"none\" {\n\t\tif config.Decryption == \"\" {\n\t\t\treturn nil, errors.New(`VLESS settings: please add/set \"decryption\":\"none\" to every settings`)\n\t\t}\n\t\treturn nil, errors.New(`VLESS settings: unsupported \"decryption\": ` + config.Decryption)\n\t}\n\n\tif config.Decryption != \"none\" && c.Fallbacks != nil {\n\t\treturn nil, errors.New(`VLESS settings: \"fallbacks\" can not be used together with \"decryption\"`)\n\t}\n\n\tfor _, fb := range c.Fallbacks {\n\t\tvar i uint16\n\t\tvar s string\n\t\tif err := json.Unmarshal(fb.Dest, &i); err == nil {\n\t\t\ts = strconv.Itoa(int(i))\n\t\t} else {\n\t\t\t_ = json.Unmarshal(fb.Dest, &s)\n\t\t}\n\t\tconfig.Fallbacks = append(config.Fallbacks, &inbound.Fallback{\n\t\t\tName: fb.Name,","sourceCodeStart":134,"sourceCodeEnd":170,"githubUrl":"https://github.com/XTLS/Xray-core/blob/7d214f8b094f75322fa3990f8aadad1c912f24f5/infra/conf/vless.go#L134-L170","documentation":"VLESS outbound settings must declare \"decryption\": \"none\" (VLESS has no server-side decryption). This error fires when decryption is an empty string after the inline check — i.e. the field was omitted entirely — so the config author is explicitly told to add it. The adjacent lambda first strips a special embedded seed/padding prefix format; if that format matched, empty would be allowed, but for plain configs it does not.","triggerScenarios":"A VLESS outbound with \"settings\": { \"vnext\": [ ... ] } and no \"decryption\" key at all.","commonSituations":"Hand-writing a minimal VLESS outbound and omitting decryption; old V2Ray-style configs that never had this field.","solutions":["Add \"decryption\": \"none\" to the outbound's settings object","Regenerate the client config from a current share link, which always includes it"],"exampleFix":"// before\n\"settings\": { \"vnext\": [ { \"address\": \"...\", \"port\": 443, \"users\": [ ... ] } ] }\n// after\n\"settings\": { \"decryption\": \"none\", \"vnext\": [ ... ] }","handlingStrategy":"validation","validationCode":"if gjson.Get(outbound, \"settings.decryption\").String() == \"\" {\n    return errors.New(\"vless outbound settings must set \\\"decryption\\\": \\\"none\\\"\")\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Every VLESS outbound template should hard-code \"decryption\": \"none\"","Regenerate configs from current share links rather than editing old ones"],"tags":["config","vless","outbound","decryption"],"backgroundTag":null,"analyzedSha":"7d214f8b094f75322fa3990f8aadad1c912f24f5","analyzedAt":"2026-08-15T14:26:24.325Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}