Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/content/docs/rover/config/project-config.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -228,4 +228,5 @@ For a complete list of all available configuration options, see the [Project Con
<LinkCard title="Sandbox Configuration" href="/rover/config/sandbox-config" description="Customize the container environment with custom images and network rules" />
<LinkCard title="Hooks" href="/rover/config/hooks" description="Run custom commands when tasks are merged, pushed, or completed" />
<LinkCard title="User Settings" href="/rover/config/user-settings" description="Configure user-specific preferences" />
<LinkCard title="Telemetry" href="/rover/config/telemetry" description="Learn what data Rover collects and how to disable it" />
</CardGrid>
162 changes: 162 additions & 0 deletions src/content/docs/rover/config/telemetry.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
---
title: Telemetry
description: Understanding what data Rover collects and how to disable it
sidebar:
order: 5
---

import StepList from '../../../../components/StepList.svelte';
import StepItem from '../../../../components/StepItem.svelte';
import { Aside, CardGrid, LinkCard } from '@astrojs/starlight/components';

Rover collects anonymous usage telemetry to help the team understand how the tool is used and prioritize improvements. This page explains what data is collected, how privacy is protected, and how to disable telemetry if you prefer.

## Why Rover Collects Telemetry

Telemetry helps the Rover team:

- **Understand usage patterns**: Which commands are used most frequently
- **Prioritize improvements**: Focus development effort on the features people actually use

## Anonymous data

Rover is designed with privacy as a core principle:

- **No personal information**: Telemetry never collects your name, email, or any identifying information
- **No code or content**: Task descriptions, prompts, file contents, and code are never transmitted
- **Anonymous user ID**: A random UUID is generated on first use and stored in the [global store](/rover/advanced/global-store)
- **No tracking across devices**: The random ID is local to your machine and has no connection to your identity
- **You control your ID**: You can regenerate your anonymous ID at any time by modifying the global store

The anonymous user ID is stored in the global configuration file:

| Platform | Location |
|----------|----------|
| macOS/Linux | `~/.rover/config/rover.json` |
| Windows | `%APPDATA%\Rover\config\rover.json` |

<Aside type="tip">
Your anonymous ID is just a random string like `a1b2c3d4-5678-90ab-cdef-1234567890ab`. It cannot be linked back to you.
</Aside>

## What Data is Collected

Telemetry records only command usage events. For each event, Rover sends:

| Data | Description |
|------|-------------|
| Anonymous user ID | Random UUID stored in the global configuration |
| Event type | Which command was run (e.g., `new_task`, `merge_task`) |
| Source | Whether the command came from the CLI or VS Code extension |

### Additional Metadata by Command

Some commands include basic metadata to help understand usage patterns:

| Command | Additional Data |
|---------|-----------------|
| `rover task` | Workflow name, agent names, whether multi-agent mode was used, task provider (user input or GitHub) |
| `rover iterate` | Iteration number |
| `rover init` | Agent names, preferred agent, programming languages, attribution setting |

### What is Never Collected

To be explicit, Rover **never** collects:

- Task descriptions or titles
- Code content or file paths
- Repository names or URLs
- GitHub issue content
- Environment variables or secrets
- Personal information of any kind

## Disabling Telemetry

You can disable telemetry at any time using one of the following methods.

### Option 1: Environment Variable (Recommended)

Set the `ROVER_NO_TELEMETRY` environment variable:

```sh
# For a single command
ROVER_NO_TELEMETRY=1 rover list

# Or export it for your entire session
export ROVER_NO_TELEMETRY=1
```

To disable telemetry permanently, add the export to your shell profile (`~/.bashrc`, `~/.zshrc`, etc.):

```sh
# Add to ~/.bashrc or ~/.zshrc
export ROVER_NO_TELEMETRY=1
```

<Aside type="note">
Either `ROVER_NO_TELEMETRY=1` or `ROVER_NO_TELEMETRY=true` will disable telemetry.
</Aside>

### Option 2: Global Store Configuration

Edit the global configuration file to set telemetry to disabled:

<StepList title="Disable via global store">
<StepItem step={1}>
Open the global configuration file

```sh
# macOS/Linux
nano ~/.rover/config/rover.json

# Windows (PowerShell)
notepad $env:APPDATA\Rover\config\rover.json
```
</StepItem>
<StepItem step={2}>
Set the `telemetry` field to `"disabled"`

```json
{
"version": "1.0",
"userId": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"telemetry": "disabled",
...
}
```
</StepItem>
</StepList>

### Option 3: Marker File (Legacy)

Create a `.no-telemetry` marker file:

```sh
# macOS/Linux
mkdir -p ~/.config/rover && touch ~/.config/rover/.no-telemetry

# To re-enable
rm ~/.config/rover/.no-telemetry
```

<Aside type="caution">
The marker file uses a legacy path (`~/.config/rover/`) that differs from the current global store location (`~/.rover/config/`). While this method still works, we recommend using the environment variable or global store configuration instead.
</Aside>

## Verifying Telemetry Status

You can verify whether telemetry is disabled by checking any of these:

1. **Environment variable**: `echo $ROVER_NO_TELEMETRY` (if set to `1` or `true`)
2. **Global store**: Check the `telemetry` field in `~/.rover/config/rover.json`
3. **Marker file**: `ls ~/.config/rover/.no-telemetry` (if file exists)

Telemetry is disabled if any of these conditions is met.

## Next Steps

<CardGrid>
<LinkCard title="Global Store" href="/rover/advanced/global-store" description="Learn about the global configuration where telemetry settings are stored" />
<LinkCard title="Project Configuration" href="/rover/config/project-config" description="Configure project-wide settings shared across your team" />
<LinkCard title="User Settings" href="/rover/config/user-settings" description="Configure user-specific preferences" />
</CardGrid>
40 changes: 1 addition & 39 deletions src/content/docs/rover/config/user-settings.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ sidebar:
order: 2
---

import StepList from '../../../../components/StepList.svelte';
import StepItem from '../../../../components/StepItem.svelte';
import { Aside, CardGrid, LinkCard } from '@astrojs/starlight/components';

The **`.rover/settings.json`** file stores user-specific preferences that should not be shared across your team. This file is automatically added to `.gitignore` when you run `rover init`.
Expand Down Expand Up @@ -99,46 +97,10 @@ rover task --agent claude:sonnet "Quick code review"

For a complete list of all available configuration options, see the [User Config Reference](/rover/reference/user-config).

## Telemetry

Rover has basic telemetry reporting to help understand how the tool is used. This telemetry does not identify you, as it generates a fully random hash you can change. You can find your random ID at `~/.config/rover/.user`.

The only information recorded by telemetry is which action was invoked and basic metadata like the action source (CLI or VS Code Extension). Telemetry **does not record** any data from prompts, task titles, or descriptions.

### Disabling Telemetry

There are two ways to disable telemetry in Rover.

**Option 1: Create a no-telemetry file**

<StepList title="Disable via file">
<StepItem step={1}>
```sh
mkdir -p ~/.config/rover
```
</StepItem>
<StepItem step={2}>
```sh
touch ~/.config/rover/.no-telemetry
```
</StepItem>
</StepList>

**Option 2: Use an environment variable**

Set the `ROVER_NO_TELEMETRY` environment variable:

```sh
# For a single command
ROVER_NO_TELEMETRY=true rover list

# Or export it globally
export ROVER_NO_TELEMETRY=true
```

## Next Steps

<CardGrid>
<LinkCard title="Project Configuration" href="/rover/config/project-config" description="Configure project-wide settings" />
<LinkCard title="Hooks" href="/rover/config/hooks" description="Run custom commands at task lifecycle events" />
<LinkCard title="Telemetry" href="/rover/config/telemetry" description="Learn what data Rover collects and how to disable it" />
</CardGrid>