Privacy & Data Handling
Metatate processes all data within the consumer's Snowflake account. No consumer data is transmitted externally, and the application is designed to minimize the data it accesses and retains.
Core Principle: No External Data Transmission
Nothing leaves the consumer's Snowflake account:
- No outbound network connections (no EAIs configured)
- No telemetry or usage analytics sent to the provider
- No data shared with third-party services
- No API calls to external endpoints
- AI processing uses Snowflake Cortex, which runs inside Snowflake
This is enforced architecturally, not just by policy. The application has no External Access Integrations and therefore cannot make outbound network calls even if it attempted to.
What Consumer Data the App Accesses
From DATABASE_CATALOG (consumer tables)
The application reads metadata only from consumer tables granted through the DATABASE_CATALOG reference:
| Data Accessed | Purpose | Retained? |
|---|---|---|
| Table names | Display in governance catalog | No (read on demand) |
| Column names | Classification, policy targeting | No (read on demand) |
| Column data types | Classification assistance | No (read on demand) |
| Row counts | Catalog display | No (read on demand) |
The application does not access:
- Row-level data (individual records)
- Column values or samples
- Query results from consumer tables
- Historical data or change data capture
From Snowflake System Tables
| Data Accessed | Purpose |
|---|---|
INFORMATION_SCHEMA.COLUMNS | Column enumeration for catalog |
INFORMATION_SCHEMA.TABLES | Table enumeration for catalog |
What Data the App Creates and Retains
All data created by Metatate is stored in the app_data schema within the application's scope in the consumer account.
tenant_config
| Content | Retention |
|---|---|
| Display preferences, feature flags, tenant name | Persists until consumer changes settings or uninstalls |
Contains no consumer data — only application configuration values.
Governance Tables (6 core + 6 staging)
| Content | Retention |
|---|---|
| Policy-derived metadata: table names, column names, classification labels, masking rules, usage rules, business context | Persists as long as policies are deployed |
These tables contain governance rules derived from policies authored by the consumer. They do not contain consumer row data. The content is:
- Table and column names (from policy scope definitions)
- Classification labels and sensitivity levels (from policy instructions)
- Masking configurations (from policy instructions)
- Usage rules and restrictions (from policy instructions)
- Business context and lineage metadata (from policy instructions)
activity_log
| Content | Retention |
|---|---|
| User actions: who did what and when (policy edits, deployments, config changes) | Persists indefinitely (append-only) |
Contains Snowflake usernames and action descriptions. No consumer row data.
governance_decision_log
| Content | Retention |
|---|---|
| Authorization decisions: request context, outcome, reason codes, evidence chain | Persists indefinitely (append-only) |
Contains table names, column names, requested purposes, and decision outcomes. No consumer row data.
governance_snapshots
| Content | Retention |
|---|---|
| Point-in-time summaries of governance state after each deployment | Persists indefinitely |
Contains aggregate metadata (table counts, policy counts, timestamps). No consumer row data.
Container Logs
| Content | Retention |
|---|---|
| Application logs from Flask backend and nginx router | Managed by SPCS (standard Snowflake container log retention) |
May contain table names and column names in log messages. No consumer row data is logged.
AI Data Handling
What Is Sent to Cortex
When AI features are used, the following metadata is included in Cortex prompts:
| Data in Prompt | Example |
|---|---|
| Table names | ANALYTICS_DB.PUBLIC.CUSTOMERS |
| Column names | EMAIL, PHONE_NUMBER, SSN |
| Column data types | VARCHAR, NUMBER, TIMESTAMP |
| Policy text | User-authored policy descriptions and instructions |
| User's natural language input | "Create a policy to protect PII in the customers table" |
What Is NOT Sent to Cortex
- Row data (individual records from consumer tables)
- Column values or data samples
- Query results
- Credentials or connection strings
- Other users' data or policies
Where Cortex Processes Data
All Cortex processing occurs within the Snowflake infrastructure. The SNOWFLAKE.CORTEX.COMPLETE() function is an internal Snowflake service — it does not make external API calls. The consumer's Snowflake region determines where the processing occurs.
AI prompts and responses are not persisted by Metatate. They are used in-memory for the duration of the request and discarded.
Data on Uninstall
When the consumer uninstalls (drops) the Metatate application:
- All application schemas and their contents are dropped
- All governance tables, logs, and configuration are deleted
- Compute pools are released
- Container services are terminated
- No data persists after uninstall
The consumer's own tables (those in DATABASE_CATALOG) are unaffected by uninstall.
Summary
| Question | Answer |
|---|---|
| Does data leave my Snowflake account? | No |
| Does the provider see my data? | No |
| Is row data sent to AI? | No, only metadata (table/column names, data types, policy text) |
| Where is AI processing done? | Inside Snowflake via Cortex |
| What is retained? | Governance rules, activity logs, decision logs, configuration |
| What happens on uninstall? | All application data is deleted |
| Are there external API calls? | No (no EAIs) |
| Is telemetry collected? | No |