fatedier/frp · error
%s contains non-printable character
Error message
%s contains non-printable character
What it means
Error "%s contains non-printable character" thrown in fatedier/frp.
Source
Thrown at pkg/config/v1/validation/name.go:40
const (
// MaxRunIDLength is the maximum number of bytes accepted for a control run ID.
MaxRunIDLength = 64
)
func validateIdentifier(value, kind string, maxLength int) error {
if value == "" {
return fmt.Errorf("%s cannot be empty", kind)
}
if len(value) > maxLength {
return fmt.Errorf("%s is too long: length %d exceeds maximum %d", kind, len(value), maxLength)
}
if !utf8.ValidString(value) {
return fmt.Errorf("%s must be valid UTF-8", kind)
}
for _, r := range value {
if !unicode.IsPrint(r) {
return fmt.Errorf("%s contains non-printable character", kind)
}
}
return nil
}
func ValidateRunID(runID string) error {
return validateIdentifier(runID, "run id", MaxRunIDLength)
}
View on GitHub (pinned to 6c8a8d0a97)
Solutions
- Remove control characters and other non-printable characters (spaces, tabs, newlines, zero-width characters) from the name.
- Copy the value again from the configuration source instead of typing it, so that no hidden characters are included.
When it happens
Trigger: Raised by validateIdentifier in pkg/config/v1/validation/name.go when a name (proxy, visitor, user, or run ID) contains a non-printable rune such as a control character. Triggered at config validation time, before the config is applied.
Common situations: A name copied from another document carries invisible characters (zero-width space, tab, newline, escape codes), or a name is built from raw untrusted input without sanitization. Fix by removing non-printable characters from the identifier.
AI-assisted analysis of fatedier/frp@6c8a8d0a97 (2026-08-15).
Data as JSON: /api/errors/3397ff1108e497c5.
Report an issue: GitHub.