caddyserver/caddy · error
unable to traverse into path: %s
Error message
unable to traverse into path: %s
What it means
Error "unable to traverse into path: %s" thrown in caddyserver/caddy.
Source
Thrown at modules/caddytls/folderloader.go:72
fl[k] = repl.ReplaceKnown(path, "")
}
return nil
}
// LoadCertificates loads all the certificates+keys in the directories
// listed in fl from all files ending with .pem. This method of loading
// certificates expects the certificate and key to be bundled into the
// same file.
func (fl FolderLoader) LoadCertificates() ([]Certificate, error) {
var certs []Certificate
for _, dir := range fl {
root, err := os.OpenRoot(dir)
if err != nil {
return nil, fmt.Errorf("unable to open root directory %s: %w", dir, err)
}
err = filepath.WalkDir(dir, func(fpath string, d fs.DirEntry, err error) error {
if err != nil {
return fmt.Errorf("unable to traverse into path: %s", fpath)
}
if d.IsDir() {
return nil
}
if !strings.HasSuffix(strings.ToLower(d.Name()), ".pem") {
return nil
}
rel, err := filepath.Rel(dir, fpath)
if err != nil {
return fmt.Errorf("unable to get relative path for %s: %w", fpath, err)
}
bundle, err := root.ReadFile(rel)
if err != nil {
return err
}
cert, err := tlsCertFromCertAndKeyPEMBundle(bundle)View on GitHub (pinned to 50e54ee279)
Solutions
- Check permissions on the path; Caddy cannot traverse into a directory it cannot read or execute.
When it happens
Trigger: Thrown at modules/caddytls/folderloader.go:72 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of caddyserver/caddy@50e54ee279 (2026-08-15).
Data as JSON: /api/errors/1945b3de0eee029e.
Report an issue: GitHub.