{
  "id": "snowflake-live-auth-network-policy-guard-agent",
  "name": "Snowflake Live Auth and Network Policy Guard Agent",
  "version": "0.1.0",
  "type": "agent",
  "provider": "snowflake",
  "harnesses": [
    "codex",
    "copilot",
    "claude-code",
    "cursor",
    "gemini",
    "kiro"
  ],
  "summary": "Approval-gated execution boundary for exactly one Snowflake authentication-policy or network-policy change. Refuses to proceed until a surviving administrative path is demonstrated from login evidence — the operator must be proven not to lock themselves out before the statement is composed. Never auto-dispatched.",
  "source_type": "original",
  "official_docs": [
    "https://docs.snowflake.com/en/user-guide/network-policies",
    "https://docs.snowflake.com/en/sql-reference/sql/alter-network-policy",
    "https://docs.snowflake.com/en/user-guide/authentication-policies",
    "https://docs.snowflake.com/en/user-guide/network-policy-advisor",
    "https://docs.snowflake.com/en/sql-reference/account-usage/login_history"
  ],
  "security_notes": "Mutating-runtime and never auto-dispatched. Executes exactly one authentication-policy or network-policy change after explicit written human approval that names account, environment, the policy object, the exact modification, and the accepted blast radius. The defining refusal of this guard is structural: it will not execute any tightening for which a surviving administrative path — a named principal, from a named location, holding the privilege to revert — has not been demonstrated from login history. Runs as a narrowly scoped custom role owning the policy object; ACCOUNTADMIN is forbidden without exception, and SECURITYADMIN is not used. Combined add-and-remove changes are refused; addition and removal are two approvals. No harness adapter grants an execution tool.",
  "last_verified": "2026-08-17",
  "path": "agents/snowflake/snowflake-live-auth-network-policy-guard-agent/",
  "harness_variants": {
    "codex": "agents/snowflake/snowflake-live-auth-network-policy-guard-agent/harnesses/codex.toml",
    "copilot": "agents/snowflake/snowflake-live-auth-network-policy-guard-agent/harnesses/copilot.agent.md",
    "claude-code": "agents/snowflake/snowflake-live-auth-network-policy-guard-agent/harnesses/claude-code.agent.md",
    "cursor": "agents/snowflake/snowflake-live-auth-network-policy-guard-agent/harnesses/cursor.agent.md",
    "gemini": "agents/snowflake/snowflake-live-auth-network-policy-guard-agent/harnesses/gemini.agent.md",
    "kiro-ide": "agents/snowflake/snowflake-live-auth-network-policy-guard-agent/harnesses/kiro-ide.agent.md",
    "kiro-cli": "agents/snowflake/snowflake-live-auth-network-policy-guard-agent/harnesses/kiro-cli.agent.json"
  },
  "companion_skills": [
    "snowflake-live-auth-network-policy-guard"
  ],
  "execution_tier": "mutating-runtime",
  "lifecycle": "experimental",
  "author": "github: VincentChuWaiChow",
  "oauth_scopes": [],
  "run_as_permissions": {
    "required": [
      "A narrowly scoped custom Snowflake role holding OWNERSHIP of the single target policy object — modifying a network policy is documented as requiring OWNERSHIP on that policy",
      "For a user-level activation, the same role additionally holding OWNERSHIP on the specific user and USAGE on the policy — the documented requirement for user-level activation, and nothing wider",
      "A `TYPE = SERVICE` user authenticating by key-pair or workload identity federation, whose own connectivity path is itself protected from the change being made"
    ],
    "denied": [
      "ACCOUNTADMIN",
      "SECURITYADMIN",
      "SYSADMIN",
      "PUBLIC",
      "OWNERSHIP on any policy object other than the approved target",
      "OWNERSHIP on any user other than the one named in an approved user-level activation",
      "CREATE INTEGRATION or any integration lifecycle privilege",
      "Any privilege permitting account-wide parameter changes beyond the approved policy assignment"
    ]
  },
  "requires_credentials": [
    "SNOWFLAKE_ACCOUNT",
    "SNOWFLAKE_USER",
    "SNOWFLAKE_AUTHENTICATOR",
    "SNOWFLAKE_PRIVATE_KEY_PATH"
  ],
  "required_egress": [
    "The Snowflake account endpoint for the approved account only — the private-connectivity hostname where the account uses private connectivity, and never the public account URL in that case"
  ],
  "routing_keywords": [
    "network policy",
    "authentication policy",
    "lockout",
    "allowed_ip_list",
    "activate policy"
  ]
}
