Telemetry¶
fabric-dw collects anonymous, opt-out usage telemetry to understand how the tool is used and to prioritise improvements.
What is collected¶
Every telemetry event includes a shared envelope of anonymous fields:
| Field | Description |
|---|---|
anonymous_install_id |
Random UUID generated once and stored in the config directory. Used to count unique installations without identifying the user. |
session_id |
Random UUID per process run. Used to group events within a single invocation. |
app_version |
The installed version of fabric-dw. |
python_version |
Python major.minor (e.g. 3.12). |
os |
Operating system (e.g. linux, darwin, windows). |
arch |
CPU architecture (e.g. arm64, x86_64). |
install_method |
Best-effort detection: pip, uv, pipx, or source. |
surface |
cli or mcp — which interface was used. |
auth_mode |
Categorical authentication mode: service_principal, github_oidc, azure_cli, or interactive. Never credentials. |
tenant_id |
Your Azure tenant ID, read from AZURE_TENANT_ID or FABRIC_INTERACTIVE_TENANT_ID only when telemetry is enabled. This identifies the organisation (not an individual). |
Lifecycle events¶
| Event | When | Extra fields |
|---|---|---|
app_started |
Once per process | — |
mcp_server_started |
When the MCP server boots | — |
app_exited |
On process exit | duration_ms, exit_status (ok / user_error / api_error), error_category |
command_invoked — per-command usage¶
One command_invoked event is emitted after every CLI command and every MCP tool call completes (success or failure).
| Field | Description |
|---|---|
name |
Command name. CLI: <group>.<subcommand> (e.g. warehouses.list). MCP: tool name (e.g. create_table). Never SQL text or identifiers. |
domain |
Rolled-up feature area (see table below). |
surface |
cli or mcp. |
status |
success, user_error (validation/usage problems), or api_error (HTTP/driver/unexpected). |
duration_ms_bucket |
Bucketed wall-clock duration: <100ms, <1s, <10s, or >10s. |
destructive_op |
true only for permanently-destructive MCP tools (delete, clear, restore in-place). Omitted otherwise. |
Domain rollup¶
| Domain | CLI group(s) | Representative MCP tools |
|---|---|---|
workspaces |
workspaces |
list_workspaces, get_workspace, set_workspace_collation |
warehouses |
warehouses |
list_warehouses, create_warehouse, delete_warehouse, … |
sql_endpoints |
sql-endpoints |
list_sql_endpoints, get_sql_endpoint, … |
sql |
sql |
execute_sql |
tables |
tables |
list_tables, create_table, delete_table, … |
views |
views |
list_views, create_view, drop_view, … |
procedures |
procedures |
list_procedures, create_procedure, drop_procedure, … |
functions |
functions |
list_functions, create_function, drop_function, … |
schemas |
schemas |
list_schemas, create_schema, delete_schema |
statistics |
statistics |
list_statistics, create_statistics, delete_statistics |
snapshots |
snapshots |
list_snapshots, create_snapshot, delete_snapshot, … |
restore_points |
restore-points |
list_restore_points, create_restore_point, restore_warehouse_in_place, … |
audit |
audit |
get_audit_settings, enable_audit, disable_audit, … |
queries |
queries |
list_running_queries, kill_session, list_request_history, … |
sql_pools |
sql-pools |
list_sql_pools, create_sql_pool, delete_sql_pool, … |
dbt |
dbt |
generate_dbt_profile |
cache |
cache |
clear_cache |
config |
config |
— |
completion |
completion |
— |
What is deliberately NOT collected¶
- SQL text, query results, or row counts
- Workspace, warehouse, schema, table, column, or snapshot names/IDs
- Connection strings or any credentials
- File paths or environment variable values
- Any other personally-identifiable information
tenant_id is the only organisation-identifying field and is only emitted when telemetry is enabled (it is omitted when you opt out).
Where telemetry data goes¶
Events are sent to Azure Application Insights (appi-fabric-dw-mcp-cli, westeurope), owned and operated by the fabric-dw maintainers. Data is ingested via a write-only connection string embedded in the package. The backing Log Analytics workspace has a daily ingestion cap to control costs.
How to opt out¶
Any of the following fully disables telemetry — no events are emitted and the SDK is never imported:
| Method | How |
|---|---|
| Environment variable | FABRIC_DISABLE_TELEMETRY=1 |
| Environment variable | FABRIC_TELEMETRY=0 (also accepts false, no, off) |
| Do Not Track | DO_NOT_TRACK=1 |
| CI detection | Automatic when CI, GITHUB_ACTIONS, TRAVIS, CIRCLECI, GITLAB_CI, JENKINS_URL, or TF_BUILD is set |
| Config file | Add disabled = true under a [telemetry] section in $XDG_CONFIG_HOME/fabric-dw/config.toml |
Telemetry is always off in CI environments — no action needed for automated pipelines.