{"record":{"id":"741f751ffd27e131","repo":"XTLS/Xray-core","slug":"vless-users-flow-doesn-t-support-account-flow","errorCode":null,"errorMessage":"VLESS users: \"flow\" doesn't support \"{account.Flow}\" in this version","messagePattern":"VLESS users: \"flow\" doesn't support \"(.+?)\" in this version","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"infra/conf/vless.go","lineNumber":330,"sourceCode":"\t\t\t\tif err := json.Unmarshal(rawUser, account); err != nil {\n\t\t\t\t\treturn nil, errors.New(`VLESS users: invalid user`).Base(err)\n\t\t\t\t}\n\t\t\t\tif account.Reverse != nil { // may not be reached: error json unmarshal\n\t\t\t\t\treturn nil, errors.New(`VLESS users: please use simplified outbound's config style to use \"reverse\"`)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tu, err := uuid.ParseString(account.Id)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\taccount.Id = u.String()\n\n\t\t\tswitch account.Flow {\n\t\t\tcase \"\":\n\t\t\tcase vless.XRV, vless.XRV + \"-udp443\":\n\t\t\tdefault:\n\t\t\t\treturn nil, errors.New(`VLESS users: \"flow\" doesn't support \"` + account.Flow + `\" in this version`)\n\t\t\t}\n\n\t\t\tif !func() bool {\n\t\t\t\ts := strings.Split(account.Encryption, \".\")\n\t\t\t\tif len(s) < 4 || s[0] != \"mlkem768x25519plus\" {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tswitch s[1] {\n\t\t\t\tcase \"native\":\n\t\t\t\tcase \"xorpub\":\n\t\t\t\t\taccount.XorMode = 1\n\t\t\t\tcase \"random\":\n\t\t\t\t\taccount.XorMode = 2\n\t\t\t\tdefault:\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tswitch s[2] {\n\t\t\t\tcase \"1rtt\":","sourceCodeStart":312,"sourceCodeEnd":348,"githubUrl":"https://github.com/XTLS/Xray-core/blob/7d214f8b094f75322fa3990f8aadad1c912f24f5/infra/conf/vless.go#L312-L348","documentation":"Thrown by VLessOutboundConfig.Build() after parsing a user when account.Flow is not one of the supported values. This build only accepts \"\" (no flow), vless.XRV (\"xtls-rprx-vision\") and \"xtls-rprx-vision-udp443\". Legacy flows from older Xray/V2Ray releases — xtls-rprx-origin, xtls-rprx-direct, xtls-rprx-splice — were removed and now trigger this error.","triggerScenarios":"\"flow\":\"xtls-rprx-direct\" or \"xtls-rprx-splice\" in a user/account; any typo like \"vision-udp443\" without the full prefix; configs carried over from pre-1.8 Xray or V2Ray with XTLS enabled.","commonSituations":"Upgrading Xray-core on a server/client pair where old configs used splice/direct flow; following outdated tutorials; share links generated by old tools that still embed legacy flow values.","solutions":["Set \"flow\":\"xtls-rprx-vision\" for REALITY/XTLS-Vision setups","Set \"flow\":\"\" (or omit it) when not using XTLS Vision — especially with plain TLS or WebSocket transports","Regenerate the share link / config with a current-version client tool","Upgrade both endpoints so Vision is available on each side"],"exampleFix":"// before\n\"users\": [ { \"id\": \"...\", \"encryption\": \"none\", \"flow\": \"xtls-rprx-direct\" } ]\n// after\n\"users\": [ { \"id\": \"...\", \"encryption\": \"none\", \"flow\": \"xtls-rprx-vision\" } ]","handlingStrategy":"validation","validationCode":"func validateVlessFlow(flow string) error {\n\tswitch flow {\n\tcase \"\", \"xtls-rprx-vision\", \"xtls-rprx-vision-udp443\":\n\t\treturn nil\n\t}\n\treturn fmt.Errorf(\"unsupported flow %q\", flow)\n}","typeGuard":"func vlessFlowSupported(flow string) bool {\n\tswitch flow {\n\tcase \"\", \"xtls-rprx-vision\", \"xtls-rprx-vision-udp443\":\n\t\treturn true\n\t}\n\treturn false\n}","tryCatchPattern":null,"preventionTips":["After upgrading Xray, sweep configs for legacy flows (xtls-rprx-direct, -splice, -origin) and replace with xtls-rprx-vision","Only set flow when the transport is TCP+TLS/REALITY; leave empty for ws/grpc","Regenerate share links with current client tools instead of reusing old ones"],"tags":["vless","flow","xtls","vision","version-migration","config","xray"],"backgroundTag":null,"analyzedSha":"7d214f8b094f75322fa3990f8aadad1c912f24f5","analyzedAt":"2026-08-15T14:26:24.325Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}