.NET Core SDK telemetry

The .NET Core SDK includes a telemetry feature that collects usage information. It's important that the .NET Team understands how the tools are used so they can be improved. For more information, see What we've learned from .NET Core SDK Telemetry.

The collected data is anonymous and published in an aggregated form for use by both Microsoft and the community under the Creative Commons Attribution License.


The dotnet command is used to launch both apps and the .NET Core CLI. The dotnet command itself doesn't collect telemetry. The .NET Core CLI commands run by the dotnet command collect the telemetry.

Telemetry isn't enabled when using the dotnet command itself, with no command attached:

  • dotnet
  • dotnet [path-to-app]

Telemetry is enabled when using the .NET Core CLI commands, such as:

  • dotnet build
  • dotnet pack
  • dotnet restore
  • dotnet run

How to opt out

The .NET Core SDK telemetry feature is enabled by default. Opt out of the telemetry feature by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 or true.

Data points

The feature collects the following data:

  • Timestamp of invocation†
  • Command invoked (for example, "build")†
  • Three octet IP address used to determine geographical location†
  • ExitCode of the command
  • Test runner (for test projects)
  • Operating system and version†
  • Whether runtime IDs are present in the runtimes node
  • .NET Core SDK version†

†This metric is published.

Starting with .NET Core 2.0 SDK, new data points are collected:

  • dotnet command arguments and options: only known arguments and options are collected (not arbitrary strings).
  • Whether the SDK is running in a container.
  • Target frameworks.
  • Hashed MAC address: a cryptographically (SHA256) anonymous and unique ID for a machine. This metric isn't published.
  • Hashed current working directory.

The feature doesn't collect personal data, such as usernames or email addresses. It doesn't scan your code and doesn't extract sensitive project-level data, such as name, repo, or author. The data is sent securely to Microsoft servers using Microsoft Azure Application Insights technology, held under restricted access, and published under strict security controls from secure Azure Storage systems.

The .NET team wants to know how the tools are used and if they're working well, not what you're building with the tools. If you suspect that the telemetry is collecting sensitive data or that the data is being insecurely or inappropriately handled, file an issue in the dotnet/cli repository for investigation.

Published data

Published data is available quarterly and are listed at .NET Core SDK Usage Data. The columns of a data file are:

  • Timestamp
  • Occurrences†
  • Command
  • Geography‡
  • OSFamily
  • RuntimeID
  • OSVersion
  • SDKVersion

†The Occurrences column displays the aggregate count of that command's use for that row's metrics that day.

‡Typically, the Geography column displays the name of a country/region. In some cases, the continent of Antarctica appears in this column, either due to researchers using .NET Core in Antarctica or incorrect location data.


Timestamp Occurrences Command Geography OSFamily RuntimeID OSVersion SDKVersion
4/16/2017 0:00 8 run Uganda Darwin osx.10.12-x64 10.12 1.0.1


Additional datasets are posted using a standard URL format. Replace <YEAR> with the year and replace <QUARTER> with the quarter of the year (use 1, 2, 3, or 4). The files are in tab-separated values (TSV) format.



The Microsoft distribution of .NET Core is licensed with the Microsoft Software License Terms: Microsoft .NET Library. For details on data collection and processing, see the section entitled "Data."

.NET NuGet packages use the same license but don't enable telemetry (see Scope).


The .NET Core SDK displays the following text when you first run one of the .NET Core CLI commands (for example, dotnet restore). Text may vary slightly depending on the version of the SDK you're running. This "first run" experience is how Microsoft notifies you about data collection.

Welcome to .NET Core!
Learn more about .NET Core: https://aka.ms/dotnet-docs
Use 'dotnet --help' to see available commands or visit: https://aka.ms/dotnet-cli-docs

The .NET Core tools collect usage data in order to help us improve your experience.
The data is anonymous and doesn't include command-line arguments.
The data is collected by Microsoft and shared with the community.
You can opt-out of telemetry by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or 'true' using your favorite shell.

Read more about .NET Core CLI Tools telemetry: https://aka.ms/dotnet-cli-telemetry

See also