{"record":{"id":"900802d48b2d90d7","repo":"XTLS/Xray-core","slug":"vless-settings-flow-doesn-t-support-c-flow","errorCode":null,"errorMessage":"VLESS \"settings.flow\" doesn't support \"` + c.Flow + `\" in this version","messagePattern":"VLESS \"settings\\.flow\" doesn't support \"` \\+ c\\.Flow \\+ `\" in this version","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"infra/conf/vless.go","lineNumber":53,"sourceCode":"\tClients    []json.RawMessage       `json:\"clients\"`\n\tDecryption string                  `json:\"decryption\"`\n\tFallbacks  []*VLessInboundFallback `json:\"fallbacks\"`\n\tFlow       string                  `json:\"flow\"`\n\tTestseed   []uint32                `json:\"testseed\"`\n}\n\n// Build implements Buildable\nfunc (c *VLessInboundConfig) Build() (proto.Message, error) {\n\tconfig := new(inbound.Config)\n\n\tif c.Clients != nil {\n\t\tc.Users = c.Clients\n\t}\n\tconfig.Users = make([]*protocol.User, len(c.Users))\n\tswitch c.Flow {\n\tcase vless.XRV, \"\":\n\tdefault:\n\t\treturn nil, errors.New(`VLESS \"settings.flow\" doesn't support \"` + c.Flow + `\" in this version`)\n\t}\n\tprocessClient := func(idx int) error {\n\t\trawUser := c.Users[idx]\n\t\tuser := new(protocol.User)\n\t\tif err := json.Unmarshal(rawUser, user); err != nil {\n\t\t\treturn errors.New(`VLESS users: invalid user`).Base(err)\n\t\t}\n\t\taccount := new(vless.Account)\n\t\tif err := json.Unmarshal(rawUser, account); err != nil {\n\t\t\treturn errors.New(`VLESS users: invalid user`).Base(err)\n\t\t}\n\n\t\tu, err := uuid.ParseString(account.Id)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccount.Id = u.String()\n","sourceCodeStart":35,"sourceCodeEnd":71,"githubUrl":"https://github.com/XTLS/Xray-core/blob/7d214f8b094f75322fa3990f8aadad1c912f24f5/infra/conf/vless.go#L35-L71","documentation":"Thrown when building a VLESS inbound: the outbound-facing 'flow' field in settings only accepts the empty string or vless.XRV (xtls-rprx-vision) in this build. Any other flow string (e.g. legacy xtls-rprx-direct) fails the whole inbound build.","triggerScenarios":"\"settings\": { \"flow\": \"xtls-rprx-direct\" } on a VLESS inbound; any flow value other than \"xtls-rprx-vision\" or \"\".","commonSituations":"Porting an old XTLS config that used removed flows (xtls-rprx-origin, xtls-rprx-direct), or setting a per-user-only flow at the settings level with a typo.","solutions":["Use \"flow\": \"xtls-rprx-vision\" if the client supports XTLS Vision","Or remove the flow field (empty) for plain VLESS without XTLS","Delete legacy flow values; they were removed from Xray"],"exampleFix":"// before\n\"settings\": { \"flow\": \"xtls-rprx-direct\", ... }\n// after\n\"settings\": { \"flow\": \"xtls-rprx-vision\", ... }","handlingStrategy":"validation","validationCode":"flow := gjson.Get(inbound, \"settings.flow\").String()\nif flow != \"\" && flow != \"xtls-rprx-vision\" {\n    return fmt.Errorf(\"inbound flow %q unsupported; use \\\"xtls-rprx-vision\\\" or omit\", flow)\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Purge all legacy XTLS flow names from templates (xtls-rprx-origin/direct are gone)","Keep only \"xtls-rprx-vision\" or empty for flow fields"],"tags":["config","vless","xtls","flow"],"backgroundTag":null,"analyzedSha":"7d214f8b094f75322fa3990f8aadad1c912f24f5","analyzedAt":"2026-08-15T14:26:24.325Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}