cloudflare/cloudflared · error
no input provided
Error message
no input provided
What it means
parseURL in cmd/cloudflared/access/validation.go converts a user-supplied hostname/URL into a *url.URL for Access subcommands (ssh, ssh-gen, curl-style helpers). It rejects empty input outright with this error before any parsing is attempted, because there is nothing to build an Access URL from.
Source
Thrown at cmd/cloudflared/access/validation.go:50
func bracketBareIPv6(input string) string {
prefix := input[:strings.Index(input, "://")+3]
rest := input[len(prefix):]
host := rest
if i := strings.IndexAny(rest, "/?#"); i >= 0 {
host = rest[:i]
}
if net.ParseIP(host) != nil && strings.Contains(host, ":") {
return prefix + "[" + host + "]" + rest[len(host):]
}
return input
}
// parseHostname will attempt to convert a user provided URL string into a string with some light error checking on
// certain expectations from the URL.
// Will convert all HTTP URLs to HTTPS
func parseURL(input string) (*url.URL, error) {
if input == "" {
return nil, errors.New("no input provided")
}
if !strings.HasPrefix(input, "https://") && !strings.HasPrefix(input, "http://") {
input = fmt.Sprintf("https://%s", input)
}
input = bracketBareIPv6(input)
url, err := url.ParseRequestURI(input)
if err != nil {
return nil, fmt.Errorf("failed to parse as URL: %w", err)
}
if url.Scheme != "https" {
url.Scheme = "https"
}
if url.Host == "" {
return nil, errors.New("failed to parse Host")
}
host, err := httpguts.PunycodeHostPort(url.Host)
if err != nil || host == "" {
return nil, errView on GitHub (pinned to 2253eeeb25)
Solutions
- Pass the target hostname or URL as an argument, e.g. `cloudflared access ssh myapp.example.com`.
- In scripts, guard before invoking: `[ -n "$TARGET" ] || { echo 'target required'; exit 1; }`.
- Check quoting so the argument is not accidentally consumed or emptied by the shell.
Example fix
# before
cloudflared access ssh $TARGET # TARGET unset
# after
: "${TARGET:?target host is required}"
cloudflared access ssh "$TARGET" Defensive patterns
Strategy: validation
Validate before calling
func requireTarget(args []string) (string, error) {
if len(args) == 0 || strings.TrimSpace(args[0]) == "" {
return "", errors.New("target hostname is required")
}
return strings.TrimSpace(args[0]), nil
} Try / catch
url, err := parseURL(input)
if err != nil {
if err.Error() == "no input provided" {
return fmt.Errorf("usage: cloudflared access <cmd> <hostname>")
}
return err
} Prevention
- Use `: "${VAR:?message}"` shell guards for variables forwarded to cloudflared.
- Echo the command with args before executing in scripts to catch empty arguments.
- Wrap access commands in a function that validates the positional host argument first.
When it happens
Trigger: Calling `cloudflared access ssh`, `access ssh-gen`, or any command whose argument flows through getAppURLFromArgs/parseURL with an empty string — e.g. `cloudflared access ssh ""` or a shell variable like $HOST that is unset/empty.
Common situations: Scripts where the target host variable is unset; wrappers that forward empty args; typos that drop the positional argument entirely.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- not a valid host
- not a valid url
- failed to parse Host
- invalid Host provided
- invalid connection override: %s
AI-assisted analysis of cloudflare/cloudflared@2253eeeb25 (2026-09-06).
Data as JSON: /api/errors/431f026461336572.
Report an issue: GitHub.