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
- Add a scalar_types definition for the missing scalar name
- Fix the reference to use an existing declared scalar
- 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
- Declare every custom scalar explicitly, including common ones like DateTime/UUID
- Use a shared scalars module imported by all subgraphs to avoid divergence
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
- error while parsing the endpoint :%w
- failed to get version from server: %w
- unable to parse server endpoint: %w
- setting up codegen-assets repo failed (this is required for
- error building metadata
AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28).
Data as JSON: /api/errors/aaf12ad7469cc363.
Report an issue: GitHub.