hasura/graphql-engine · error

cannot write seeds directory: %w

Error message

cannot write seeds directory: %w

What it means

os.MkdirAll failed for the seeds directory (<ExecutionDir>/seeds) at the end of `hasura init` file creation.

Source

Thrown at cli/commands/init.go:342

			plugins = append(plugins, metadataVersion.NewV3MetadataVersion(o.EC, o.EC.MetadataDir))
			plugins = append(plugins, tables.New(o.EC, o.EC.MetadataDir))
			plugins = append(plugins, functions.New(o.EC, o.EC.MetadataDir))
		}

		for _, plg := range plugins {
			err := plg.CreateFiles()
			if err != nil {
				return errors.E(op, fmt.Errorf("cannot create metadata files: %w", err))
			}
		}
	}

	// create seeds directory
	o.EC.SeedsDirectory = filepath.Join(o.EC.ExecutionDirectory, cli.DefaultSeedsDirectory)

	err = os.MkdirAll(o.EC.SeedsDirectory, os.ModePerm)
	if err != nil {
		return errors.E(op, fmt.Errorf("cannot write seeds directory: %w", err))
	}

	return nil
}

func (o *InitOptions) Run() error {
	var op errors.Op = "commands.InitOptions.Run"

	context := &initCtx{
		ec:      o.EC,
		initOps: o,
		logger:  o.EC.Logger,
		err:     nil,
	}

	configInitFSM := newInitFSM()

	err := configInitFSM.SendEvent(createProjectDirectory, context)

View on GitHub (pinned to 724551b9ae)

Solutions

  1. Verify no file named 'seeds' exists and the dir is writable
  2. Fix disk/permission problems and re-run init
  3. Init in a fresh writable directory
Defensive patterns

Strategy: validation

Validate before calling

if fi, err := os.Lstat(filepath.Join(dir, "seeds")); err == nil && !fi.IsDir() {
    log.Fatal("'seeds' exists but is not a directory")
}

Prevention

When it happens

Trigger: Seeds directory cannot be created due to permissions, a conflicting file named 'seeds', or read-only filesystem.

Common situations: Same restricted-filesystem scenarios as other init mkdir errors; leftover file from earlier tooling at the seeds path.

Related errors


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