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

  1. Check write permissions on the project/seeds directory (`ls -ld seeds`) and fix with chown/chmod
  2. Ensure the filesystem is writable (not a read-only mount) and disk has space
  3. 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

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


AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28). Data as JSON: /api/errors/703b17be00777f7b. Report an issue: GitHub.