hasura/graphql-engine · error
failed to create seed file: %w
Error message
failed to create seed file: %w
What it means
Returned when seed.CreateSeedFile fails to write the new seed file to disk (afero OS filesystem), or returns a nil path unexpectedly. This is the final write step of `hasura seed create`.
Source
Thrown at cli/commands/seed_create.go:169
body, err = editor.CaptureInputFromEditor(
editor.GetPreferredEditorFromEnvironment,
defaultText,
"sql",
)
if err != nil {
return errors.E(op, fmt.Errorf("cannot find default editor from env: %w", err))
}
}
createSeedOpts.Data = bytes.NewReader(body)
}
fs := afero.NewOsFs()
filepath, err := seed.CreateSeedFile(fs, createSeedOpts)
if err != nil || filepath == nil {
return errors.E(op, fmt.Errorf("failed to create seed file: %w", err))
}
o.FilePath = *filepath
return nil
}
View on GitHub (pinned to 724551b9ae)
Solutions
- Check write permissions on the project/seeds directory (`ls -ld seeds`) and fix with chown/chmod
- Ensure the filesystem is writable (not a read-only mount) and disk has space
- Use a simple alphanumeric seed name without slashes or special characters
Example fix
# before $ hasura seed create my/seed # in read-only dir # after $ sudo chown -R $USER . && hasura seed create my_seed
Defensive patterns
Strategy: validation
Validate before calling
// check writability of the seeds directory before creating a seed
seedsDir := "seeds"
if err := os.MkdirAll(seedsDir, 0o755); err != nil {
return fmt.Errorf("cannot create seeds dir: %w", err)
}
if f, err := os.CreateTemp(seedsDir, "*.sql"); err != nil {
return fmt.Errorf("seeds dir not writable: %w", err)
} else {
f.Close()
os.Remove(f.Name())
} Prevention
- Run the CLI as a user that owns the project directory
- Keep seed names to [a-z0-9_-]
When it happens
Trigger: The seeds directory cannot be created or the target file cannot be written: permission denied on the project/seeds directory, disk full, read-only filesystem, or invalid file name characters in the chosen seed name.
Common situations: Running the CLI in a directory owned by root, container mounts mounted read-only, CI sandboxes, or a seed name containing path separators.
Related errors
- unable to create directory: %w
- generating docs failed: %w
- error getting current working directory: %w
- directory '%s' already exists
- error creating setup directories: %w
AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28).
Data as JSON: /api/errors/703b17be00777f7b.
Report an issue: GitHub.