> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration

> How to configure Devin CLI behavior with config files

Devin CLI is configured through JSON files (with comment support) at the user and project level. These config files control the agent's model, permissions, MCP servers, and more.

***

## Config File Locations

<Tabs>
  <Tab title="User config">
    **Path:** `~/.config/devin/config.json`

    Your personal defaults that apply across all projects. This is where you set your preferred model, theme, and global permissions.

    You can also place an `AGENTS.md` file in this directory (`~/.config/devin/AGENTS.md`) to define [global rules](/cli/extensibility/rules#global-rules) that apply to every project.

    <Note>
      On Windows, this path is `%APPDATA%\devin\config.json` (typically `C:\Users\<you>\AppData\Roaming\devin\config.json`).
    </Note>

    ```json theme={null}
    {
      "agent": { "model": "claude-sonnet-4.5" },
      "permissions": {
        "allow": ["Read(**)", "Exec(git)"]
      }
    }
    ```
  </Tab>

  <Tab title="Project config">
    **Path:** `.devin/config.json` (at your project root)

    Shared team configuration committed to version control. Use this for project-specific MCP servers, permission policies, and import settings.

    ```json theme={null}
    {
      "permissions": {
        "allow": ["Exec(npm run)", "Read(src/**)"],
        "deny": ["Exec(sudo)"]
      },
      "mcpServers": {
        "github": {
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-github"]
        }
      }
    }
    ```
  </Tab>

  <Tab title="Local overrides">
    **Path:** `.devin/config.local.json`

    Personal overrides for this project that aren't committed to git (automatically gitignored). Use this for secrets, API keys, and personal preference overrides.

    ```json theme={null}
    {
      "mcpServers": {
        "github": {
          "env": { "GITHUB_TOKEN": "ghp_your_token" }
        }
      }
    }
    ```
  </Tab>
</Tabs>

***

## What You Can Configure

<CardGroup cols={2}>
  <Card title="Model" icon="brain" href="/cli/models">
    Choose which AI model powers the agent — from Claude Opus to GPT 5.2 to Gemini 3.
  </Card>

  <Card title="Permissions" icon="shield" href="/cli/reference/permissions">
    Pre-approve safe actions, block dangerous ones, and control what the agent can do without asking.
  </Card>

  <Card title="MCP Servers" icon="server" href="/cli/extensibility/mcp/configuration">
    Connect external tool servers for GitHub, Linear, databases, and any custom APIs.
  </Card>

  <Card title="External Tool Imports" icon="arrow-right-to-bracket" href="/cli/extensibility/rules">
    Import rules, skills, and configuration from Cursor, Windsurf, and Claude Code.
  </Card>
</CardGroup>

***

## Quick Start

The fastest way to get started is to create a `.devin/config.json` in your project root:

```json theme={null}
{
  "permissions": {
    "allow": [
      "Read(**)",
      "Exec(git)",
      "Exec(npm run)"
    ]
  }
}
```

This pre-approves file reads and common commands so the agent doesn't prompt you for every action.

<Tip>
  You can also configure Devin CLI interactively: when the agent asks for permission, choose to save the decision to your project or user config for next time.
</Tip>

***

## Project vs User Settings

Not all settings are available at every level. Project configs (`.devin/config.json` and `.devin/config.local.json`) support:

* **`permissions`** — allow, deny, and ask rules
* **`mcpServers`** — MCP server definitions
* **`read_config_from`** — import settings from Cursor, Windsurf, and Claude
* **`hooks`** — lifecycle hooks ([see Hooks](/cli/extensibility/hooks/overview))

All other settings — including `agent` (model), `theme_mode`, `unicode_mode`, `show_path`, `sandbox`, and other display/behavior options — are **user-config only** and can only be set in the user config (`~/.config/devin/config.json`; `%APPDATA%\devin\config.json` on Windows).

***

## Configuration Precedence

For settings that support multiple levels, higher-priority sources win:

| Priority    | Source                                                                         | Shared?          |
| ----------- | ------------------------------------------------------------------------------ | ---------------- |
| 1 (highest) | Organization / Team settings                                                   | Yes (enterprise) |
| 2           | Session grants (interactive approvals)                                         | No (in-memory)   |
| 3           | Project local (`.devin/config.local.json`)                                     | No (gitignored)  |
| 4           | Project (`.devin/config.json`)                                                 | Yes (committed)  |
| 5 (lowest)  | User (`~/.config/devin/config.json`; `%APPDATA%\devin\config.json` on Windows) | No (personal)    |

Permissions are merged across levels, while MCP servers are merged by name (higher-priority source wins for same-named servers).

<Note>
  Organization-level (enterprise) settings can **never** be overridden by project or user config. See [Configuration Precedence](/cli/reference/configuration/global-vs-local) for full details on how merging works.
</Note>

***

## Limitations

<Warning>
  Devin CLI does not support `.codeiumignore` files. If you use Codeium's autocomplete and have configured ignore patterns, those patterns will not apply to Devin CLI.
</Warning>

***

## Learn More

<CardGroup cols={2}>
  <Card title="Full Config Reference" icon="file-code" href="/cli/reference/configuration/config-file">
    Complete list of every configuration option and its format.
  </Card>

  <Card title="Configuration Precedence" icon="layer-group" href="/cli/reference/configuration/global-vs-local">
    How global, project, and local settings interact and merge.
  </Card>
</CardGroup>
