XTLS/Xray-core · error

VLESS settings: please add/set "decryption":"none" to every

Error message

VLESS settings: please add/set "decryption":"none" to every settings

What it means

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.

Source

Thrown at infra/conf/vless.go:152

		padding := 0
		for _, r := range s[3:] {
			if len(r) < 20 {
				padding += len(r) + 1
				continue
			}
			if b, _ := base64.RawURLEncoding.DecodeString(r); len(b) != 32 && len(b) != 64 {
				return false
			}
		}
		config.Decryption = config.Decryption[27+len(s[2]):]
		if padding > 0 {
			config.Padding = config.Decryption[:padding-1]
			config.Decryption = config.Decryption[padding:]
		}
		return true
	}() && config.Decryption != "none" {
		if config.Decryption == "" {
			return nil, errors.New(`VLESS settings: please add/set "decryption":"none" to every settings`)
		}
		return nil, errors.New(`VLESS settings: unsupported "decryption": ` + config.Decryption)
	}

	if config.Decryption != "none" && c.Fallbacks != nil {
		return nil, errors.New(`VLESS settings: "fallbacks" can not be used together with "decryption"`)
	}

	for _, fb := range c.Fallbacks {
		var i uint16
		var s string
		if err := json.Unmarshal(fb.Dest, &i); err == nil {
			s = strconv.Itoa(int(i))
		} else {
			_ = json.Unmarshal(fb.Dest, &s)
		}
		config.Fallbacks = append(config.Fallbacks, &inbound.Fallback{
			Name: fb.Name,

View on GitHub (pinned to 7d214f8b09)

Solutions

  1. Add "decryption": "none" to the outbound's settings object
  2. Regenerate the client config from a current share link, which always includes it

Example fix

// before
"settings": { "vnext": [ { "address": "...", "port": 443, "users": [ ... ] } ] }
// after
"settings": { "decryption": "none", "vnext": [ ... ] }
Defensive patterns

Strategy: validation

Validate before calling

if gjson.Get(outbound, "settings.decryption").String() == "" {
    return errors.New("vless outbound settings must set \"decryption\": \"none\"")
}

Prevention

When it happens

Trigger: A VLESS outbound with "settings": { "vnext": [ ... ] } and no "decryption" key at all.

Common situations: Hand-writing a minimal VLESS outbound and omitting decryption; old V2Ray-style configs that never had this field.

Related errors


AI-assisted analysis of XTLS/Xray-core@7d214f8b09 (2026-08-15). Data as JSON: /api/errors/8784f54ce32264b9. Report an issue: GitHub.