crewAIInc/crewAI · error · ValueError

Databricks authentication credentials are required. Set…

Error message

Databricks authentication credentials are required. Set either DATABRICKS_CONFIG_PROFILE or both DATABRICKS_HOST and DATABRICKS_TOKEN environment variables.

What it means

DatabricksQueryTool._validate_credentials() runs during the tool's __init__ and requires either DATABRICKS_CONFIG_PROFILE in the environment, or both DATABRICKS_HOST and DATABRICKS_TOKEN together. If neither combination is present it raises this ValueError, because the underlying databricks.sdk WorkspaceClient (constructed with no arguments) would have no way to authenticate.

Solutions

  1. For token auth, export both variables: export DATABRICKS_HOST=https://<workspace-url> and export DATABRICKS_TOKEN=<personal access token>.
  2. For profile auth, export DATABRICKS_CONFIG_PROFILE=<profile name matching ~/.databrickscfg>.
  3. Add the variables to .env / CI secrets and verify with: python -c "import os; print(all(k in os.environ for k in ('DATABRICKS_HOST','DATABRICKS_TOKEN')))".
  4. Remember DATABRICKS_HOST alone or DATABRICKS_TOKEN alone is insufficient — the pair must both be set.

Example fix

# before
# (no env vars set)
tool = DatabricksQueryTool()  # ValueError at construction

# after
# shell:
#   export DATABRICKS_HOST=https://dbc-123.cloud.databricks.com
#   export DATABRICKS_TOKEN=dapiXXXXXXXX
tool = DatabricksQueryTool()
Defensive patterns

Strategy: validation

Validate before calling

import os

def databricks_auth_configured() -> bool:
    return "DATABRICKS_CONFIG_PROFILE" in os.environ or (
        "DATABRICKS_HOST" in os.environ and "DATABRICKS_TOKEN" in os.environ
    )

if not databricks_auth_configured():
    raise SystemExit("Set DATABRICKS_CONFIG_PROFILE or DATABRICKS_HOST+DATABRICKS_TOKEN")

Try / catch

try:
    tool = DatabricksQueryTool()
except ValueError as e:
    if "Databricks authentication credentials" in str(e):
        # load env / prompt operator, then retry construction
        load_databricks_env()
        tool = DatabricksQueryTool()
    else:
        raise

Prevention

When it happens

Trigger: Instantiating DatabricksQueryTool() with no Databricks auth env vars set; setting only DATABRICKS_HOST without DATABRICKS_TOKEN (or vice versa — both are required for direct auth); running in a fresh shell/container where 'databricks configure' profile env was never exported.

Common situations: Env vars defined in .env but not loaded; vars set in a local terminal but missing in Docker/CI/agent runtime; partial config where only host is exported; relying on ~/.databrickscfg profiles without naming one via DATABRICKS_CONFIG_PROFILE.

Understand the failure class

Related errors


AI-assisted analysis of crewAIInc/crewAI@754d7323be (2026-08-15). Data as JSON: /api/errors/7ab52836fb671616. Report an issue: GitHub.

Appendix: source

Thrown at lib/crewai-tools/src/crewai_tools/tools/databricks_query_tool/databricks_query_tool.py:151

            default_schema (Optional[str]): Default schema to use for queries.
            default_warehouse_id (Optional[str]): Default SQL warehouse ID to use.
            **kwargs: Additional keyword arguments passed to BaseTool.
        """
        super().__init__(**kwargs)
        self.default_catalog = default_catalog
        self.default_schema = default_schema
        self.default_warehouse_id = default_warehouse_id
        self._validate_credentials()

    def _validate_credentials(self) -> None:
        """Validate that Databricks credentials are available."""
        has_profile = "DATABRICKS_CONFIG_PROFILE" in os.environ
        has_direct_auth = (
            "DATABRICKS_HOST" in os.environ and "DATABRICKS_TOKEN" in os.environ
        )

        if not (has_profile or has_direct_auth):
            raise ValueError(
                "Databricks authentication credentials are required. "
                "Set either DATABRICKS_CONFIG_PROFILE or both DATABRICKS_HOST and DATABRICKS_TOKEN environment variables."
            )

    @property
    def workspace_client(self) -> WorkspaceClient:
        """Get or create a Databricks WorkspaceClient instance."""
        if self._workspace_client is None:
            try:
                from databricks.sdk import WorkspaceClient

                self._workspace_client = WorkspaceClient()
            except ImportError as e:
                raise ImportError(
                    "`databricks-sdk` package not found, please run `uv add databricks-sdk`"
                ) from e
        return self._workspace_client

View on GitHub (pinned to 754d7323be)