blob: 4fe64eef8b11135435fd7ff38efa8211fa79ec04 [file] [log] [blame] [view]
---
Title: Go Telemetry Privacy Policy
Layout: privacy.html
---
# Privacy Policy
_Last updated: January 24, 2024_
Go Telemetry is a way for Go toolchain programs to collect data about their
performance and usage. This data can help developers improve the language and
tools.
## What Go Telemetry Records {#collection}
Go toolchain programs, such as the `go` command and `gopls`, record certain information
about their own execution. This data is stored in local files on your computer,
specifically in the [`os.UserConfigDir()/go/telemetry/local`](https://pkg.go.dev/os#UserConfigDir) directory.
Here is what these files contain:
* Event counters: Information about how Go toolchain programs
are used.
* Stack traces: Details about program execution for troubleshooting.
* Basic system information: Your operating system, CPU architecture, and name and version of the Go tool being executed.
Importantly, these files do not contain personal or other
identifying information about you or your system.
## Data Privacy {#data-privacy}
By default, the data collected by Go Telemetry is kept only locally on your computer.
It is not shared with anyone unless you explicitly decide to enable Go Telemetry.
You can do this by running the command [`gotelemetry on`](#command) or using a command
in your integrated development environment (IDE).
Once enabled, Go Telemetry may decide once a week to upload reports to a Google
server. A local copy of the uploaded reports is kept in the
[`os.UserConfigDir()/go/telemetry/remote`](https://pkg.go.dev/os#UserConfigDir) directory on the user's machine.
These reports include only approved counters and are collected in
accordance with the Google Privacy Policy, which you can find
at [Google Privacy Policy](https://policies.google.com/privacy).
The uploaded reports are also made available as part of a public dataset at
[telemetry.go.dev](https://telemetry.go.dev). Developers working on Go,
both inside and outside of Google, use this dataset to understand
how the Go toolchain is used and if it is performing as expected.
## Using the `gotelemetry` Command Line Tool {#command}
To manage Go Telemetry, you can use the `gotelemetry` command line tool.
go install golang.org/x/telemetry/cmd/gotelemetry@latest
Here are some useful commands:
* `gotelemetry on`: Upload Go Telemetry data weekly.
* `gotelemetry off`: Do not upload Go Telemetry data.
* `gotelemetry view`: View locally collected telemetry data.
* `gotelemetry clear`: Clear locally collected telemetry data at any time.
For the complete usage documentation of the gotelemetry command line tool, visit
[golang.org/x/telemetry/cmd/gotelemetry](https://golang.org/x/telemetry/cmd/gotelemetry).
## Approved Counters {#config}
Go Telemetry only uploads counters that have been approved through the [public proposal process](https://github.com/orgs/golang/projects/29).
You can find the set of approved counters as a Go module at
[golang.org/x/telemetry/config](https://go.googlesource.com/telemetry/+/refs/heads/master/config/config.json) and the [current config in use](https://telemetry.go.dev/config).
## IDE Integration {#integration}
If you're using an integrated development environment (IDE) like Visual Studio
Code, versions
[`v0.14.0`](https://github.com/golang/tools/releases/tag/gopls%2Fv0.14.0) and
later of the Go language server [gopls](https://go.dev/s/gopls) collect
telemetry data. As described above, data is only uploaded after you have opted
in, either by using the command [`gotelemetry on`](#command) as described above
or by accepting a dialog in the IDE.
You can always opt out of uploading at any time by using the
[`gotelemetry local`](#command) or [`gotelemetry off`](#command) commands.
By sharing performance statistics, usage information, and crash reports with Go Telemetry,
you can help improve the Go programming language and its tools while also ensuring
your data privacy.