Skip to content

Configuration

Rover uses a two different configuration files for the project-wide settings and user-specific preferences:

  • rover.json: Project-wide configuration committed to version control. Defines project context (languages, package managers, MCP servers) that all team members share.
  • .rover/settings.json: User-specific settings automatically added to .gitignore. Stores user-specific configuration like installed AI agents and your default agent preference.

Both files are created automatically when you run rover init. Rover detects your project environment and populates them with appropriate defaults. Checkout the quickstart guide to learn how to initialize Rover in your projects.

The rover.json file defines project-wide settings shared across your team. This file is committed to version control. It defines:

  • languages: Programming languages used in the project
  • packageManagers: Package managers available (npm, pnpm, pip, etc.)
  • taskManagers: Task runners like Make, Just, or Task
  • mcps: Model Context Protocol servers providing additional context to AI agents
  • attribution: Whether Rover adds itself as co-author on AI-assisted commits
  • envs: Custom environment variables passed to containerized agents
  • envsFile: Path to a dotenv file with environment variables

Here’s a minimal example:

{
// Schema version for automatic migration
"version": "1.2",
// Programming languages used in the project
"languages": ["typescript", "javascript"],
// Package managers available
"packageManagers": ["npm"],
// Task runners (optional)
"taskManagers": [],
// MCP servers for AI context (optional)
"mcps": [],
// Add Rover as co-author on commits
"attribution": true
}

✅ Commit this file so your team shares the same project configuration

Add Model Context Protocol servers to provide additional context to AI agents. These MCP servers will be automatically installed in each task’s sandboxed environment.

{
"version": "1.2",
"languages": ["typescript"],
"packageManagers": ["npm"],
"taskManagers": [],
"mcps": [
{
"name": "filesystem",
"commandOrUrl": "npx -y @modelcontextprotocol/server-filesystem /path/to/files",
"transport": "stdio"
},
{
"name": "database",
"commandOrUrl": "npx -y @modelcontextprotocol/server-postgres",
"transport": "stdio",
"envs": ["DATABASE_URL"]
}
],
"attribution": true
}

Pass environment variables to containerized AI agents using two methods:

Method 1: Inline environment variables using the envs array:

{
"version": "1.2",
"languages": ["javascript"],
"packageManagers": ["npm"],
"taskManagers": [],
"mcps": [],
"attribution": true,
"envs": [
"NODE_ENV", // Pass through from host
"DEBUG=true", // Set explicit value
"API_KEY" // Pass through from host
]
}

Environment variable formats:

  • "ENV_NAME": Pass the current value from your host machine to the container
  • "ENV_NAME=VALUE": Set a specific value in the container (overrides host value)

Method 2: Load from a dotenv file using the envsFile field:

{
"version": "1.2",
"languages": ["javascript"],
"packageManagers": ["npm"],
"taskManagers": [],
"mcps": [],
"attribution": true,
"envsFile": ".env.rover"
}

Create a .env.rover file in your project root:

Terminal window
NODE_ENV=development
DEBUG=true
API_KEY=your-api-key-here
DATABASE_URL=postgres://localhost:5432/mydb

Security note: Never commit .env files with sensitive credentials. Add them to .gitignore and provide a .env.example file instead.

Combined approach: You can use both envs and envsFile together. Values in envs take precedence:

{
"version": "1.2",
"languages": ["javascript"],
"packageManagers": ["npm"],
"taskManagers": [],
"mcps": [],
"attribution": true,
"envsFile": ".env.rover", // Load from file
"envs": ["DEBUG=false"] // Override specific values
}

Control whether Rover adds itself as co-author on commits:

{
"version": "1.2",
"languages": ["typescript"],
"packageManagers": ["npm"],
"taskManagers": [],
"mcps": [],
"attribution": false
}

When attribution is enabled, commits generated by Rover will include:

Co-Authored-By: Rover <[email protected]>

You have a full reference of all available configuration options in the Project Config reference.

The .rover/settings.json file stores user-specific preferences that should not be shared across your team. This file is automatically added to .gitignore. It defines:

  • aiAgents: List of AI agents installed on your machine
  • defaultAgent: Your preferred AI agent to use by default

These settings are user-specific because different developers may have different AI agents installed and prefer different agents for different tasks.

Here’s a typical user settings file:

{
// Schema version for automatic migration
"version": "1.0",
// AI agents installed on this machine
"aiAgents": ["claude", "gemini"],
// Default agent preference
"defaults": {
"aiAgent": "claude"
}
}

❌ Do not commit this file (automatically added to .gitignore)

Choose your preferred AI agent:

{
"version": "1.0",
"aiAgents": ["claude", "gemini"],
"defaults": {
"aiAgent": "gemini"
}
}

The default agent is used when you create tasks without explicitly specifying an agent. You can always override this choice for specific tasks.

You have a full reference of all available configuration options in the User Config reference.

Both files include a version field for automatic migration.

{
"version": "1.2", // Current project config version
// ... other settings
}

When Rover detects an older schema version, it automatically migrates your configuration to the latest format. This ensures backward compatibility when upgrading Rover.

Rover has very basic telemetry reporting to help us understand how you use the tool. 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 that is recorded by the telemetry is which action was invoked, and very basic metadata like the action source (CLI or VSCode Extension). Telemetry does not record any data from prompts or task titles and descriptions.

There are two ways to completely disable telemetry in Rover. One is in your home directory Rover settings, and the other one is by exporting the ROVER_NO_TELEMETRY environment variable.

Disabling Rover telemetry in your home directory

  1. 1
    Terminal window
    mkdir -p ~/.config/rover
  2. 2
    Terminal window
    touch ~/.config/rover/.no-telemetry

Disabling Rover telemetry with an environment variable

    You can either export a ROVER_NO_TELEMETRY environment variable set to true globally, or you can set it every time you run the Rover CLI.

  1. 1
    Terminal window
    ROVER_NO_TELEMETRY=true rover list