{"record":{"id":"64ffed950b502adb","repo":"dbt-labs/dbt-core","slug":"env-var-environment-variable-var-not-found","errorCode":null,"errorMessage":"'env_var': environment variable '{var}' not found","messagePattern":"'env_var': environment variable '(.+?)' not found","errorType":"exception","errorClass":"minijinja::Error (InvalidOperation)","httpStatus":null,"severity":"error","filePath":"crates/dbt-jinja-vars/src/env_var.rs","lineNumber":94,"sourceCode":"            if is_secret {\n                debug_assert!(placeholder_on_secret_access);\n                let value = Value::from(SECRET_PLACEHOLDER.replace(\"{}\", var));\n                Ok(value)\n            } else {\n                if let Some(tracker) = tracker {\n                    tracker(var, &value);\n                }\n                Ok(Value::from(value))\n            }\n        }\n        (Err(_), Some(default)) => {\n            if let Some(tracker) = tracker {\n                tracker(var, DEFAULT_ENV_PLACEHOLDER);\n            }\n            Ok(default.clone())\n        }\n        _ => {\n            let err = Error::new(\n                ErrorKind::InvalidOperation,\n                format!(\"'env_var': environment variable '{var}' not found\"),\n            );\n            Err(err)\n        }\n    }\n}\n","sourceCodeStart":76,"sourceCodeEnd":102,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-jinja-vars/src/env_var.rs#L76-L102","documentation":"The `env_var` Jinja function throws this when the requested environment variable is not set in the process environment and no `default` kwarg was supplied. The match on `(std::env::var(var), default)` falls into the catch-all arm when the lookup fails and `default` is `None`, producing this error.","triggerScenarios":"`{{ env_var('MY_VAR') }}` where `MY_VAR` is not exported in the environment that launched dbt and no `default=` argument is given. Note the earlier secret/internal checks must already have passed (name not starting with `DBT_ENV_SECRET` or `_DBT`).","commonSituations":"Running `dbt run` locally without the env vars a CI pipeline sets (e.g. `env_var('DBT_WAREHOUSE_HOST')`); profiles.yml referencing vars set only in another shell; shell typos in `export` statements; vars defined after launching dbt rather than before.","solutions":["Export the variable before invoking dbt: `export MY_VAR=value` (or set it in CI/job environment config).","Provide a fallback: `{{ env_var('MY_VAR', default='localhost') }}`.","Verify the exact variable name/spelling — env var lookups are case-sensitive.","If the value must come from a test/programmatic runner, supply it via the `overrides_fn` override mechanism."],"exampleFix":"// before (Jinja)\n{{ env_var('DB_HOST') }}\n// after\n{{ env_var('DB_HOST', default='localhost') }}","handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"// Prefer defaults over hard failure in templates\n{{ env_var('MY_VAR', default='') }}  // then handle empty value explicitly","preventionTips":["Always pass default= for env vars that are optional per environment","Document required env vars and validate them at job start (e.g. `: ${DB_HOST:?DB_HOST not set}`)","Set env vars before launching dbt, not in later shell steps"],"tags":["jinja","env-var","missing-variable","dbt"],"backgroundTag":"missing-env-var","analyzedSha":"0267ce9170576975b76b64ce856b2e5848e96617","analyzedAt":"2026-09-07T21:53:39.732Z","contentChangedAt":"2026-09-07T21:53:39.732Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}