hasura/graphql-engine · error

cannot create metadata files: %w

Error message

cannot create metadata files: %w

What it means

During init of v2+ projects, one of the metadata plugins (metadata files, functions.New, etc.) failed in plg.CreateFiles() while writing default metadata files into the metadata directory.

Source

Thrown at cli/commands/init.go:332

		plugins = append(plugins, querycollections.New(o.EC, o.EC.MetadataDir))
		plugins = append(plugins, allowlist.New(o.EC, o.EC.MetadataDir))
		plugins = append(plugins, remoteschemas.New(o.EC, o.EC.MetadataDir))
		plugins = append(plugins, actions.New(o.EC, o.EC.MetadataDir))

		plugins = append(plugins, crontriggers.New(o.EC, o.EC.MetadataDir))
		if config.Version == cli.V3 {
			plugins = append(plugins, metadataVersion.New(o.EC, o.EC.MetadataDir))
			plugins = append(plugins, sources.New(o.EC, o.EC.MetadataDir))
		} else {
			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"

View on GitHub (pinned to 724551b9ae)

Solutions

  1. Check the wrapped error for which plugin/file failed and fix the filesystem issue (space/permissions)
  2. Clean the partially initialised project and re-run `hasura init`
  3. Retry with verbose logging if a plugin content error is suspected
Defensive patterns

Strategy: try-catch

Validate before calling

if err := checkDiskAndPerms(metadataDir); err != nil { log.Fatal(err) }

Try / catch

if err := initCmd.Run(); err != nil {
    if strings.Contains(err.Error(), "cannot create metadata files") {
        // inspect wrapped plugin error; usually FS permission or space
    }
}

Prevention

When it happens

Trigger: Metadata plugin cannot write its files: disk full, permission issue on the metadata dir, or plugin serialization failure producing invalid file content.

Common situations: Same filesystem issues as other init write failures; interrupted init leaving half-written metadata; disk quota in CI containers.

Related errors


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