{
  "id": "databricks-live-unity-catalog-grant-guard-at-azure-agent",
  "name": "Databricks Live Unity Catalog Grant Guard at Azure",
  "type": "agent",
  "provider": "databricks",
  "harnesses": [
    "codex",
    "copilot",
    "claude-code",
    "cursor",
    "gemini",
    "kiro"
  ],
  "summary": "Mutating-runtime live guard for Unity Catalog privilege management on Azure Databricks. Executes exactly ONE GRANT or REVOKE of a single privilege on a single Unity Catalog securable (schema, table, or volume) to a single principal — gated by explicit written human approval, dry-run preflight, prior-state capture, and named rollback. Phase B strictly-scoped controlled mutation; never ALL PRIVILEGES, never metastore/account admin, never catalog-wide grants.",
  "source_type": "original",
  "official_docs": [
    "https://docs.databricks.com/en/data-governance/unity-catalog/manage-privileges/privileges.html",
    "https://docs.databricks.com/en/data-governance/unity-catalog/manage-privileges/index.html",
    "https://docs.databricks.com/en/sql/language-manual/sql-ref-syntax-ddl-grant.html",
    "https://docs.databricks.com/en/admin/users-groups/service-principals.html",
    "https://learn.microsoft.com/en-us/azure/databricks/data-governance/unity-catalog/"
  ],
  "security_notes": "Mutating-runtime Phase B. Executes exactly one GRANT or REVOKE per invocation on one Unity Catalog securable. Never auto-dispatched; requires explicit written human approval token referencing exact securable, privilege, principal, and blast radius. Run-as Entra-managed service principal holds MANAGE or IS OWNER on the single target securable only — not metastore admin or account admin. ALL PRIVILEGES, catalog-wide grants, and ownership transfers are explicitly denied.",
  "last_verified": "2026-06-17",
  "path": "agents/databricks/databricks-live-unity-catalog-grant-guard-at-azure-agent",
  "author": "github: VincentChuWaiChow",
  "version": "0.1.0",
  "execution_tier": "mutating-runtime",
  "oauth_scopes": [],
  "run_as_permissions": {
    "required": [
      "Entra-managed service principal that holds MANAGE or IS OWNER on the single target Unity Catalog securable (schema, table, or volume) — scoped to that one object only",
      "Unity Catalog privilege: MANAGE on the ONE target securable, or IS OWNER — not metastore admin, not account admin"
    ],
    "denied": [
      "metastore admin",
      "account admin",
      "workspace admin",
      "ALL PRIVILEGES grant",
      "MANAGE grant at catalog level or above",
      "Ownership transfer (ALTER ... OWNER TO)",
      "catalog-wide grants",
      "MANAGE grant on metastore or catalog"
    ]
  },
  "requires_credentials": ["DATABRICKS_HOST", "DATABRICKS_CLIENT_ID"],
  "required_egress": [
    "DATABRICKS_HOST (workspace endpoint, e.g. adb-<id>.azuredatabricks.net)",
    "login.microsoftonline.com"
  ],
  "companion_skills": ["databricks-live-unity-catalog-grant-guard-at-azure"],
  "harness_variants": {
    "codex": "agents/databricks/databricks-live-unity-catalog-grant-guard-at-azure-agent/harnesses/codex.toml",
    "copilot": "agents/databricks/databricks-live-unity-catalog-grant-guard-at-azure-agent/harnesses/copilot.agent.md",
    "claude-code": "agents/databricks/databricks-live-unity-catalog-grant-guard-at-azure-agent/harnesses/claude-code.agent.md",
    "cursor": "agents/databricks/databricks-live-unity-catalog-grant-guard-at-azure-agent/harnesses/cursor.agent.md",
    "gemini": "agents/databricks/databricks-live-unity-catalog-grant-guard-at-azure-agent/harnesses/gemini.agent.md",
    "kiro-ide": "agents/databricks/databricks-live-unity-catalog-grant-guard-at-azure-agent/harnesses/kiro-ide.agent.md",
    "kiro-cli": "agents/databricks/databricks-live-unity-catalog-grant-guard-at-azure-agent/harnesses/kiro-cli.agent.json"
  }
}
