hasura/graphql-engine · error

cannot read config from file/env: %w

Error message

cannot read config from file/env: %w

What it means

A scalar type referenced by its qualified name has not been defined in the metadata's scalar type declarations. Scalar references in field types or arguments must resolve to a declared scalar type.

Source

Thrown at cli/cli.go:969

	v.SetDefault("api_paths.v1_metadata", "v1/metadata")
	v.SetDefault("api_paths.graphql", "v1/graphql")
	v.SetDefault("api_paths.config", "v1alpha1/config")
	v.SetDefault("api_paths.pg_dump", "v1alpha1/pg_dump")
	v.SetDefault("api_paths.version", "v1/version")
	v.SetDefault("metadata_directory", DefaultMetadataDirectory)
	v.SetDefault("migrations_directory", DefaultMigrationsDirectory)
	v.SetDefault("seeds_directory", DefaultSeedsDirectory)
	v.SetDefault("actions.kind", "synchronous")
	v.SetDefault("actions.handler_webhook_baseurl", "http://localhost:3000")
	v.SetDefault("actions.codegen.framework", "")
	v.SetDefault("actions.codegen.output_dir", "")
	v.SetDefault("actions.codegen.uri", "")
	v.SetDefault("no_transaction", false)
	v.AddConfigPath(ec.ExecutionDirectory)

	err := v.ReadInConfig()
	if err != nil {
		return errors.E(op, fmt.Errorf("cannot read config from file/env: %w", err))
	}

	adminSecret := v.GetString("admin_secret")
	if adminSecret == "" {
		adminSecret = v.GetString("access_key")
	}

	// Admin secrets can be specified as a string value of format
	// ["secret1", "secret2"], similar to how the corresponding environment variable
	// HASURA_GRAPHQL_ADMIN_SECRETS is configured with the server
	adminSecretsList := v.GetString("admin_secrets")

	adminSecrets := []string{}
	if len(adminSecretsList) > 0 {
		err = json.Unmarshal([]byte(adminSecretsList), &adminSecrets)
		if err != nil {
			return errors.E(
				op,

View on GitHub (pinned to 724551b9ae)

Solutions

  1. Add a scalar_types definition for the missing scalar name
  2. Fix the reference to use an existing declared scalar
  3. Import/include the metadata file declaring the scalar

Example fix

// before
fields:
  created: DateTime  // not declared
// after
scalar_types:
  DateTime: ...
fields:
  created: DateTime
Defensive patterns

Strategy: validation

Validate before calling

let scalars: HashSet<_> = metadata.scalar_types.keys().collect();
for t in referenced_scalar_types(&metadata) {
    assert!(scalars.contains(&t), "scalar type {t} not declared");
}

Prevention

When it happens

Trigger: Using a scalar name (e.g. `Date`, `UUID`, `my_scalar`) in a field or argument type without a corresponding scalar_types entry, during metadata resolution.

Common situations: Assuming built-in scalars exist when only declared ones are available; renaming scalar declarations; referencing third-party/other-subgraph scalars that are not present locally.

Related errors


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